diff --git a/actions/apitimelinefavorites.php b/actions/apitimelinefavorites.php index 1027d97d44..f7f900ddfb 100644 --- a/actions/apitimelinefavorites.php +++ b/actions/apitimelinefavorites.php @@ -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); diff --git a/actions/apitimelinefriends.php b/actions/apitimelinefriends.php index 4e3827baea..0af04fe4fb 100644 --- a/actions/apitimelinefriends.php +++ b/actions/apitimelinefriends.php @@ -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); diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php index af414c6804..45962fa76f 100644 --- a/actions/apitimelinegroup.php +++ b/actions/apitimelinegroup.php @@ -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); diff --git a/actions/apitimelinehome.php b/actions/apitimelinehome.php index 828eae6cf6..ae41680702 100644 --- a/actions/apitimelinehome.php +++ b/actions/apitimelinehome.php @@ -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); diff --git a/actions/apitimelinementions.php b/actions/apitimelinementions.php index 9dc2162cc4..d2e31d0bdd 100644 --- a/actions/apitimelinementions.php +++ b/actions/apitimelinementions.php @@ -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); diff --git a/actions/apitimelinepublic.php b/actions/apitimelinepublic.php index 3f4a46c0fa..c1fa72a3ee 100644 --- a/actions/apitimelinepublic.php +++ b/actions/apitimelinepublic.php @@ -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()) { diff --git a/actions/apitimelineretweetsofme.php b/actions/apitimelineretweetsofme.php index e4b09e9bda..26706a75e7 100644 --- a/actions/apitimelineretweetsofme.php +++ b/actions/apitimelineretweetsofme.php @@ -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: diff --git a/actions/apitimelinetag.php b/actions/apitimelinetag.php index 1427d23b6a..5b6ded4c04 100644 --- a/actions/apitimelinetag.php +++ b/actions/apitimelinetag.php @@ -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); diff --git a/actions/apitimelineuser.php b/actions/apitimelineuser.php index 830b16941d..d20bb0d202 100644 --- a/actions/apitimelineuser.php +++ b/actions/apitimelineuser.php @@ -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); diff --git a/actions/editapplication.php b/actions/editapplication.php index ca5dba1e49..64cf0a5745 100644 --- a/actions/editapplication.php +++ b/actions/editapplication.php @@ -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; diff --git a/actions/groupmembers.php b/actions/groupmembers.php index 0f47c268dd..f16e972a41 100644 --- a/actions/groupmembers.php +++ b/actions/groupmembers.php @@ -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, diff --git a/actions/makeadmin.php b/actions/makeadmin.php index 9ad7d6e7c8..f19348648d 100644 --- a/actions/makeadmin.php +++ b/actions/makeadmin.php @@ -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; } diff --git a/actions/newapplication.php b/actions/newapplication.php index c0c5207979..0f819b3499 100644 --- a/actions/newapplication.php +++ b/actions/newapplication.php @@ -290,7 +290,7 @@ class NewApplicationAction extends OwnerDesignAction function nameExists($name) { $app = Oauth_application::staticGet('name', $name); - return ($app !== false); + return !empty($app); } } diff --git a/actions/showgroup.php b/actions/showgroup.php index 8042a49513..eb12389029 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -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, diff --git a/actions/showstream.php b/actions/showstream.php index 07cc68b765..f9407e35a1 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -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)), diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index ab65c30ce2..dfd06b57e5 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -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); } diff --git a/classes/Nonce.php b/classes/Nonce.php index 486a65a3c7..2f8ab00b5d 100644 --- a/classes/Nonce.php +++ b/classes/Nonce.php @@ -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'); + } + } diff --git a/classes/Notice.php b/classes/Notice.php index f9f3863579..73b22d58a0 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -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)) { diff --git a/classes/Profile.php b/classes/Profile.php index 1076fb2cb3..ab05bb8546 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -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 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 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'); + } + } diff --git a/classes/User_group.php b/classes/User_group.php index c86eadf8fa..379e6b7219 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -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 diff --git a/classes/statusnet.links.ini b/classes/statusnet.links.ini index 7f233e6760..b9dd5af0c9 100644 --- a/classes/statusnet.links.ini +++ b/classes/statusnet.links.ini @@ -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 diff --git a/js/util.js b/js/util.js index c6a9682de2..639049668c 100644 --- a/js/util.js +++ b/js/util.js @@ -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(''); - 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('') + .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; }); }, diff --git a/lib/api.php b/lib/api.php index 7d94eaee4e..7a99f48e80 100644 --- a/lib/api.php +++ b/lib/api.php @@ -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; + } + } diff --git a/lib/atom10entry.php b/lib/atom10entry.php new file mode 100644 index 0000000000..5710c80fc5 --- /dev/null +++ b/lib/atom10entry.php @@ -0,0 +1,106 @@ +. + * + * @category Feed + * @package StatusNet + * @author Zach Copley + * @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 + * @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(); + } + +} \ No newline at end of file diff --git a/lib/atom10feed.php b/lib/atom10feed.php new file mode 100644 index 0000000000..806a9684b7 --- /dev/null +++ b/lib/atom10feed.php @@ -0,0 +1,293 @@ +. + * + * @category Feed + * @package StatusNet + * @author Zach Copley + * @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 + * @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); + } + +} diff --git a/lib/atomnoticefeed.php b/lib/atomnoticefeed.php new file mode 100644 index 0000000000..34ed44b2ed --- /dev/null +++ b/lib/atomnoticefeed.php @@ -0,0 +1,103 @@ +. + * + * @category Feed + * @package StatusNet + * @author Zach Copley + * @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 + * @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()); + } + +} diff --git a/lib/cache.php b/lib/cache.php index 635c96ad4c..df6fc36493 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -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 diff --git a/lib/default.php b/lib/default.php index 16d1330f06..cc6863488f 100644 --- a/lib/default.php +++ b/lib/default.php @@ -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 ), diff --git a/lib/error.php b/lib/error.php index 87a4d913b4..a6a29119f7 100644 --- a/lib/error.php +++ b/lib/error.php @@ -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(); diff --git a/lib/httpclient.php b/lib/httpclient.php index 3f82620761..4c3af8d7dd 100644 --- a/lib/httpclient.php +++ b/lib/httpclient.php @@ -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); } } diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php index 1f7c3d0926..485096ac42 100644 --- a/lib/mysqlschema.php +++ b/lib/mysqlschema.php @@ -213,6 +213,7 @@ class MysqlSchema extends Schema $sql .= "); "; + common_log(LOG_INFO, $sql); $res = $this->conn->query($sql); if (PEAR::isError($res)) { diff --git a/lib/queuemanager.php b/lib/queuemanager.php index 274e1c2f69..64bb52e106 100644 --- a/lib/queuemanager.php +++ b/lib/queuemanager.php @@ -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; } } diff --git a/lib/right.php b/lib/right.php index 5e66eae0ed..4e9c5a918d 100644 --- a/lib/right.php +++ b/lib/right.php @@ -57,5 +57,6 @@ class Right const EMAILONREPLY = 'emailonreply'; const EMAILONSUBSCRIBE = 'emailonsubscribe'; const EMAILONFAVE = 'emailonfave'; + const MAKEGROUPADMIN = 'makegroupadmin'; } diff --git a/lib/spawningdaemon.php b/lib/spawningdaemon.php index b1961d6880..862cbb4fa3 100644 --- a/lib/spawningdaemon.php +++ b/lib/spawningdaemon.php @@ -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."); } diff --git a/lib/statusnet.php b/lib/statusnet.php index beeb26cccd..4f82fdaa6c 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -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 diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php index 6730cd213d..cd62c25bd8 100644 --- a/lib/stompqueuemanager.php +++ b/lib/stompqueuemanager.php @@ -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) { diff --git a/lib/util.php b/lib/util.php index 9e8ac26add..8c46f5e355 100644 --- a/lib/util.php +++ b/lib/util.php @@ -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)) { diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index 00eac9b283..c7276b56f7 100644 --- a/locale/ar/LC_MESSAGES/statusnet.po +++ b/locale/ar/LC_MESSAGES/statusnet.po @@ -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 "قبل سنة تقريبًا" diff --git a/locale/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po index e1c638a6c2..2940486d81 100644 --- a/locale/arz/LC_MESSAGES/statusnet.po +++ b/locale/arz/LC_MESSAGES/statusnet.po @@ -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 "قبل سنه تقريبًا" diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index 3b60491cac..efe49b56ab 100644 --- a/locale/bg/LC_MESSAGES/statusnet.po +++ b/locale/bg/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 "преди около година" diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index bc6154421b..d0b228c08c 100644 --- a/locale/ca/LC_MESSAGES/statusnet.po +++ b/locale/ca/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index 81ba42d407..a5d6db6003 100644 --- a/locale/cs/LC_MESSAGES/statusnet.po +++ b/locale/cs/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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" diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po index 9827cb8bd4..b9e53e2544 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -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 "Couldn’t 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" diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 4bc58dd6c1..20365e04ad 100644 --- a/locale/el/LC_MESSAGES/statusnet.po +++ b/locale/el/LC_MESSAGES/statusnet.po @@ -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 "" diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index f896d4e292..0e7acedc07 100644 --- a/locale/en_GB/LC_MESSAGES/statusnet.po +++ b/locale/en_GB/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index f49587641f..0d7c9384a1 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -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:53:59+0000\n" +"POT-Creation-Date: 2010-02-14 20:05+0000\n" +"PO-Revision-Date: 2010-02-14 20:06:23+0000\n" "Language-Team: Spanish\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: es\n" "X-Message-Group: out-statusnet\n" @@ -41,7 +41,7 @@ msgstr "Privado" #: actions/accessadminpanel.php:163 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "¿Prohibir a los usuarios anónimos (no conectados) ver el sitio ?" +msgstr "¿Prohibir a los usuarios anónimos (no conectados) ver el sitio?" #: actions/accessadminpanel.php:167 msgid "Invite only" @@ -138,6 +138,8 @@ msgstr "Feed de los amigos de %s (Atom)" msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" +"Esta es la línea temporal de %s y amistades, pero nadie ha publicado nada " +"todavía." #: actions/all.php:132 #, php-format @@ -145,6 +147,8 @@ msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " "something yourself." msgstr "" +"Esta es la línea temporal de %s y amistades, pero nadie ha publicado nada " +"todavía." #: actions/all.php:134 #, php-format @@ -152,6 +156,8 @@ msgid "" "You can try to [nudge %1$s](../%2$s) from his profile or [post something to " "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" +"Trata de suscribirte a más personas, [unirte a un grupo] (%%action.groups%%) " +"o publicar algo." #: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211 #, php-format @@ -159,13 +165,15 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " "post a notice to his or her attention." msgstr "" +"Puede intentar [guiñar a %1$s](../%2$s) desde su perfil o [publicar algo a " +"su atención ](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:165 msgid "You and friends" msgstr "Tú y 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 "¡Actualizaciones de %1$s y amigos en %2$s!" @@ -186,15 +194,14 @@ msgstr "¡Actualizaciones de %1$s y amigos en %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 -#, fuzzy +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166 +#: actions/apitimelineuser.php:194 actions/apiusershow.php:101 msgid "API method not found." -msgstr "¡No se encontró el método de la API!" +msgstr "Método de API no encontrado." #: actions/apiaccountupdatedeliverydevice.php:85 #: actions/apiaccountupdateprofile.php:89 @@ -215,9 +222,10 @@ msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none" msgstr "" +"Tienes que especificar un parámetro llamdao 'dispositivo' con un valor a " +"elegir entre: sms, im, ninguno" #: actions/apiaccountupdatedeliverydevice.php:132 -#, fuzzy msgid "Could not update user." msgstr "No se pudo actualizar el usuario." @@ -231,7 +239,6 @@ msgid "User has no profile." msgstr "El usuario no tiene un perfil." #: actions/apiaccountupdateprofile.php:147 -#, fuzzy msgid "Could not save profile." msgstr "No se pudo guardar el perfil." @@ -256,15 +263,13 @@ msgstr "" #: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 -#, fuzzy msgid "Unable to save your design settings." -msgstr "¡No se pudo guardar tu configuración de Twitter!" +msgstr "No se pudo grabar tu configuración de diseño." #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy msgid "Could not update your design." -msgstr "No se pudo actualizar el usuario." +msgstr "No se pudo actualizar tu diseño." #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" @@ -370,20 +375,20 @@ msgstr "No se pudo encontrar ningún usuario de destino." #: actions/register.php:205 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" -"El apodo debe tener solamente letras minúsculas y números y no puede tener " +"El usuario debe tener solamente letras minúsculas y números y no puede tener " "espacios." #: actions/apigroupcreate.php:173 actions/editgroup.php:186 #: actions/newgroup.php:130 actions/profilesettings.php:238 #: actions/register.php:208 msgid "Nickname already in use. Try another one." -msgstr "El apodo ya existe. Prueba otro." +msgstr "El usuario ya existe. Prueba con otro." #: actions/apigroupcreate.php:180 actions/editgroup.php:189 #: actions/newgroup.php:133 actions/profilesettings.php:218 #: actions/register.php:210 msgid "Not a valid nickname." -msgstr "Apodo no válido" +msgstr "Usuario inválido" #: actions/apigroupcreate.php:196 actions/editapplication.php:215 #: actions/editgroup.php:195 actions/newapplication.php:203 @@ -418,20 +423,20 @@ msgstr "¡Muchos seudónimos! El máximo es %d." #: actions/apigroupcreate.php:264 actions/editgroup.php:224 #: actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "Tag no válido: '%s' " +msgstr "Alias inválido: \"%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 "El apodo ya existe. Prueba otro." +msgstr "El alias \"%s\" ya está en uso. Intenta usar otro." #: actions/apigroupcreate.php:286 actions/editgroup.php:234 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." -msgstr "" +msgstr "El alias no puede ser el mismo que el usuario." #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 @@ -448,18 +453,18 @@ msgid "You have been blocked from that group by the admin." msgstr "Has sido bloqueado de ese grupo por el administrador." #: actions/apigroupjoin.php:138 actions/joingroup.php:124 -#, fuzzy, php-format +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "No se puede unir usuario %s a grupo %s" +msgstr "No se pudo unir el usuario %s al grupo %s" #: actions/apigroupleave.php:114 msgid "You are not a member of this group." msgstr "No eres miembro de este grupo." #: actions/apigroupleave.php:124 actions/leavegroup.php:119 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "No se pudo eliminar a usuario %s de grupo %s" +msgstr "No se pudo eliminar al usuario %1$s del grupo %2$s." #: actions/apigrouplist.php:95 #, php-format @@ -478,12 +483,11 @@ msgstr "Grupos en %s" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." -msgstr "" +msgstr "No se ha provisto de un parámetro oauth_token." #: actions/apioauthauthorize.php:106 -#, fuzzy msgid "Invalid token." -msgstr "Tamaño inválido." +msgstr "Token inválido." #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php:157 actions/disfavor.php:74 @@ -505,19 +509,18 @@ msgstr "" "Hubo un problema con tu clave de sesión. Por favor, intenta nuevamente." #: actions/apioauthauthorize.php:135 -#, fuzzy msgid "Invalid nickname / password!" -msgstr "Usuario o contraseña inválidos." +msgstr "¡Apodo o contraseña inválidos!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "Error al configurar el usuario." +msgstr "" +"Error de la base de datos durante la eliminación del usuario de la " +"aplicación OAuth." #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "Error de la BD al insertar la etiqueta clave: %s" +msgstr "Error de base de datos al insertar usuario de la aplicación OAuth." #: actions/apioauthauthorize.php:214 #, php-format @@ -525,11 +528,13 @@ msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." msgstr "" +"El token de solicitud %s ha sido autorizado. Por favor, cámbialo por un " +"token de acceso." #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "El token de solicitud %2 ha sido denegado y revocado." #: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281 #: actions/designadminpanel.php:103 actions/editapplication.php:139 @@ -542,7 +547,7 @@ msgstr "Envío de formulario inesperado." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "Una aplicación quisiera conectarse a tu cuenta" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" @@ -555,6 +560,9 @@ msgid "" "the ability to %3$s your %4$s account data. You should only " "give access to your %4$s account to third parties you trust." msgstr "" +"La aplicación %1$s por %2$s solicita " +"permiso para %3$s la información de tu cuenta %4$s. Sólo " +"debes dar acceso a tu cuenta %4$s a terceras partes en las que confíes." #: actions/apioauthauthorize.php:310 lib/action.php:441 msgid "Account" @@ -616,9 +624,9 @@ msgstr "No hay estado para ese ID" #: actions/apistatusesupdate.php:161 actions/newnotice.php:155 #: lib/mailhandler.php:60 -#, fuzzy, php-format +#, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "Demasiado largo. La longitud máxima es de 140 caracteres. " +msgstr "La entrada es muy larga. El tamaño máximo es de %d caracteres." #: actions/apistatusesupdate.php:202 msgid "Not found" @@ -628,20 +636,22 @@ msgstr "No encontrado" #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" +"El tamaño máximo de la notificación es %d caracteres, incluyendo el URL " +"adjunto." #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 msgid "Unsupported format." msgstr "Formato no soportado." #: actions/apitimelinefavorites.php:108 -#, fuzzy, php-format +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / Favoritos desde %s" +msgstr "%1$s / Favoritos de %2$s" -#: actions/apitimelinefavorites.php:120 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:117 +#, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "%s actualizaciones favoritas por %s / %s." +msgstr "%1$s actualizaciones favoritas de %2$s / %2$s." #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118 #: actions/grouprss.php:131 actions/userrss.php:90 @@ -649,61 +659,59 @@ msgstr "%s actualizaciones favoritas por %s / %s." msgid "%s timeline" msgstr "línea temporal 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!" msgstr "¡Actualizaciones de %1$s en %2$s!" #: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Actualizaciones en respuesta a %2$s" +msgstr "%1$s / Actualizaciones que mencionan %2$s" #: actions/apitimelinementions.php:127 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "actualizaciones de %1$s en respuesta a las 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 "línea temporal pública 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 "¡Actualizaciones de todos en %s!" #: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format +#, php-format msgid "Repeated to %s" -msgstr "Respuestas a %s" +msgstr "Repetido a %s" -#: actions/apitimelineretweetsofme.php:112 -#, fuzzy, php-format +#: actions/apitimelineretweetsofme.php:114 +#, php-format msgid "Repeats of %s" -msgstr "Respuestas a %s" +msgstr "Repeticiones de %s" #: actions/apitimelinetag.php:102 actions/tag.php:66 #, php-format msgid "Notices tagged with %s" msgstr "Avisos marcados con %s" -#: actions/apitimelinetag.php:108 actions/tagrss.php:64 -#, fuzzy, php-format +#: actions/apitimelinetag.php:104 actions/tagrss.php:64 +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "¡Actualizaciones de %1$s en %2$s!" +msgstr "Actualizaciones etiquetadas con %1$s en %2$s!" #: actions/apiusershow.php:96 -#, fuzzy msgid "Not found." -msgstr "No se encontró." +msgstr "No encontrado." #: actions/attachment.php:73 -#, fuzzy msgid "No such attachment." -msgstr "No existe ese documento." +msgstr "No existe tal archivo adjunto." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -727,9 +735,9 @@ msgid "Avatar" msgstr "Avatar" #: actions/avatarsettings.php:78 -#, fuzzy, php-format +#, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "Puedes cargar tu avatar personal." +msgstr "Puedes subir tu imagen personal. El tamaño máximo de archivo es %s." #: actions/avatarsettings.php:106 actions/avatarsettings.php:185 #: actions/remotesubscribe.php:191 actions/userauthorization.php:72 @@ -782,14 +790,12 @@ msgid "Failed updating avatar." msgstr "Error al actualizar avatar." #: actions/avatarsettings.php:393 -#, fuzzy msgid "Avatar deleted." -msgstr "Avatar actualizado" +msgstr "Avatar borrado." #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Ya has bloqueado este usuario." +msgstr "Ya has bloqueado a este usuario." #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160 msgid "Block user" @@ -801,6 +807,9 @@ msgid "" "unsubscribed from you, unable to subscribe to you in the future, and you " "will not be notified of any @-replies from them." msgstr "" +"¿Realmente deseas bloquear a este usuario? Una vez que lo hagas, se " +"desuscribirá de tu cuenta, no podrá suscribirse a ella en el futuro y no se " +"te notificará de ninguna de sus respuestas @." #: actions/block.php:143 actions/deleteapplication.php:153 #: actions/deletenotice.php:145 actions/deleteuser.php:147 @@ -809,9 +818,8 @@ msgid "No" msgstr "No" #: actions/block.php:143 actions/deleteuser.php:147 -#, fuzzy msgid "Do not block this user" -msgstr "Desbloquear este usuario" +msgstr "No bloquear a este usuario" #: actions/block.php:144 actions/deleteapplication.php:158 #: actions/deletenotice.php:146 actions/deleteuser.php:148 @@ -819,7 +827,7 @@ msgstr "Desbloquear este usuario" 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 "Bloquear este usuario." @@ -838,19 +846,19 @@ msgid "No such group." msgstr "No existe ese grupo." #: actions/blockedfromgroup.php:90 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "Perfil de usuario" +msgstr "%s perfiles bloqueados" #: actions/blockedfromgroup.php:93 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s y amigos, página %d" +msgstr "%1$s perfiles bloqueados, página %2$d" #: actions/blockedfromgroup.php:108 -#, fuzzy msgid "A list of the users blocked from joining this group." -msgstr "Lista de los usuarios en este grupo." +msgstr "" +"Una lista de los usuarios que han sido bloqueados para unirse a este grupo." #: actions/blockedfromgroup.php:281 msgid "Unblock user from group" @@ -903,7 +911,6 @@ msgid "Couldn't delete email confirmation." msgstr "No se pudo eliminar la confirmación de correo electrónico." #: actions/confirmaddress.php:144 -#, fuzzy msgid "Confirm address" msgstr "Confirmar la dirección" @@ -922,20 +929,17 @@ msgid "Notices" msgstr "Avisos" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Debes estar conectado para editar un grupo." +msgstr "Debes estar registrado para borrar una aplicación." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Aviso sin perfil" +msgstr "Aplicación no encontrada." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 -#, fuzzy msgid "You are not the owner of this application." -msgstr "No eres miembro de este grupo." +msgstr "No eres el propietario de esta aplicación." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 @@ -944,9 +948,8 @@ msgid "There was a problem with your session token." msgstr "Hubo problemas con tu clave de sesión." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "No existe ese aviso." +msgstr "Eliminar la aplicación" #: actions/deleteapplication.php:149 msgid "" @@ -954,16 +957,17 @@ msgid "" "about the application from the database, including all existing user " "connections." msgstr "" +"¿Estás seguro de que quieres eliminar esta aplicación? Esto borrará todos " +"los datos acerca de la aplicación de la base de datos, incluyendo todas las " +"conexiones de usuario existente." #: actions/deleteapplication.php:156 -#, fuzzy msgid "Do not delete this application" -msgstr "No se puede eliminar este aviso." +msgstr "No eliminar esta aplicación" #: actions/deleteapplication.php:160 -#, fuzzy msgid "Delete this application" -msgstr "Borrar este aviso" +msgstr "Borrar esta aplicación" #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69 @@ -980,13 +984,12 @@ msgid "Can't delete this notice." msgstr "No se puede eliminar este aviso." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"Estás a punto de eliminar permanentemente un aviso. Si lo hace, no se podrá " -"deshacer" +"Estás a punto de eliminar un mensaje permanentemente. Una vez hecho esto, no " +"lo puedes deshacer." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -997,9 +1000,8 @@ msgid "Are you sure you want to delete this notice?" msgstr "¿Estás seguro de que quieres eliminar este aviso?" #: actions/deletenotice.php:145 -#, fuzzy msgid "Do not delete this notice" -msgstr "No se puede eliminar este aviso." +msgstr "No eliminar este mensaje" #: actions/deletenotice.php:146 lib/noticelist.php:624 msgid "Delete this notice" @@ -1010,9 +1012,8 @@ msgid "You cannot delete users." msgstr "No puedes borrar usuarios." #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "No puedes borrar el estado de otro usuario." +msgstr "Sólo puedes eliminar usuarios locales." #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" @@ -1023,6 +1024,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 "" +"¿Realmente deseas eliminar este usuario? Esto borrará de la base de datos " +"todos los datos sobre el usuario, sin dejar una copia de seguridad." #: actions/deleteuser.php:148 lib/deleteuserform.php:77 msgid "Delete this user" @@ -1031,16 +1034,15 @@ msgstr "Borrar este usuario" #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124 #: lib/adminpanelaction.php:316 lib/groupnav.php:119 msgid "Design" -msgstr "" +msgstr "Diseño" #: actions/designadminpanel.php:73 msgid "Design settings for this StatusNet site." -msgstr "" +msgstr "Configuración de diseño de este sitio StatusNet." #: actions/designadminpanel.php:275 -#, fuzzy msgid "Invalid logo URL." -msgstr "Tamaño inválido." +msgstr "URL de logotipo inválido." #: actions/designadminpanel.php:279 #, php-format @@ -1052,56 +1054,54 @@ msgid "Change logo" msgstr "Cambiar logo" #: actions/designadminpanel.php:380 -#, fuzzy msgid "Site logo" -msgstr "Invitar" +msgstr "Logo del sitio" #: actions/designadminpanel.php:387 -#, fuzzy msgid "Change theme" -msgstr "Cambiar" +msgstr "Cambiar el tema" #: actions/designadminpanel.php:404 -#, fuzzy msgid "Site theme" -msgstr "Aviso de sitio" +msgstr "Tema del sitio" #: actions/designadminpanel.php:405 -#, fuzzy msgid "Theme for the site." -msgstr "Salir de sitio" +msgstr "Tema para el sitio." #: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" -msgstr "" +msgstr "Cambiar la imagen de fondo" #: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" -msgstr "" +msgstr "Fondo" #: actions/designadminpanel.php:427 -#, fuzzy, php-format +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "Puedes cargar una imagen de logo para tu grupo." +msgstr "" +"Puedes subir una imagen de fondo para el sitio. El tamaño máximo de archivo " +"es %1$s." #: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" -msgstr "" +msgstr "Activado" #: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" -msgstr "" +msgstr "Desactivado" #: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "Activar o desactivar la imagen de fondo." #: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" -msgstr "" +msgstr "Imagen de fondo en mosaico" #: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" @@ -1112,9 +1112,8 @@ msgid "Content" msgstr "Contenido" #: actions/designadminpanel.php:523 lib/designsettings.php:204 -#, fuzzy msgid "Sidebar" -msgstr "Buscar" +msgstr "Barra lateral" #: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" @@ -1126,19 +1125,19 @@ msgstr "Vínculos" #: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" -msgstr "" +msgstr "Utilizar los valores predeterminados" #: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" -msgstr "" +msgstr "Restaurar los diseños predeterminados" #: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" -msgstr "" +msgstr "Volver a los valores predeterminados" #: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" -msgstr "" +msgstr "Guardar el diseño" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" @@ -1149,85 +1148,74 @@ msgid "Add to favorites" msgstr "Agregar a favoritos" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "No existe ese documento." +msgstr "No existe tal documento \"%s\"" #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "Otras opciones" +msgstr "Editar aplicación" #: actions/editapplication.php:66 -#, fuzzy msgid "You must be logged in to edit an application." -msgstr "Debes estar conectado para editar un grupo." +msgstr "Debes haber iniciado sesión para editar una aplicación." #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "No existe ese aviso." +msgstr "No existe tal aplicación." #: actions/editapplication.php:161 -#, fuzzy msgid "Use this form to edit your application." -msgstr "Usa este formulario para editar el grupo." +msgstr "Utiliza este formulario para editar tu aplicación." #: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy msgid "Name is required." -msgstr "Igual a la contraseña de arriba. Requerida" +msgstr "Se requiere un nombre" #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "Tu nombre es demasiado largo (max. 255 carac.)" +msgstr "El nombre es muy largo (máx. 255 carac.)" #: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy msgid "Name already in use. Try another one." -msgstr "El apodo ya existe. Prueba otro." +msgstr "Ese nombre ya está en uso. Prueba con otro." #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "Descripción" +msgstr "Se requiere una descripción" #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "El URL fuente es muy largo." #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "La página de inicio no es un URL válido." +msgstr "La URL fuente es inválida." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "Se requiere una organización." #: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy msgid "Organization is too long (max 255 chars)." -msgstr "La ubicación es demasiado larga (máx. 255 caracteres)." +msgstr "El texto de organización es muy largo (máx. 255 caracteres)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "Se requiere una página principal de organización" #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." -msgstr "" +msgstr "La devolución de llamada es muy larga." #: actions/editapplication.php:225 actions/newapplication.php:215 msgid "Callback URL is not valid." -msgstr "" +msgstr "El URL de devolución de llamada es inválido." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "No se pudo actualizar el grupo." +msgstr "No fue posible actualizar la aplicación." #: actions/editgroup.php:56 #, php-format @@ -1240,36 +1228,33 @@ msgstr "Debes estar conectado para crear un grupo" #: actions/editgroup.php:103 actions/editgroup.php:168 #: actions/groupdesignsettings.php:104 actions/grouplogo.php:106 -#, fuzzy msgid "You must be an admin to edit the group." -msgstr "Debes ser un admin para editar el grupo" +msgstr "Para editar el grupo debes ser administrador." #: actions/editgroup.php:154 msgid "Use this form to edit the group." msgstr "Usa este formulario para editar el grupo." #: actions/editgroup.php:201 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Descripción es demasiado larga (máx. 140 caracteres)." +msgstr "La descripción es muy larga (máx. %d caracteres)." #: actions/editgroup.php:253 msgid "Could not update group." msgstr "No se pudo actualizar el grupo." -#: actions/editgroup.php:259 classes/User_group.php:390 -#, fuzzy +#: actions/editgroup.php:259 classes/User_group.php:423 msgid "Could not create aliases." -msgstr "No se pudo crear favorito." +msgstr "No fue posible crear alias." #: actions/editgroup.php:269 msgid "Options saved." msgstr "Se guardó Opciones." #: actions/emailsettings.php:60 -#, fuzzy msgid "Email settings" -msgstr "Opciones de Email" +msgstr "Configuración del correo electrónico" #: actions/emailsettings.php:71 #, php-format @@ -1306,9 +1291,8 @@ msgid "Cancel" msgstr "Cancelar" #: actions/emailsettings.php:121 -#, fuzzy msgid "Email address" -msgstr "Direcciones de correo electrónico" +msgstr "Dirección de correo electrónico" #: actions/emailsettings.php:123 msgid "Email address, like \"UserName@example.org\"" @@ -1355,10 +1339,9 @@ msgstr "" "Enviarme un correo electrónico cuando alguien me envía un mensaje privado." #: actions/emailsettings.php:174 -#, fuzzy msgid "Send me email when someone sends me an \"@-reply\"." msgstr "" -"Enviarme un correo electrónico cuando alguien me envía un mensaje privado." +"Enviarme un correo electrónico cuando alguien me envíe una \"@-respuesta\"." #: actions/emailsettings.php:179 msgid "Allow friends to nudge me and send me an email." @@ -1462,29 +1445,31 @@ msgstr "Sacar favorito" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 -#, fuzzy msgid "Popular notices" -msgstr "Avisos populares" +msgstr "Mensajes populares" #: actions/favorited.php:67 -#, fuzzy, php-format +#, php-format msgid "Popular notices, page %d" -msgstr "Avisos populares, página %d" +msgstr "Mensajes populares, página %d" #: actions/favorited.php:79 -#, fuzzy msgid "The most popular notices on the site right now." -msgstr "Ahora se muestran los avisos más populares en el sitio." +msgstr "Los mensajes más populares del sitio en este momento." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" +"Los mensajes favoritos aparecen en esta página, pero todavía nadie ha " +"marcado algún mensaje como favorito." #: actions/favorited.php:153 msgid "" "Be the first to add a notice to your favorites by clicking the fave button " "next to any notice you like." msgstr "" +"Se la primera persona en añadir un mensaje a tus favoritos con el botón de " +"favoritos que se encuentra al lado de cualquier mensaje que te guste." #: actions/favorited.php:156 #, php-format @@ -1492,6 +1477,8 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" +"¿Por qué no [registrar una cuenta](%%action.register%%) y ser la primera " +"persona en añadir un mensaje a tus favoritos?" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 @@ -1500,9 +1487,9 @@ msgid "%s's favorite notices" msgstr "Avisos favoritos de %s" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "¡Actualizaciones de %1$s en %2$s!" +msgstr "¡Actualizaciones favorecidas por %1$ s en %2$s!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1515,14 +1502,13 @@ msgid "Featured users, page %d" msgstr "Usuarios que figuran, página %d" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "Una selección de algunos de los grandes usuarios en %s" +msgstr "Una selección de fantásticos usuarios en %s" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Nuevo aviso" +msgstr "No hay ID de mensaje." #: actions/file.php:38 msgid "No notice." @@ -1557,14 +1543,12 @@ msgid "You are not authorized." msgstr "No estás autorizado." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "No se pudieron convertir las clavesde petición a claves de acceso." +msgstr "No se pudo convertir el token de solicitud en token de acceso." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Versión desconocida del protocolo OMB." +msgstr "El servicio remoto utiliza una versión desconocida del protocolo OMB." #: actions/finishremotesubscribe.php:138 lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -1597,7 +1581,7 @@ msgstr "Grupo no especificado." #: actions/groupblock.php:91 msgid "Only an admin can block group members." -msgstr "" +msgstr "Sólo un administrador puede bloquear miembros de un grupo." #: actions/groupblock.php:95 msgid "User is already blocked from group." @@ -1607,7 +1591,7 @@ msgstr "Usuario ya está bloqueado del grupo." msgid "User is not a member of group." msgstr "Usuario no es miembro del grupo" -#: actions/groupblock.php:136 actions/groupmembers.php:314 +#: actions/groupblock.php:136 actions/groupmembers.php:316 msgid "Block user from group" msgstr "Bloquear usuario de grupo" @@ -1618,6 +1602,9 @@ msgid "" "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." msgstr "" +"¿Realmente deseas bloquear al usuario \"%1$s\" del grupo \"%2$s\"? Se " +"eliminará del grupo y no podrá publicar ni suscribirse al grupo en lo " +"sucesivo." #: actions/groupblock.php:178 msgid "Do not block this user from this group" @@ -1630,6 +1617,8 @@ msgstr "Bloquear este usuario de este grupo" #: actions/groupblock.php:196 msgid "Database error blocking user from group." msgstr "" +"Se ha producido un error en la base de datos al bloquear el usuario del " +"grupo." #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." @@ -1640,56 +1629,53 @@ msgid "You must be logged in to edit a group." msgstr "Debes estar conectado para editar un grupo." #: actions/groupdesignsettings.php:141 -#, fuzzy msgid "Group design" -msgstr "Grupos" +msgstr "Diseño de grupo" #: actions/groupdesignsettings.php:152 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" +"Personaliza el aspecto de tu grupo con una imagen de fondo y la paleta de " +"colores que prefieras." #: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 -#, fuzzy msgid "Couldn't update your design." -msgstr "No se pudo actualizar el usuario." +msgstr "No fue posible actualizar tu diseño." #: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 -#, fuzzy msgid "Design preferences saved." -msgstr "Preferencias de sincronización guardadas." +msgstr "Preferencias de diseño guardadas." #: actions/grouplogo.php:139 actions/grouplogo.php:192 msgid "Group logo" msgstr "Logo de grupo" #: actions/grouplogo.php:150 -#, fuzzy, php-format +#, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." -msgstr "Puedes cargar una imagen de logo para tu grupo." +msgstr "" +"Puedes subir una imagen de logo para tu grupo. El tamaño máximo del archivo " +"debe ser %s." #: actions/grouplogo.php:178 -#, fuzzy msgid "User without matching profile." -msgstr "Usuario sin perfil equivalente" +msgstr "Usuario sin perfil coincidente." #: actions/grouplogo.php:362 -#, fuzzy msgid "Pick a square area of the image to be the logo." -msgstr "Elige un área cuadrada de la imagen para que sea tu avatar" +msgstr "Elige un área cuadrada de la imagen para que sea tu logo." #: actions/grouplogo.php:396 -#, fuzzy msgid "Logo updated." -msgstr "SE actualizó logo." +msgstr "Logo actualizado." #: actions/grouplogo.php:398 -#, fuzzy msgid "Failed updating logo." -msgstr "Error al actualizar logo." +msgstr "Error al actualizar el logo." #: actions/groupmembers.php:93 lib/groupnav.php:92 #, php-format @@ -1697,9 +1683,9 @@ msgid "%s group members" msgstr "Miembros del grupo %s" #: actions/groupmembers.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "Miembros del grupo %s, página %d" +msgstr "%1$s miembros de grupo, página %2$d" #: actions/groupmembers.php:111 msgid "A list of the users in this group." @@ -1709,28 +1695,26 @@ msgstr "Lista de los usuarios en este 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 -#, fuzzy +#: actions/groupmembers.php:443 msgid "Make user an admin of the group" -msgstr "Debes ser un admin para editar el grupo" +msgstr "Convertir al usuario en administrador del grupo" -#: actions/groupmembers.php:473 -#, fuzzy +#: actions/groupmembers.php:475 msgid "Make Admin" -msgstr "Admin" +msgstr "Convertir en administrador" -#: actions/groupmembers.php:473 +#: actions/groupmembers.php:475 msgid "Make this user an admin" -msgstr "" +msgstr "Convertir a este usuario en administrador" #: actions/grouprss.php:133 -#, fuzzy, php-format +#, php-format msgid "Updates from members of %1$s on %2$s!" -msgstr "¡Actualizaciones de %1$s en %2$s!" +msgstr "¡Actualizaciones de miembros de %1$s en %2$s!" #: actions/groups.php:62 lib/profileaction.php:210 lib/profileaction.php:230 #: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 @@ -1751,30 +1735,33 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" +"Grupos %%%%site.name%%%% te permiten encontrar gente de intereses afines a " +"los tuyo y hablar con ellos. Después de unirte al grupo, podrás enviarle " +"mensajes a todos sus miembros mediante la sintaxis \"!groupname\". ¿No " +"encuentras un grupo que te guste? ¡Intenta [buscar otro](%%%%action." +"groupsearch%%%%) o [crea tú uno!](%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122 msgid "Create a new group" msgstr "Crear un nuevo grupo" #: actions/groupsearch.php:52 -#, fuzzy, php-format +#, php-format msgid "" "Search for groups on %%site.name%% by their name, location, or description. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"Buscar personas en %%site.name%% por nombre, ubicación o intereses. Separa " -"los términos con espacios; deben tener una longitud mínima de 3 caracteres." +"Busca grupos en %%site.name%% por su nombre, ubicación o descripción. Separa " +"los términos con espacios. Los términos tienen que ser de 3 o más caracteres." #: actions/groupsearch.php:58 -#, fuzzy msgid "Group search" -msgstr "Buscador de grupos" +msgstr "Búsqueda en grupos" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Ningún resultado" +msgstr "No se obtuvo resultados." #: actions/groupsearch.php:82 #, php-format @@ -1782,6 +1769,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Si no puedes encontrar el grupo que estás buscando, puedes [crearlo] (%%" +"action.newgroup%%) tú mismo." #: actions/groupsearch.php:85 #, php-format @@ -1789,23 +1778,22 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"¿Por qué no [registras una cuenta](%%action.register%%) y [creas el grupo](%%" +"action.newgroup%%) tú mismo?" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Sólo un administrador puede desbloquear miembros de grupos." #: actions/groupunblock.php:95 -#, fuzzy msgid "User is not blocked from group." -msgstr "El usuario te ha bloqueado." +msgstr "El usuario no está bloqueado del grupo." #: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy msgid "Error removing the block." -msgstr "Error al sacar bloqueo." +msgstr "Se ha producido un error al eliminar el bloque." #: actions/imsettings.php:59 -#, fuzzy msgid "IM settings" msgstr "Configuración de mensajería instantánea" @@ -1819,9 +1807,8 @@ msgstr "" "Jabber/GTalk. Configura tu dirección y opciones abajo." #: actions/imsettings.php:89 -#, fuzzy msgid "IM is not available." -msgstr "Esta página no está disponible en un " +msgstr "La mensajería instantánea no está disponible." #: actions/imsettings.php:106 msgid "Current confirmed Jabber/GTalk address." @@ -1838,7 +1825,6 @@ msgstr "" "de amigos?)" #: actions/imsettings.php:124 -#, fuzzy msgid "IM address" msgstr "Dirección de mensajería instantánea" @@ -1904,9 +1890,9 @@ msgid "That is not your Jabber ID." msgstr "Ese no es tu Jabber ID." #: actions/inbox.php:59 -#, fuzzy, php-format +#, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "Bandeja de entrada para %s" +msgstr "Bandeja de entrada de %1$s - página %2$d" #: actions/inbox.php:62 #, php-format @@ -1920,7 +1906,7 @@ msgstr "" #: actions/invite.php:39 msgid "Invites have been disabled." -msgstr "" +msgstr "Se han inhabilitado las invitaciones." #: actions/invite.php:41 #, php-format @@ -1999,7 +1985,7 @@ msgid "%1$s has invited you to join them on %2$s" msgstr "%1$s te ha invitado a que te unas con el/ellos en %2$s" #: actions/invite.php:228 -#, fuzzy, php-format +#, php-format msgid "" "%1$s has invited you to join them on %2$s (%3$s).\n" "\n" @@ -2028,55 +2014,54 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" -"%1$s te ha invitado a unirte a ellos en %2$s (%3$s).\n" +"%1$s te ha invitado a unirte a %2$s (%3$s).\n" "\n" -"%2$s es un servicio de microblogueo que te permite estar al tanto de la " -"gente que conoces y que te interesa.\n" +"%2$s es un servicio de microblogueo que te permite mantenerte al corriente " +"de las personas que sigues y que te interesan.\n" "\n" -"Puedes compartir noticias sobre tí mismo, tus pensamientos, o tu vida en " -"línea con gente que te conoce. También es bueno para conocer gente que " -"comparta tus intereses.\n" +"También puedes compartir noticias acerca de tí, tus pensamientos o tu vida " +"en línea con la gente que sabe de tí. También es una excelente herramienta " +"para conocer gente nueva que comparta tus intereses.\n" "\n" -"%1$s dijo:\n" +"%1$s ha dicho:\n" "\n" "%4$s\n" "\n" -"Puedes ver el perfil de %1$s en %2$s aquí:\n" +"Puedes ver el perfil de %1$s aquí en %2$s:\n" "\n" "%5$s\n" "\n" -"Si quieres inscribirte y probar el servicio, haz click en enlace debajo para " +"Si quieres probar el sevicio, haz clic en el vínculo a continuación para " "aceptar la invitación.\n" "\n" "%6$s\n" "\n" -"Si no deseas inscribirte puedes ignorar este mensaje. Gracias por tu " -"paciencia y tiempo.\n" +"Si por el contrario, no quieres, ignora este mensaje. Muchas gracias por tu " +"paciencia y por tu tiempo.\n" "\n" -"Sinceramente, %2$s\n" +"Saludos cordiales, %2$s\n" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." msgstr "Debes estar conectado para unirte a un grupo." #: actions/joingroup.php:131 -#, fuzzy, php-format +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s se unió a grupo %s" +msgstr "%1$s se ha unido al grupo %2$" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Debes estar conectado para dejar un grupo." #: actions/leavegroup.php:90 lib/command.php:265 -#, fuzzy msgid "You are not a member of that group." -msgstr "No eres miembro de ese grupo" +msgstr "No eres miembro de este grupo." #: actions/leavegroup.php:127 -#, fuzzy, php-format +#, php-format msgid "%1$s left group %2$s" -msgstr "%s dejó grupo %s" +msgstr "%1$s ha dejado el grupo %2$s" #: actions/login.php:80 actions/otp.php:62 actions/register.php:137 msgid "Already logged in." @@ -2087,9 +2072,8 @@ msgid "Incorrect username or password." msgstr "Nombre de usuario o contraseña incorrectos." #: actions/login.php:132 actions/otp.php:120 -#, fuzzy msgid "Error setting user. You are probably not authorized." -msgstr "No autorizado." +msgstr "Error al configurar el usuario. Posiblemente no tengas autorización." #: actions/login.php:188 actions/login.php:241 lib/action.php:466 #: lib/logingroupnav.php:79 @@ -2123,61 +2107,57 @@ msgstr "" "contraseña antes de cambiar tu configuración." #: actions/login.php:270 -#, fuzzy, php-format +#, php-format msgid "" "Login with your username and password. Don't have a username yet? [Register]" "(%%action.register%%) a new account." msgstr "" -"Inicia una sesión con tu usuario y contraseña. ¿Aún no tienes usuario? [Crea]" -"(%%action.register%%) una cuenta nueva o prueba [OpenID] (%%action." -"openidlogin%%). " +"Inicia sesión con tu usuario y contraseña. ¿Aún no tienes usuario? [Crea](%%" +"action.register%%) una cuenta." -#: actions/makeadmin.php:91 +#: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "" +"Sólo los administradores pueden convertir a un usuario en administrador." -#: actions/makeadmin.php:95 -#, fuzzy, php-format +#: actions/makeadmin.php:96 +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "Usuario ya está bloqueado del grupo." +msgstr "%1$s ya es un administrador del grupo \"%2$s\"." -#: actions/makeadmin.php:132 -#, fuzzy, php-format +#: actions/makeadmin.php:133 +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "No se pudo eliminar a usuario %s de grupo %s" +msgstr "No se puede obtener el registro de membresía de %1$s en el grupo %2$s." -#: actions/makeadmin.php:145 -#, fuzzy, php-format +#: actions/makeadmin.php:146 +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Debes ser un admin para editar el grupo" +msgstr "No es posible convertir a %1$s en administrador del grupo %2$s." #: actions/microsummary.php:69 msgid "No current status" msgstr "No existe estado actual" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "No existe ese aviso." +msgstr "Nueva aplicación" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "Debes estar conectado para crear un grupo" +msgstr "Debes conectarte para registrar una aplicación." #: actions/newapplication.php:143 -#, fuzzy msgid "Use this form to register a new application." -msgstr "Usa este formulario para crear un grupo nuevo." +msgstr "Utiliza este formulario para registrar una nueva aplicación." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "Se requiere la URL fuente." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "No se pudo crear favorito." +msgstr "No se pudo crear la aplicación." #: actions/newgroup.php:53 msgid "New group" @@ -2210,14 +2190,13 @@ msgid "" msgstr "No te auto envíes un mensaje; dícetelo a ti mismo." #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "Mensaje" +msgstr "Mensaje enviado" #: actions/newmessage.php:185 -#, fuzzy, php-format +#, php-format msgid "Direct message to %s sent." -msgstr "Se envió mensaje directo a %s" +msgstr "Se ha enviado un mensaje directo a %s." #: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170 msgid "Ajax Error" @@ -2228,9 +2207,8 @@ msgid "New notice" msgstr "Nuevo aviso" #: actions/newnotice.php:211 -#, fuzzy msgid "Notice posted" -msgstr "Aviso publicado" +msgstr "Mensaje publicado" #: actions/noticesearch.php:68 #, php-format @@ -2246,9 +2224,9 @@ msgid "Text search" msgstr "Búsqueda de texto" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "Busca \"%s\" en la Corriente" +msgstr "Resultados de la búsqueda de \"%1$s\" en %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2256,6 +2234,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"Sé la primera persona en [publicar algo en este tema](%%%%action.newnotice%%%" +"%?status_textarea=%s)!" #: actions/noticesearch.php:124 #, php-format @@ -2263,16 +2243,20 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"¿Por qué no [registras una cuenta](%%%%action.register%%%%) y te conviertes " +"en la primera persona en [publicar algo en este tema](%%%%action.newnotice%%%" +"%?status_textarea=%s)?" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "¡Actualizaciones de %1$s en %2$s!" +msgstr "Actualizaciones con \"%s\"" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Todas las actualizaciones que corresponden a la frase a buscar \"%s\"" +msgstr "" +"¡Actualizaciones que contienen el término de búsqueda \"%1$s\" en %2$s!" #: actions/nudge.php:85 msgid "" @@ -2286,54 +2270,52 @@ msgid "Nudge sent" msgstr "Se envió zumbido" #: actions/nudge.php:97 -#, fuzzy msgid "Nudge sent!" -msgstr "¡Zumbido enviado!" +msgstr "¡Codazo enviado!" #: actions/oauthappssettings.php:59 -#, fuzzy msgid "You must be logged in to list your applications." -msgstr "Debes estar conectado para editar un grupo." +msgstr "Debes estar conectado para listar tus aplicaciones." #: actions/oauthappssettings.php:74 -#, fuzzy msgid "OAuth applications" -msgstr "Otras opciones" +msgstr "Aplicaciones OAuth" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Aplicaciones que has registrado" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "Aún no has registrado aplicación alguna." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "Aplicaciones conectadas" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "Has permitido a las siguientes aplicaciones acceder a tu cuenta." #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "No eres miembro de ese grupo" +msgstr "No eres un usuario de esa aplicación." #: actions/oauthconnectionssettings.php:186 msgid "Unable to revoke access for app: " -msgstr "" +msgstr "No se puede revocar el acceso para la aplicación: " #: actions/oauthconnectionssettings.php:198 #, php-format msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "No has autorizado a ninguna aplicación utilizar tu cuenta." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " msgstr "" +"Los desarrolladores pueden editar la configuración de registro de sus " +"aplicaciones " #: actions/oembed.php:79 actions/shownotice.php:100 msgid "Notice has no profile" @@ -2345,16 +2327,15 @@ msgid "%1$s's status on %2$s" msgstr "estado de %1$s en %2$s" #: actions/oembed.php:157 -#, fuzzy msgid "content type " -msgstr "Conectarse" +msgstr "tipo de contenido " #: actions/oembed.php:160 msgid "Only " -msgstr "" +msgstr "Sólo " -#: 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 "No es un formato de dato soportado" @@ -2367,9 +2348,8 @@ msgid "Notice Search" msgstr "Búsqueda de avisos" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Otras configuraciones" +msgstr "Otros ajustes" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2377,59 +2357,52 @@ msgstr "Manejo de varias opciones adicionales." #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr "  (servicio gratuito)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "Acortar las URL con" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." msgstr "Servicio de acorte automático a usar." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "Configuración del perfil" +msgstr "Ver diseños de perfil" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "Ocultar o mostrar diseños de perfil." #: actions/othersettings.php:153 -#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "Servicio de acorte de URL demasiado largo (máx. 50 caracteres)." +msgstr "El servicio de acortamiento de URL es muy largo (máx. 50 caracteres)." #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "Grupo no especificado." +msgstr "No se ha especificado ID de usuario." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "No se especificó perfil." +msgstr "No se ha especificado un token de acceso." #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Ningún perfil de Id en solicitud." +msgstr "Token de acceso solicitado." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "El contenido del aviso es inválido" +msgstr "Token de acceso inválido especificado." #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "Ingresar a sitio" +msgstr "Token de acceso caducado." #: actions/outbox.php:58 -#, fuzzy, php-format +#, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "Bandeja de salida para %s" +msgstr "Bandeja de salida de %1$s - página %2$d" #: actions/outbox.php:61 #, php-format @@ -2446,14 +2419,12 @@ msgid "Change password" msgstr "Cambiar contraseña" #: actions/passwordsettings.php:69 -#, fuzzy msgid "Change your password." -msgstr "Cambia tu contraseña." +msgstr "Cambia tu contraseña" #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy msgid "Password change" -msgstr "Cambio de contraseña " +msgstr "Cambio de contraseña" #: actions/passwordsettings.php:104 msgid "Old password" @@ -2513,9 +2484,9 @@ msgid "Path and server settings for this StatusNet site." msgstr "" #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s" -msgstr "Esta página no está disponible en un " +msgstr "Directorio de temas ilegible: %s" #: actions/pathsadminpanel.php:163 #, php-format @@ -2525,7 +2496,7 @@ msgstr "" #: actions/pathsadminpanel.php:169 #, php-format msgid "Background directory not writable: %s" -msgstr "" +msgstr "Directorio de fondo ilegible: %s" #: actions/pathsadminpanel.php:177 #, php-format @@ -2534,18 +2505,16 @@ msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "Servidor SSL no válido. La longitud máxima es de 255 caracteres." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 #: lib/adminpanelaction.php:311 -#, fuzzy msgid "Site" -msgstr "Invitar" +msgstr "Sitio" #: actions/pathsadminpanel.php:238 -#, fuzzy msgid "Server" -msgstr "Recuperar" +msgstr "Servidor" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." @@ -2578,11 +2547,11 @@ msgstr "" #: actions/pathsadminpanel.php:259 msgid "Theme" -msgstr "" +msgstr "Tema" #: actions/pathsadminpanel.php:264 msgid "Theme server" -msgstr "" +msgstr "Servidor de los temas" #: actions/pathsadminpanel.php:268 msgid "Theme path" @@ -2590,17 +2559,15 @@ msgstr "" #: actions/pathsadminpanel.php:272 msgid "Theme directory" -msgstr "" +msgstr "Directorio de temas" #: actions/pathsadminpanel.php:279 -#, fuzzy msgid "Avatars" -msgstr "Avatar" +msgstr "Avatares" #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "Configuración de Avatar" +msgstr "Servidor del avatar" #: actions/pathsadminpanel.php:288 #, fuzzy @@ -2608,17 +2575,16 @@ msgid "Avatar path" msgstr "Avatar actualizado" #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "Avatar actualizado" +msgstr "Directorio del avatar" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" -msgstr "" +msgstr "Fondos" #: actions/pathsadminpanel.php:305 msgid "Background server" -msgstr "" +msgstr "Servidor de fondo" #: actions/pathsadminpanel.php:309 msgid "Background path" @@ -2626,39 +2592,35 @@ msgstr "" #: actions/pathsadminpanel.php:313 msgid "Background directory" -msgstr "" +msgstr "Directorio del fondo" #: actions/pathsadminpanel.php:320 -#, fuzzy msgid "SSL" -msgstr "SMS" +msgstr "SSL" #: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294 -#, fuzzy msgid "Never" -msgstr "Recuperar" +msgstr "Nunca" #: actions/pathsadminpanel.php:324 -#, fuzzy msgid "Sometimes" -msgstr "Avisos" +msgstr "A veces" #: actions/pathsadminpanel.php:325 msgid "Always" -msgstr "" +msgstr "Siempre" #: actions/pathsadminpanel.php:329 msgid "Use SSL" -msgstr "" +msgstr "Usar SSL" #: actions/pathsadminpanel.php:330 msgid "When to use SSL" -msgstr "" +msgstr "Cuándo utilizar SSL" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Recuperar" +msgstr "Servidor SSL" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" @@ -2683,9 +2645,9 @@ msgid "People search" msgstr "Buscador de gente" #: actions/peopletag.php:70 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s" -msgstr "No es un tag de personas válido: %s" +msgstr "No es una etiqueta válida para personas: %s" #: actions/peopletag.php:144 #, fuzzy, php-format @@ -2713,9 +2675,8 @@ msgstr "" "sepa más sobre ti." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Información de perfil " +msgstr "Información del perfil" #: actions/profilesettings.php:108 lib/groupeditform.php:154 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" @@ -2738,14 +2699,13 @@ msgid "URL of your homepage, blog, or profile on another site" msgstr "El URL de tu página de inicio, blog o perfil en otro sitio" #: actions/profilesettings.php:122 actions/register.php:461 -#, fuzzy, php-format +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "Cuéntanos algo sobre ti y tus intereses en 140 caracteres" +msgstr "Descríbete y cuéntanos tus intereses en %d caracteres" #: actions/profilesettings.php:125 actions/register.php:464 -#, fuzzy msgid "Describe yourself and your interests" -msgstr "Descríbete y cuenta de tus " +msgstr "Descríbete y cuéntanos acerca de tus intereses" #: actions/profilesettings.php:127 actions/register.php:466 msgid "Bio" @@ -2801,9 +2761,9 @@ msgstr "" "para no-humanos)" #: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "La biografía es demasiado larga (máx. 140 caracteres)." +msgstr "La biografía es muy larga (máx. %d caracteres)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:150 msgid "Timezone not selected." @@ -2814,27 +2774,25 @@ msgid "Language is too long (max 50 chars)." msgstr "Idioma es muy largo ( max 50 car.)" #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "Tag no válido: '%s' " +msgstr "Etiqueta inválida: \"% s\"" #: actions/profilesettings.php:302 msgid "Couldn't update user for autosubscribe." msgstr "No se pudo actualizar el usuario para autosuscribirse." #: actions/profilesettings.php:359 -#, fuzzy msgid "Couldn't save location prefs." -msgstr "No se pudo guardar tags." +msgstr "No se han podido guardar las preferencias de ubicación." #: actions/profilesettings.php:371 msgid "Couldn't save profile." msgstr "No se pudo guardar el perfil." #: actions/profilesettings.php:379 -#, fuzzy msgid "Couldn't save tags." -msgstr "No se pudo guardar tags." +msgstr "No se pudo guardar las etiquetas." #: actions/profilesettings.php:387 lib/adminpanelaction.php:137 msgid "Settings saved." @@ -2843,16 +2801,16 @@ msgstr "Se guardó configuración." #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)" -msgstr "" +msgstr "Más allá del límite de páginas (%s)" #: actions/public.php:92 msgid "Could not retrieve public stream." msgstr "No se pudo acceder a corriente pública." #: actions/public.php:129 -#, fuzzy, php-format +#, php-format msgid "Public timeline, page %d" -msgstr "Línea de tiempo pública, página %d" +msgstr "Línea temporal pública, página %d" #: actions/public.php:131 lib/publicgroupnav.php:79 msgid "Public timeline" @@ -2879,10 +2837,12 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Esta es la línea temporal pública de %%site.name%%, pero aún no se ha " +"publicado nada." #: actions/public.php:190 msgid "Be the first to post!" -msgstr "" +msgstr "¡Sé la primera persona en publicar algo!" #: actions/public.php:194 #, php-format @@ -2910,9 +2870,8 @@ msgstr "" "wiki/Micro-blogging) " #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "Nube de tags pública" +msgstr "Nube de etiquetas pública" #: actions/publictagcloud.php:63 #, php-format @@ -2926,7 +2885,7 @@ msgstr "" #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "¡Sé la primera persona en publicar!" #: actions/publictagcloud.php:75 #, php-format @@ -2978,14 +2937,16 @@ msgstr "" #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " msgstr "" +"Se te ha identificado. Por favor, escribe una nueva contraseña a " +"continuación. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "" +msgstr "Recuperación de contraseña" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "Nombre de usuario o dirección de correo electrónico" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3142,13 +3103,12 @@ msgid "Creative Commons Attribution 3.0" msgstr "" #: actions/register.php:497 -#, fuzzy msgid "" " except this private data: password, email address, IM address, and phone " "number." msgstr "" -"excepto los siguientes datos privados: contraseña, dirección de correo " -"electrónico, dirección de mensajería instantánea, número de teléfono." +"con excepción de esta información privada: contraseña, dirección de correo " +"electrónico, dirección de mensajería instantánea y número de teléfono." #: actions/register.php:538 #, fuzzy, php-format @@ -3208,17 +3168,16 @@ msgid "Remote subscribe" msgstr "Subscripción remota" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "Suscribirse a este usuario" +msgstr "Suscribirse a un usuario remoto" #: actions/remotesubscribe.php:129 msgid "User nickname" -msgstr "Apodo del usuario" +msgstr "Usuario" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" -msgstr "Apodo del usuario que quieres seguir" +msgstr "Usuario a quien quieres seguir" #: actions/remotesubscribe.php:133 msgid "Profile URL" @@ -3238,49 +3197,42 @@ msgid "Invalid profile URL (bad format)" msgstr "El URL del perfil es inválido (formato incorrecto)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "URL de perfil no válido (ningún documento YADIS)." +msgstr "" +"No es un perfil válido URL (no se ha definido un documento YADIS o un XRDS " +"inválido)." #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "¡Es un perfil local! Ingresa para suscribirte" +msgstr "¡Este es un perfil local! Ingresa para suscribirte" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "No se pudo obtener la señal de petición." +msgstr "No se pudo obtener un token de solicitud" #: actions/repeat.php:57 -#, fuzzy msgid "Only logged-in users can repeat notices." -msgstr "Sólo el usuario puede leer sus bandejas de correo." +msgstr "Sólo los usuarios que hayan accedido pueden repetir mensajes." #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "No se especificó perfil." +msgstr "No se ha especificado un mensaje." #: actions/repeat.php:76 -#, fuzzy msgid "You can't repeat your own notice." -msgstr "No puedes registrarte si no estás de acuerdo con la licencia." +msgstr "No puedes repetir tus propios mensajes." #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "Ya has bloqueado este usuario." +msgstr "Ya has repetido este mensaje." #: actions/repeat.php:114 lib/noticelist.php:642 -#, fuzzy msgid "Repeated" -msgstr "Crear" +msgstr "Repetido" #: actions/repeat.php:119 -#, fuzzy msgid "Repeated!" -msgstr "Crear" +msgstr "¡Repetido!" #: actions/replies.php:125 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3289,9 +3241,9 @@ msgid "Replies to %s" msgstr "Respuestas a %s" #: actions/replies.php:127 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Respuestas a %1$s en %2$s!" +msgstr "Respuestas a %1$s, página %2$d" #: actions/replies.php:144 #, fuzzy, php-format @@ -3335,9 +3287,8 @@ msgid "Replies to %1$s on %2$s!" msgstr "Respuestas a %1$s en %2$s!" #: actions/rsd.php:146 actions/version.php:157 -#, fuzzy msgid "StatusNet" -msgstr "Status borrado." +msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 #, fuzzy @@ -3356,11 +3307,11 @@ msgstr "Sesiones" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "Configuración de sesión para este sitio StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "Gestionar sesiones" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." @@ -3386,24 +3337,21 @@ msgid "You must be logged in to view an application." msgstr "Debes estar conectado para dejar un grupo." #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "Aviso sin perfil" +msgstr "Perfil de la aplicación" #: actions/showapplication.php:159 lib/applicationeditform.php:180 msgid "Icon" -msgstr "" +msgstr "Icono" #: actions/showapplication.php:169 actions/version.php:195 #: lib/applicationeditform.php:195 -#, fuzzy msgid "Name" -msgstr "Apodo" +msgstr "Nombre" #: actions/showapplication.php:178 lib/applicationeditform.php:222 -#, fuzzy msgid "Organization" -msgstr "Paginación" +msgstr "Organización" #: actions/showapplication.php:187 actions/version.php:198 #: lib/applicationeditform.php:209 lib/groupeditform.php:172 @@ -3422,7 +3370,7 @@ msgstr "" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Acciones de la aplicación" #: actions/showapplication.php:236 msgid "Reset key & secret" @@ -3430,7 +3378,7 @@ msgstr "" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Información de la aplicación" #: actions/showapplication.php:263 msgid "Consumer key" @@ -3450,7 +3398,7 @@ msgstr "" #: actions/showapplication.php:283 msgid "Authorize URL" -msgstr "" +msgstr "Autorizar URL" #: actions/showapplication.php:288 msgid "" @@ -3523,9 +3471,8 @@ msgid "%1$s group, page %2$d" msgstr "Miembros del grupo %s, página %d" #: actions/showgroup.php:218 -#, fuzzy msgid "Group profile" -msgstr "Perfil de grupo" +msgstr "Perfil del grupo" #: actions/showgroup.php:263 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:177 @@ -3534,13 +3481,12 @@ msgstr "URL" #: actions/showgroup.php:274 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:194 -#, fuzzy msgid "Note" msgstr "Nota" #: actions/showgroup.php:284 lib/groupeditform.php:184 msgid "Aliases" -msgstr "" +msgstr "Alias" #: actions/showgroup.php:293 msgid "Group actions" @@ -3582,9 +3528,8 @@ msgid "All members" msgstr "Todos los miembros" #: actions/showgroup.php:432 -#, fuzzy msgid "Created" -msgstr "Crear" +msgstr "Creado" #: actions/showgroup.php:448 #, php-format @@ -3608,9 +3553,8 @@ msgstr "" "blogging](http://en.wikipedia.org/wiki/Micro-blogging) " #: actions/showgroup.php:482 -#, fuzzy msgid "Admins" -msgstr "Admin" +msgstr "Administradores" #: actions/showmessage.php:81 msgid "No such message." @@ -3635,14 +3579,14 @@ msgid "Notice deleted." msgstr "Aviso borrado" #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" -msgstr "Avisos marcados con %s" +msgstr "%s etiquetados" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s y amigos, página %d" +msgstr "%1$s, página %2$d" #: actions/showstream.php:122 #, fuzzy, php-format @@ -3723,7 +3667,7 @@ msgstr "El usuario te ha bloqueado." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site." -msgstr "" +msgstr "Configuración básica de este sitio StatusNet." #: actions/siteadminpanel.php:132 msgid "Site name must have non-zero length." @@ -3737,7 +3681,7 @@ msgstr "No es una dirección de correo electrónico válida" #: actions/siteadminpanel.php:158 #, php-format msgid "Unknown language \"%s\"." -msgstr "" +msgstr "Idioma desconocido \"%s\"." #: actions/siteadminpanel.php:165 msgid "Invalid snapshot report URL." @@ -3761,12 +3705,11 @@ msgstr "" #: actions/siteadminpanel.php:239 msgid "General" -msgstr "" +msgstr "General" #: actions/siteadminpanel.php:242 -#, fuzzy msgid "Site name" -msgstr "Aviso de sitio" +msgstr "Nombre del sitio" #: actions/siteadminpanel.php:243 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -3800,11 +3743,11 @@ msgstr "Vistas locales" #: actions/siteadminpanel.php:274 msgid "Default timezone" -msgstr "" +msgstr "Zona horaria predeterminada" #: actions/siteadminpanel.php:275 msgid "Default timezone for the site; usually UTC." -msgstr "" +msgstr "Zona horaria predeterminada del sitio; generalmente UTC." #: actions/siteadminpanel.php:281 #, fuzzy @@ -3845,19 +3788,19 @@ msgstr "" #: actions/siteadminpanel.php:308 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "Las capturas se enviarán a este URL" #: actions/siteadminpanel.php:315 msgid "Limits" -msgstr "" +msgstr "Límites" #: actions/siteadminpanel.php:318 msgid "Text limit" -msgstr "" +msgstr "Límite de texto" #: actions/siteadminpanel.php:318 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "Cantidad máxima de caracteres para los mensajes." #: actions/siteadminpanel.php:322 msgid "Dupe limit" @@ -3868,9 +3811,8 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/smssettings.php:58 -#, fuzzy msgid "SMS settings" -msgstr "Preferencias SMS" +msgstr "Configuración de SMS" #: actions/smssettings.php:69 #, php-format @@ -3899,9 +3841,8 @@ msgid "Enter the code you received on your phone." msgstr "Ingrese el código recibido en su teléfono" #: actions/smssettings.php:138 -#, fuzzy msgid "SMS phone number" -msgstr "Número telefónico para sms" +msgstr "Número de teléfono de SMS" #: actions/smssettings.php:140 msgid "Phone number, no punctuation or spaces, with area code" @@ -3950,9 +3891,8 @@ msgid "That is not your phone number." msgstr "Ese no es tu número telefónico" #: actions/smssettings.php:465 -#, fuzzy msgid "Mobile carrier" -msgstr "Operador móvil" +msgstr "Operador de telefonía móvil" #: actions/smssettings.php:469 msgid "Select a carrier" @@ -3988,7 +3928,6 @@ msgid "Not a local user." msgstr "No es usuario local." #: actions/subscribe.php:69 -#, fuzzy msgid "Subscribed" msgstr "Suscrito" @@ -4103,7 +4042,6 @@ msgid "Tag %s" msgstr "%s tag" #: actions/tagother.php:77 lib/userprofile.php:75 -#, fuzzy msgid "User profile" msgstr "Perfil de usuario" @@ -4131,9 +4069,8 @@ msgstr "" "suscritas a ti." #: actions/tagother.php:200 -#, fuzzy msgid "Could not save tags." -msgstr "No se pudo guardar tags." +msgstr "No se han podido guardar las etiquetas." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." @@ -4218,16 +4155,15 @@ msgstr "Nuevos usuarios" #: actions/useradminpanel.php:234 msgid "New user welcome" -msgstr "" +msgstr "Bienvenida a nuevos usuarios" #: actions/useradminpanel.php:235 msgid "Welcome text for new users (Max 255 chars)." msgstr "" #: actions/useradminpanel.php:240 -#, fuzzy msgid "Default subscription" -msgstr "Todas las suscripciones" +msgstr "Suscripción predeterminada" #: actions/useradminpanel.php:241 #, fuzzy @@ -4355,9 +4291,8 @@ msgid "Wrong image type for avatar URL ‘%s’." msgstr "Tipo de imagen incorrecto para '%s'" #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "Configuración del perfil" +msgstr "Diseño del perfil" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4375,9 +4310,8 @@ msgid "%1$s groups, page %2$d" msgstr "Miembros del grupo %s, página %d" #: actions/usergroups.php:130 -#, fuzzy msgid "Search for more groups" -msgstr "Buscar personas o texto" +msgstr "Buscar más grupos" #: actions/usergroups.php:153 #, fuzzy, php-format @@ -4400,10 +4334,12 @@ msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " "Inc. and contributors." msgstr "" +"Este sitio ha sido desarrollado con %1$s, versión %2$s, Derechos Reservados " +"2008-2010 StatusNet, Inc. y sus colaboradores." #: actions/version.php:161 msgid "Contributors" -msgstr "" +msgstr "Colaboradores" #: actions/version.php:168 msgid "" @@ -4430,7 +4366,7 @@ msgstr "" #: actions/version.php:189 msgid "Plugins" -msgstr "" +msgstr "Complementos" #: actions/version.php:196 lib/action.php:747 #, fuzzy @@ -4439,7 +4375,7 @@ msgstr "Sesiones" #: actions/version.php:197 msgid "Author(s)" -msgstr "" +msgstr "Autor(es)" #: classes/File.php:144 #, php-format @@ -4464,9 +4400,8 @@ msgid "Group join failed." msgstr "Perfil de grupo" #: classes/Group_member.php:53 -#, fuzzy msgid "Not part of group." -msgstr "No se pudo actualizar el grupo." +msgstr "No es parte del grupo." #: classes/Group_member.php:60 #, fuzzy @@ -4497,14 +4432,12 @@ msgid "DB error inserting hashtag: %s" msgstr "Error de la BD al insertar la etiqueta clave: %s" #: classes/Notice.php:214 -#, fuzzy msgid "Problem saving notice. Too long." -msgstr "Hubo un problema al guardar el aviso." +msgstr "Ha habido un problema al guardar el mensaje. Es muy largo." #: classes/Notice.php:218 -#, fuzzy msgid "Problem saving notice. Unknown user." -msgstr "Hubo problemas al guardar el aviso. Usuario desconocido." +msgstr "Ha habido un problema al guardar el mensaje. Usuario desconocido." #: classes/Notice.php:223 msgid "" @@ -4540,7 +4473,7 @@ msgstr "Hubo un problema al guardar el aviso." msgid "DB error inserting reply: %s" msgstr "Error de BD al insertar respuesta: %s" -#: classes/Notice.php:1231 +#: classes/Notice.php:1271 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" @@ -4550,11 +4483,11 @@ msgstr "RT @%1$s %2$s" msgid "Welcome to %1$s, @%2$s!" msgstr "Bienvenido a %1$s, @%2$s!" -#: classes/User_group.php:380 +#: classes/User_group.php:413 msgid "Could not create group." msgstr "No se pudo crear grupo." -#: classes/User_group.php:409 +#: classes/User_group.php:442 #, fuzzy msgid "Could not set group membership." msgstr "No se pudo configurar miembros de grupo." @@ -4588,9 +4521,9 @@ msgid "Other options" msgstr "Otras opciones" #: lib/action.php:144 -#, fuzzy, php-format +#, php-format msgid "%1$s - %2$s" -msgstr "%1$s (%2$s)" +msgstr "%1$s - %2$s" #: lib/action.php:159 msgid "Untitled page" @@ -4621,9 +4554,8 @@ msgid "Connect to services" msgstr "Conectar a los servicios" #: lib/action.php:448 -#, fuzzy msgid "Change site configuration" -msgstr "Navegación de sitio primario" +msgstr "Cambiar la configuración del sitio" #: lib/action.php:452 lib/subgroupnav.php:105 msgid "Invite" @@ -4756,6 +4688,8 @@ msgstr "" #: lib/action.php:814 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" +"Derechos de autor de contenido y datos por los colaboradores. Todos los " +"derechos reservados." #: lib/action.php:826 msgid "All " @@ -4778,9 +4712,8 @@ msgid "Before" msgstr "Antes" #: lib/adminpanelaction.php:96 -#, fuzzy msgid "You cannot make changes to this site." -msgstr "No puedes enviar mensaje a este usuario." +msgstr "No puedes hacer cambios a este sitio." #: lib/adminpanelaction.php:107 #, fuzzy @@ -4818,9 +4751,8 @@ msgid "User configuration" msgstr "SMS confirmación" #: lib/adminpanelaction.php:327 -#, fuzzy msgid "Access configuration" -msgstr "SMS confirmación" +msgstr "Configuración de acceso" #: lib/adminpanelaction.php:332 #, fuzzy @@ -4828,9 +4760,8 @@ msgid "Paths configuration" msgstr "SMS confirmación" #: lib/adminpanelaction.php:337 -#, fuzzy msgid "Sessions configuration" -msgstr "SMS confirmación" +msgstr "Configuración de sesiones" #: lib/apiauth.php:95 msgid "API resource requires read-write access, but you only have read access." @@ -5162,8 +5093,8 @@ msgstr "No eres miembro de ningún grupo" #: lib/command.php:714 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -msgstr[0] "No eres miembro de este grupo." -msgstr[1] "No eres miembro de este grupo." +msgstr[0] "Eres miembro de este grupo:" +msgstr[1] "Eres miembro de estos grupos:" #: lib/command.php:728 msgid "" @@ -6138,47 +6069,47 @@ msgstr "Mensaje" msgid "Moderate" msgstr "Moderar" -#: lib/util.php:867 +#: lib/util.php:871 msgid "a few seconds ago" msgstr "hace unos segundos" -#: lib/util.php:869 +#: lib/util.php:873 msgid "about a minute ago" msgstr "hace un minuto" -#: lib/util.php:871 +#: lib/util.php:875 #, php-format msgid "about %d minutes ago" msgstr "hace %d minutos" -#: lib/util.php:873 +#: lib/util.php:877 msgid "about an hour ago" msgstr "hace una hora" -#: lib/util.php:875 +#: lib/util.php:879 #, php-format msgid "about %d hours ago" msgstr "hace %d horas" -#: lib/util.php:877 +#: lib/util.php:881 msgid "about a day ago" msgstr "hace un día" -#: lib/util.php:879 +#: lib/util.php:883 #, php-format msgid "about %d days ago" msgstr "hace %d días" -#: lib/util.php:881 +#: lib/util.php:885 msgid "about a month ago" msgstr "hace un mes" -#: lib/util.php:883 +#: lib/util.php:887 #, php-format msgid "about %d months ago" msgstr "hace %d meses" -#: lib/util.php:885 +#: lib/util.php:889 msgid "about a year ago" msgstr "hace un año" diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po index ae528ab7bf..c749a41611 100644 --- a/locale/fa/LC_MESSAGES/statusnet.po +++ b/locale/fa/LC_MESSAGES/statusnet.po @@ -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 "حدود یک سال پیش" diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index aa53f81cdb..80a85e1d1b 100644 --- a/locale/fi/LC_MESSAGES/statusnet.po +++ b/locale/fi/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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" diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index 352d6bd706..9fb5e88b2b 100644 --- a/locale/fr/LC_MESSAGES/statusnet.po +++ b/locale/fr/LC_MESSAGES/statusnet.po @@ -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 "L’utilisateur n’est 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 d’identifiant ? [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 d’un 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 d’obtenir les enregistrements d’appartenance 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 l’enregistrement 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" diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index 9bd8a6ff84..0358b8ecd0 100644 --- a/locale/ga/LC_MESSAGES/statusnet.po +++ b/locale/ga/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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" diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index 829ca11cf8..fb8f120319 100644 --- a/locale/he/LC_MESSAGES/statusnet.po +++ b/locale/he/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 "לפני כשנה" diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index 06cac6471e..daecf17e80 100644 --- a/locale/hsb/LC_MESSAGES/statusnet.po +++ b/locale/hsb/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po index 39b2a11a5a..698f779dd0 100644 --- a/locale/ia/LC_MESSAGES/statusnet.po +++ b/locale/ia/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-05 23:53+0000\n" -"PO-Revision-Date: 2010-02-05 23:54:22+0000\n" +"POT-Creation-Date: 2010-02-11 08:14+0000\n" +"PO-Revision-Date: 2010-02-11 08:14:57+0000\n" "Language-Team: Interlingua\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: ia\n" "X-Message-Group: out-statusnet\n" @@ -37,7 +37,7 @@ msgstr "Private" #: actions/accessadminpanel.php:163 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "Prohiber al usatores anonyme (sin session aperte) de vider le sito?" +msgstr "Prohibir al usatores anonyme (sin session aperte) de vider le sito?" #: actions/accessadminpanel.php:167 msgid "Invite only" @@ -195,7 +195,7 @@ msgstr "Actualisationes de %1$s e su amicos in %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 "Methodo API non trovate." @@ -707,7 +707,7 @@ msgstr "Non trovate." #: actions/attachment.php:73 msgid "No such attachment." -msgstr "Attachamento non existe." +msgstr "Annexo non existe." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -733,7 +733,8 @@ msgstr "Avatar" #: actions/avatarsettings.php:78 #, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "Tu pote cargar tu avatar personal. Le dimension maxime del file es %s." +msgstr "" +"Tu pote incargar tu avatar personal. Le dimension maximal del file es %s." #: actions/avatarsettings.php:106 actions/avatarsettings.php:185 #: actions/remotesubscribe.php:191 actions/userauthorization.php:72 @@ -763,7 +764,7 @@ msgstr "Deler" #: actions/avatarsettings.php:166 actions/grouplogo.php:233 msgid "Upload" -msgstr "Cargar" +msgstr "Incargar" #: actions/avatarsettings.php:231 actions/grouplogo.php:286 msgid "Crop" @@ -823,7 +824,7 @@ msgstr "Non blocar iste usator" 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 msgid "Block this user" msgstr "Blocar iste usator" @@ -1079,8 +1080,8 @@ msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -"Tu pote cargar un imagine de fundo pro le sito. Le dimension maxime del file " -"es %1$s." +"Tu pote incargar un imagine de fundo pro le sito. Le dimension maximal del " +"file es %1$s." #: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" @@ -1334,7 +1335,7 @@ msgstr "Inviar me e-mail quando alcuno me invia un message private." #: actions/emailsettings.php:174 msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Inviar me e-mail quando alcuno me invia un \"@-responsa\"." +msgstr "Inviar me e-mail quando alcuno me invia un \"responsa @\"." #: actions/emailsettings.php:179 msgid "Allow friends to nudge me and send me an email." @@ -1508,11 +1509,11 @@ msgstr "Nulle nota." #: actions/file.php:42 msgid "No attachments." -msgstr "Nulle attachamento." +msgstr "Nulle annexo." #: actions/file.php:51 msgid "No uploaded attachments." -msgstr "Nulle attachamento cargate." +msgstr "Nulle annexo incargate." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1583,7 +1584,7 @@ msgstr "Le usator es ja blocate del gruppo." msgid "User is not a member of group." msgstr "Le usator non es membro del gruppo." -#: actions/groupblock.php:136 actions/groupmembers.php:314 +#: actions/groupblock.php:136 actions/groupmembers.php:316 msgid "Block user from group" msgstr "Blocar usator del gruppo" @@ -1648,8 +1649,8 @@ msgstr "Logotypo del gruppo" msgid "" "You can upload a logo image for your group. The maximum file size is %s." msgstr "" -"Tu pote cargar un imagine pro le logotypo de tu gruppo. Le dimension maxime " -"del file es %s." +"Tu pote incargar un imagine pro le logotypo de tu gruppo. Le dimension " +"maximal del file es %s." #: actions/grouplogo.php:178 msgid "User without matching profile." @@ -1685,19 +1686,19 @@ msgstr "Un lista de usatores in iste gruppo." msgid "Admin" msgstr "Administrator" -#: actions/groupmembers.php:346 lib/blockform.php:69 +#: actions/groupmembers.php:348 lib/blockform.php:69 msgid "Block" msgstr "Blocar" -#: actions/groupmembers.php:441 +#: actions/groupmembers.php:443 msgid "Make user an admin of the group" msgstr "Facer le usator administrator del gruppo" -#: actions/groupmembers.php:473 +#: actions/groupmembers.php:475 msgid "Make Admin" msgstr "Facer administrator" -#: actions/groupmembers.php:473 +#: actions/groupmembers.php:475 msgid "Make this user an admin" msgstr "Facer iste usator administrator" @@ -1923,7 +1924,7 @@ msgstr "Tu es a subscribite a iste usatores:" #: actions/invite.php:131 actions/invite.php:139 lib/command.php:306 #, php-format msgid "%1$s (%2$s)" -msgstr "" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" @@ -2105,23 +2106,23 @@ msgid "" "(%%action.register%%) a new account." msgstr "" "Aperi un session con tu nomine de usator e contrasigno. Non ha ancora un " -"nomine de usator? [Registra](%%action.register%%) un nove conto." +"nomine de usator? [Crea](%%action.register%%) un nove conto." -#: actions/makeadmin.php:91 +#: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "Solmente un administrator pote facer un altere usator administrator." -#: actions/makeadmin.php:95 +#: actions/makeadmin.php:96 #, php-format msgid "%1$s is already an admin for group \"%2$s\"." msgstr "%1$s es ja administrator 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 "Non pote obtener le datos del membrato de %1$s in le 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 "Non pote facer %1$s administrator del gruppo %2$s." @@ -2326,8 +2327,8 @@ msgstr "typo de contento " msgid "Only " msgstr "Solmente " -#: 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 datos non supportate." @@ -2497,7 +2498,7 @@ msgstr "Directorio de localitates non scriptibile: %s" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "Servitor SSL invalide. Le longitude maxime es 255 characteres." +msgstr "Servitor SSL invalide. Le longitude maximal es 255 characteres." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 #: lib/adminpanelaction.php:311 @@ -2876,7 +2877,7 @@ msgstr "Istes es le etiquettas recente le plus popular in %s " #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." msgstr "" -"Nulle persona ha ancora publicate un nota con un [hashtag](%%doc.tags%%) yet." +"Nulle persona ha ancora publicate un nota con un [hashtag](%%doc.tags%%)." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" @@ -3034,7 +3035,7 @@ msgstr "Registration succedite" #: actions/register.php:114 actions/register.php:503 lib/action.php:463 #: lib/logingroupnav.php:85 msgid "Register" -msgstr "Crear un conto" +msgstr "Crear conto" #: actions/register.php:135 msgid "Registration not allowed." @@ -3042,8 +3043,7 @@ msgstr "Registration non permittite." #: actions/register.php:198 msgid "You can't register if you don't agree to the license." -msgstr "" -"Tu non pote registrar te si tu non te declara de accordo con le licentia." +msgstr "Tu non pote crear un conto si tu non accepta le licentia." #: actions/register.php:212 msgid "Email address already exists." @@ -3063,15 +3063,15 @@ msgstr "" #: actions/register.php:425 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "1-64 minusculas o numeros, sin punctuation o spatios. Requisite." +msgstr "1-64 minusculas o numeros, sin punctuation o spatios. Requirite." #: actions/register.php:430 msgid "6 or more characters. Required." -msgstr "6 o plus characteres. Requisite." +msgstr "6 o plus characteres. Requirite." #: actions/register.php:434 msgid "Same as password above. Required." -msgstr "Identic al contrasigno hic supra. Requisite." +msgstr "Identic al contrasigno hic supra. Requirite." #: actions/register.php:438 actions/register.php:442 #: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120 @@ -3090,7 +3090,7 @@ msgstr "Nomine plus longe, preferibilemente tu nomine \"real\"" #: actions/register.php:494 msgid "My text and files are available under " -msgstr "Mi texto e files es disponibile sub " +msgstr "Mi texto e files es disponibile sub le licentia " #: actions/register.php:496 msgid "Creative Commons Attribution 3.0" @@ -3715,7 +3715,7 @@ msgstr "Le frequentia de instantaneos debe esser un numero." #: actions/siteadminpanel.php:183 msgid "Minimum text limit is 140 characters." -msgstr "Le limite minime del texto es 140 characteres." +msgstr "Le limite minimal del texto es 140 characteres." #: actions/siteadminpanel.php:189 msgid "Dupe limit must 1 or more seconds." @@ -3815,7 +3815,7 @@ msgstr "Limite de texto" #: actions/siteadminpanel.php:318 msgid "Maximum number of characters for notices." -msgstr "Numero maxime de characteres pro notas." +msgstr "Numero maximal de characteres pro notas." #: actions/siteadminpanel.php:322 msgid "Dupe limit" @@ -4348,10 +4348,12 @@ msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " "Inc. and contributors." msgstr "" +"Iste sito es realisate per %1$s version %2$s, copyright 2008-2010 StatusNet, " +"Inc. e contributores." #: actions/version.php:161 msgid "Contributors" -msgstr "" +msgstr "Contributores" #: actions/version.php:168 msgid "" @@ -4360,6 +4362,10 @@ msgid "" "Software Foundation, either version 3 of the License, or (at your option) " "any later version. " msgstr "" +"StatusNet es software libere: vos pote redistribuer lo e/o modificar lo sub " +"le conditiones del GNU Affero General Public License como publicate per le " +"Free Software Foundation, o version 3 de iste licentia, o (a vostre " +"election) omne version plus recente. " #: actions/version.php:174 msgid "" @@ -4368,6 +4374,10 @@ msgid "" "FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License " "for more details. " msgstr "" +"Iste programma es distribuite in le sperantia que illo essera utile, ma SIN " +"ALCUN GARANTIA; sin mesmo le garantia implicite de COMMERCIABILITATE o de " +"USABILITATE PRO UN PARTICULAR SCOPO. Vide le GNU Affero General Public " +"License pro ulterior detalios. " #: actions/version.php:180 #, php-format @@ -4375,19 +4385,20 @@ msgid "" "You should have received a copy of the GNU Affero General Public License " "along with this program. If not, see %s." msgstr "" +"Un copia del GNU Affero General Public License deberea esser disponibile " +"insimul con iste programma. Si non, vide %s." #: actions/version.php:189 msgid "Plugins" -msgstr "" +msgstr "Plug-ins" #: actions/version.php:196 lib/action.php:747 -#, fuzzy msgid "Version" -msgstr "Conversation" +msgstr "Version" #: actions/version.php:197 msgid "Author(s)" -msgstr "" +msgstr "Autor(es)" #: classes/File.php:144 #, php-format @@ -4395,31 +4406,30 @@ msgid "" "No file may be larger than %d bytes and the file you sent was %d bytes. Try " "to upload a smaller version." msgstr "" +"Nulle file pote esser plus grande que %d bytes e le file que tu inviava ha %" +"d bytes. Tenta incargar un version minus grande." #: classes/File.php:154 #, php-format msgid "A file this large would exceed your user quota of %d bytes." -msgstr "" +msgstr "Un file de iste dimension excederea tu quota de usator de %d bytes." #: classes/File.php:161 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." -msgstr "" +msgstr "Un file de iste dimension excederea tu quota mensual de %d bytes." #: classes/Group_member.php:41 -#, fuzzy msgid "Group join failed." -msgstr "Profilo del gruppo" +msgstr "Le inscription al gruppo ha fallite." #: classes/Group_member.php:53 -#, fuzzy msgid "Not part of group." -msgstr "Non poteva actualisar gruppo." +msgstr "Non es membro del gruppo." #: classes/Group_member.php:60 -#, fuzzy msgid "Group leave failed." -msgstr "Profilo del gruppo" +msgstr "Le cancellation del membrato del gruppo ha fallite." #: classes/Login_token.php:76 #, php-format @@ -4428,228 +4438,232 @@ msgstr "Non poteva crear indicio de identification pro %s" #: classes/Message.php:45 msgid "You are banned from sending direct messages." -msgstr "" +msgstr "Il te es prohibite inviar messages directe." #: classes/Message.php:61 msgid "Could not insert message." -msgstr "" +msgstr "Non poteva inserer message." #: classes/Message.php:71 msgid "Could not update message with new URI." -msgstr "" +msgstr "Non poteva actualisar message con nove URI." #: classes/Notice.php:157 #, php-format msgid "DB error inserting hashtag: %s" -msgstr "" +msgstr "Error in base de datos durante insertion del marca (hashtag): %s" #: classes/Notice.php:214 msgid "Problem saving notice. Too long." -msgstr "" +msgstr "Problema salveguardar nota. Troppo longe." #: classes/Notice.php:218 msgid "Problem saving notice. Unknown user." -msgstr "" +msgstr "Problema salveguardar nota. Usator incognite." #: classes/Notice.php:223 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" +"Troppo de notas troppo rapidemente; face un pausa e publica de novo post " +"alcun minutas." #: classes/Notice.php:229 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" +"Troppo de messages duplicate troppo rapidemente; face un pausa e publica de " +"novo post alcun minutas." #: classes/Notice.php:235 msgid "You are banned from posting notices on this site." -msgstr "" +msgstr "Il te es prohibite publicar notas in iste sito." #: classes/Notice.php:294 classes/Notice.php:319 msgid "Problem saving notice." -msgstr "" +msgstr "Problema salveguardar nota." #: classes/Notice.php:788 msgid "Problem saving group inbox." -msgstr "" +msgstr "Problema salveguardar le cassa de entrata del gruppo." #: classes/Notice.php:848 #, php-format msgid "DB error inserting reply: %s" -msgstr "" +msgstr "Error del base de datos durante le insertion del responsa: %s" -#: classes/Notice.php:1231 +#: classes/Notice.php:1235 #, php-format msgid "RT @%1$s %2$s" -msgstr "" +msgstr "RT @%1$s %2$s" #: classes/User.php:385 #, php-format msgid "Welcome to %1$s, @%2$s!" -msgstr "" +msgstr "Benvenite a %1$s, @%2$s!" #: classes/User_group.php:380 msgid "Could not create group." -msgstr "" +msgstr "Non poteva crear gruppo." #: classes/User_group.php:409 msgid "Could not set group membership." -msgstr "" +msgstr "Non poteva configurar le membrato del gruppo." #: lib/accountsettingsaction.php:108 msgid "Change your profile settings" -msgstr "" +msgstr "Cambiar le optiones de tu profilo" #: lib/accountsettingsaction.php:112 msgid "Upload an avatar" -msgstr "" +msgstr "Incargar un avatar" #: lib/accountsettingsaction.php:116 msgid "Change your password" -msgstr "" +msgstr "Cambiar tu contrasigno" #: lib/accountsettingsaction.php:120 msgid "Change email handling" -msgstr "" +msgstr "Modificar le tractamento de e-mail" #: lib/accountsettingsaction.php:124 msgid "Design your profile" -msgstr "" +msgstr "Designar tu profilo" #: lib/accountsettingsaction.php:128 msgid "Other" -msgstr "" +msgstr "Altere" #: lib/accountsettingsaction.php:128 msgid "Other options" -msgstr "" +msgstr "Altere optiones" #: lib/action.php:144 -#, fuzzy, php-format +#, php-format msgid "%1$s - %2$s" -msgstr "%s quitava le gruppo %s" +msgstr "%1$s - %2$s" #: lib/action.php:159 msgid "Untitled page" -msgstr "" +msgstr "Pagina sin titulo" #: lib/action.php:433 msgid "Primary site navigation" -msgstr "" +msgstr "Navigation primari del sito" #: lib/action.php:439 msgid "Home" -msgstr "" +msgstr "Initio" #: lib/action.php:439 msgid "Personal profile and friends timeline" -msgstr "" +msgstr "Profilo personal e chronologia de amicos" #: lib/action.php:441 msgid "Change your email, avatar, password, profile" -msgstr "" +msgstr "Cambiar tu e-mail, avatar, contrasigno, profilo" #: lib/action.php:444 msgid "Connect" -msgstr "" +msgstr "Connecter" #: lib/action.php:444 msgid "Connect to services" -msgstr "" +msgstr "Connecter con servicios" #: lib/action.php:448 msgid "Change site configuration" -msgstr "" +msgstr "Modificar le configuration del sito" #: lib/action.php:452 lib/subgroupnav.php:105 msgid "Invite" -msgstr "" +msgstr "Invitar" #: lib/action.php:453 lib/subgroupnav.php:106 #, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "" +msgstr "Invitar amicos e collegas a accompaniar te in %s" #: lib/action.php:458 msgid "Logout" -msgstr "" +msgstr "Clauder session" #: lib/action.php:458 msgid "Logout from the site" -msgstr "" +msgstr "Terminar le session del sito" #: lib/action.php:463 msgid "Create an account" -msgstr "" +msgstr "Crear un conto" #: lib/action.php:466 msgid "Login to the site" -msgstr "" +msgstr "Identificar te a iste sito" #: lib/action.php:469 lib/action.php:732 msgid "Help" -msgstr "" +msgstr "Adjuta" #: lib/action.php:469 msgid "Help me!" -msgstr "" +msgstr "Adjuta me!" #: lib/action.php:472 lib/searchaction.php:127 msgid "Search" -msgstr "" +msgstr "Cercar" #: lib/action.php:472 msgid "Search for people or text" -msgstr "" +msgstr "Cercar personas o texto" #: lib/action.php:493 msgid "Site notice" -msgstr "" +msgstr "Aviso del sito" #: lib/action.php:559 msgid "Local views" -msgstr "" +msgstr "Vistas local" #: lib/action.php:625 msgid "Page notice" -msgstr "" +msgstr "Aviso de pagina" #: lib/action.php:727 msgid "Secondary site navigation" -msgstr "" +msgstr "Navigation secundari del sito" #: lib/action.php:734 msgid "About" -msgstr "" +msgstr "A proposito" #: lib/action.php:736 msgid "FAQ" -msgstr "" +msgstr "FAQ" #: lib/action.php:740 msgid "TOS" -msgstr "" +msgstr "CdS" #: lib/action.php:743 msgid "Privacy" -msgstr "" +msgstr "Confidentialitate" #: lib/action.php:745 msgid "Source" -msgstr "" +msgstr "Fonte" #: lib/action.php:749 msgid "Contact" -msgstr "" +msgstr "Contacto" #: lib/action.php:751 msgid "Badge" -msgstr "" +msgstr "Insignia" #: lib/action.php:779 msgid "StatusNet software license" -msgstr "" +msgstr "Licentia del software StatusNet" #: lib/action.php:782 #, php-format @@ -4657,11 +4671,13 @@ msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%). " msgstr "" +"**%%site.name%%** es un servicio de microblog offerite per [%%site.broughtby%" +"%](%%site.broughtbyurl%%). " #: lib/action.php:784 #, php-format msgid "**%%site.name%%** is a microblogging service. " -msgstr "" +msgstr "**%%site.name%%** es un servicio de microblog. " #: lib/action.php:786 #, php-format @@ -4670,227 +4686,230 @@ msgid "" "s, available under the [GNU Affero General Public License](http://www.fsf." "org/licensing/licenses/agpl-3.0.html)." msgstr "" +"Le sito functiona con le software de microblog [StatusNet](http://status." +"net/), version %s, disponibile sub le [GNU Affero General Public License]" +"(http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #: lib/action.php:801 msgid "Site content license" -msgstr "" +msgstr "Licentia del contento del sito" #: lib/action.php:806 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "Le contento e datos de %1$s es private e confidential." #: lib/action.php:811 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." -msgstr "" +msgstr "Contento e datos sub copyright de %1$s. Tote le derectos reservate." #: lib/action.php:814 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" +"Contento e datos sub copyright del contributores. Tote le derectos reservate." #: lib/action.php:826 msgid "All " -msgstr "" +msgstr "Totes " #: lib/action.php:831 msgid "license." -msgstr "" +msgstr "licentia." #: lib/action.php:1130 msgid "Pagination" -msgstr "" +msgstr "Pagination" #: lib/action.php:1139 msgid "After" -msgstr "" +msgstr "Post" #: lib/action.php:1147 msgid "Before" -msgstr "" +msgstr "Ante" #: lib/adminpanelaction.php:96 msgid "You cannot make changes to this site." -msgstr "" +msgstr "Tu non pote facer modificationes in iste sito." #: lib/adminpanelaction.php:107 -#, fuzzy msgid "Changes to that panel are not allowed." -msgstr "Registration non permittite." +msgstr "Le modification de iste pannello non es permittite." #: lib/adminpanelaction.php:206 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm() non implementate." #: lib/adminpanelaction.php:235 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSettings() non implementate." #: lib/adminpanelaction.php:258 msgid "Unable to delete design setting." -msgstr "" +msgstr "Impossibile deler configuration de apparentia." #: lib/adminpanelaction.php:312 msgid "Basic site configuration" -msgstr "" +msgstr "Configuration basic del sito" #: lib/adminpanelaction.php:317 msgid "Design configuration" -msgstr "" +msgstr "Configuration del apparentia" #: lib/adminpanelaction.php:322 -#, fuzzy msgid "User configuration" -msgstr "Nulle codice de confirmation." +msgstr "Configuration del usator" #: lib/adminpanelaction.php:327 msgid "Access configuration" -msgstr "" +msgstr "Configuration del accesso" #: lib/adminpanelaction.php:332 msgid "Paths configuration" -msgstr "" +msgstr "Configuration del camminos" #: lib/adminpanelaction.php:337 -#, fuzzy msgid "Sessions configuration" -msgstr "Nulle codice de confirmation." +msgstr "Configuration del sessiones" #: lib/apiauth.php:95 msgid "API resource requires read-write access, but you only have read access." msgstr "" +"Le ressource de API require accesso pro lectura e scriptura, ma tu ha " +"solmente accesso pro lectura." #: lib/apiauth.php:273 #, php-format msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s" msgstr "" +"Tentativa de authentication al API fallite, pseudonymo = %1$s, proxy = %2$s, " +"IP = %3$s" #: lib/applicationeditform.php:136 msgid "Edit application" -msgstr "" +msgstr "Modificar application" #: lib/applicationeditform.php:184 msgid "Icon for this application" -msgstr "" +msgstr "Icone pro iste application" #: lib/applicationeditform.php:204 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Describe te e tu interesses in %d characteres" +msgstr "Describe tu application in %d characteres" #: lib/applicationeditform.php:207 msgid "Describe your application" -msgstr "" +msgstr "Describe tu application" #: lib/applicationeditform.php:216 -#, fuzzy msgid "Source URL" -msgstr "URL pro reporto" +msgstr "URL de origine" #: lib/applicationeditform.php:218 msgid "URL of the homepage of this application" -msgstr "" +msgstr "URL del pagina initial de iste application" #: lib/applicationeditform.php:224 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organisation responsabile de iste application" #: lib/applicationeditform.php:230 msgid "URL for the homepage of the organization" -msgstr "" +msgstr "URL del pagina initial del organisation" #: lib/applicationeditform.php:236 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL verso le qual rediriger post authentication" #: lib/applicationeditform.php:258 msgid "Browser" -msgstr "" +msgstr "Navigator" #: lib/applicationeditform.php:274 msgid "Desktop" -msgstr "" +msgstr "Scriptorio" #: lib/applicationeditform.php:275 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Typo de application, navigator o scriptorio" #: lib/applicationeditform.php:297 msgid "Read-only" -msgstr "" +msgstr "Lectura solmente" #: lib/applicationeditform.php:315 msgid "Read-write" -msgstr "" +msgstr "Lectura e scriptura" #: lib/applicationeditform.php:316 msgid "Default access for this application: read-only, or read-write" msgstr "" +"Accesso predefinite pro iste application: lectura solmente, o lectura e " +"scriptura" #: lib/applicationlist.php:154 -#, fuzzy msgid "Revoke" -msgstr "Remover" +msgstr "Revocar" #: lib/attachmentlist.php:87 msgid "Attachments" -msgstr "" +msgstr "Annexos" #: lib/attachmentlist.php:265 msgid "Author" -msgstr "" +msgstr "Autor" #: lib/attachmentlist.php:278 msgid "Provider" -msgstr "" +msgstr "Providitor" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "Notas ubi iste annexo appare" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" -msgstr "" +msgstr "Etiquettas pro iste annexo" #: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223 -#, fuzzy msgid "Password changing failed" -msgstr "Cambio del contrasigno" +msgstr "Cambio del contrasigno fallite" #: lib/authenticationplugin.php:233 -#, fuzzy msgid "Password changing is not allowed" -msgstr "Cambio del contrasigno" +msgstr "Cambio del contrasigno non permittite" #: lib/channel.php:138 lib/channel.php:158 msgid "Command results" -msgstr "" +msgstr "Resultatos del commando" #: lib/channel.php:210 lib/mailhandler.php:142 msgid "Command complete" -msgstr "" +msgstr "Commando complete" #: lib/channel.php:221 msgid "Command failed" -msgstr "" +msgstr "Commando fallite" #: lib/command.php:44 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Pardono, iste commando non es ancora implementate." #: lib/command.php:88 -#, fuzzy, php-format +#, php-format msgid "Could not find a user with nickname %s" -msgstr "Non poteva trovar le usator de destination." +msgstr "Non poteva trovar un usator con pseudonymo %s" #: lib/command.php:92 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "Non ha multe senso pulsar te mesme!" #: lib/command.php:99 -#, fuzzy, php-format +#, php-format msgid "Nudge sent to %s" -msgstr "Pulsata inviate" +msgstr "Pulsata inviate a %s" #: lib/command.php:126 #, php-format @@ -4899,21 +4918,22 @@ msgid "" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Subscriptiones: %1$s\n" +"Subscriptores: %2$s\n" +"Notas: %3$s" #: lib/command.php:152 lib/command.php:390 lib/command.php:451 -#, fuzzy msgid "Notice with that id does not exist" -msgstr "Nulle usator existe con iste adresse de e-mail o nomine de usator." +msgstr "Non existe un nota con iste ID" #: lib/command.php:168 lib/command.php:406 lib/command.php:467 #: lib/command.php:523 -#, fuzzy msgid "User has no last notice" -msgstr "Le usator non ha un profilo." +msgstr "Usator non ha ultime nota" #: lib/command.php:190 msgid "Notice marked as fave." -msgstr "" +msgstr "Nota marcate como favorite." #: lib/command.php:217 msgid "You are already a member of that group" @@ -4940,29 +4960,29 @@ msgid "%s left group %s" msgstr "%s quitava le gruppo %s" #: lib/command.php:309 -#, fuzzy, php-format +#, php-format msgid "Fullname: %s" -msgstr "Nomine complete" +msgstr "Nomine complete: %s" #: lib/command.php:312 lib/mail.php:254 #, php-format msgid "Location: %s" -msgstr "" +msgstr "Loco: %s" #: lib/command.php:315 lib/mail.php:256 #, php-format msgid "Homepage: %s" -msgstr "" +msgstr "Pagina personal: %s" #: lib/command.php:318 #, php-format msgid "About: %s" -msgstr "" +msgstr "A proposito: %s" #: lib/command.php:349 #, php-format msgid "Message too long - maximum is %d characters, you sent %d" -msgstr "" +msgstr "Message troppo longe - maximo es %d characteres, tu inviava %d" #: lib/command.php:367 #, php-format @@ -4971,7 +4991,7 @@ msgstr "Message directe a %s inviate" #: lib/command.php:369 msgid "Error sending direct message." -msgstr "" +msgstr "Error durante le invio del message directe." #: lib/command.php:413 msgid "Cannot repeat your own notice" @@ -4982,9 +5002,9 @@ msgid "Already repeated that notice" msgstr "Iste nota ha ja essite repetite" #: lib/command.php:426 -#, fuzzy, php-format +#, php-format msgid "Notice from %s repeated" -msgstr "Nota delite." +msgstr "Nota de %s repetite" #: lib/command.php:428 msgid "Error repeating notice." @@ -4993,93 +5013,95 @@ msgstr "Error durante le repetition del nota." #: lib/command.php:482 #, php-format msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" +msgstr "Nota troppo longe - maximo es %d characteres, tu inviava %d" #: lib/command.php:491 -#, fuzzy, php-format +#, php-format msgid "Reply to %s sent" -msgstr "Responsas a %s" +msgstr "Responsa a %s inviate" #: lib/command.php:493 msgid "Error saving notice." -msgstr "" +msgstr "Errur durante le salveguarda del nota." #: lib/command.php:547 msgid "Specify the name of the user to subscribe to" -msgstr "" +msgstr "Specifica le nomine del usator al qual subscriber te" #: lib/command.php:554 #, php-format msgid "Subscribed to %s" -msgstr "" +msgstr "Subscribite a %s" #: lib/command.php:575 msgid "Specify the name of the user to unsubscribe from" -msgstr "" +msgstr "Specifica le nomine del usator al qual cancellar le subscription" #: lib/command.php:582 #, php-format msgid "Unsubscribed from %s" -msgstr "" +msgstr "Subscription a %s cancellate" #: lib/command.php:600 lib/command.php:623 msgid "Command not yet implemented." -msgstr "" +msgstr "Commando non ancora implementate." #: lib/command.php:603 msgid "Notification off." -msgstr "" +msgstr "Notification disactivate." #: lib/command.php:605 msgid "Can't turn off notification." -msgstr "" +msgstr "Non pote disactivar notification." #: lib/command.php:626 msgid "Notification on." -msgstr "" +msgstr "Notification activate." #: lib/command.php:628 msgid "Can't turn on notification." -msgstr "" +msgstr "Non pote activar notification." #: lib/command.php:641 msgid "Login command is disabled" -msgstr "" +msgstr "Le commando de apertura de session es disactivate" #: lib/command.php:652 #, php-format msgid "This link is useable only once, and is good for only 2 minutes: %s" msgstr "" +"Iste ligamine pote esser usate solmente un vice, e es valide durante " +"solmente 2 minutas: %s" #: lib/command.php:668 msgid "You are not subscribed to anyone." -msgstr "" +msgstr "Tu non es subscribite a alcuno." #: lib/command.php:670 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Tu es subscribite a iste persona:" +msgstr[1] "Tu es subscribite a iste personas:" #: lib/command.php:690 msgid "No one is subscribed to you." -msgstr "" +msgstr "Necuno es subscribite a te." #: lib/command.php:692 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Iste persona es subscribite a te:" +msgstr[1] "Iste personas es subscribite a te:" #: lib/command.php:712 msgid "You are not a member of any groups." -msgstr "" +msgstr "Tu non es membro de alcun gruppo." #: lib/command.php:714 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Tu es membro de iste gruppo:" +msgstr[1] "Tu es membro de iste gruppos:" #: lib/command.php:728 msgid "" @@ -5121,255 +5143,295 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"Commandos:\n" +"on - activar notificationes\n" +"off - disactivar notificationes\n" +"help - monstrar iste adjuta\n" +"follow - subscriber te al usator\n" +"groups - listar le gruppos del quales tu es membro\n" +"subscriptions - listar le personas que tu seque\n" +"subscribers - listar le personas qui te seque\n" +"leave - cancellar subscription al usator\n" +"d - diriger message al usator\n" +"get - obtener ultime nota del usator\n" +"whois - obtener info de profilo del usator\n" +"fav - adder ultime nota del usator como favorite\n" +"fav # - adder nota con le ID date como favorite\n" +"repeat # - repeter le nota con le ID date\n" +"repeat - repeter le ultime nota del usator\n" +"reply # - responder al nota con le ID date\n" +"reply - responder al ultime nota del usator\n" +"join - facer te membro del gruppo\n" +"login - obtener ligamine pro aperir session al interfacie web\n" +"drop - quitar gruppo\n" +"stats - obtener tu statisticas\n" +"stop - como 'off'\n" +"quit - como 'off'\n" +"sub - como 'follow'\n" +"unsub - como 'leave'\n" +"last - como 'get'\n" +"on - non ancora implementate.\n" +"off - non ancora implementate.\n" +"nudge - rememorar un usator de scriber alique.\n" +"invite - non ancora implementate.\n" +"track - non ancora implementate.\n" +"untrack - non ancora implementate.\n" +"track off - non ancora implementate.\n" +"untrack all - non ancora implementate.\n" +"tracks - non ancora implementate.\n" +"tracking - non ancora implementate.\n" #: lib/common.php:135 msgid "No configuration file found. " -msgstr "" +msgstr "Nulle file de configuration trovate. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "Io cercava files de configuration in le sequente locos: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." -msgstr "" +msgstr "Considera executar le installator pro reparar isto." #: lib/common.php:139 msgid "Go to the installer." -msgstr "" +msgstr "Ir al installator." #: lib/connectsettingsaction.php:110 msgid "IM" -msgstr "" +msgstr "MI" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "" +msgstr "Actualisationes per messageria instantanee (MI)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "" +msgstr "Actualisationes per SMS" #: lib/connectsettingsaction.php:120 -#, fuzzy msgid "Connections" -msgstr "Conversation" +msgstr "Connexiones" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Applicationes autorisate connectite" #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +msgstr "Error de base de datos" #: lib/designsettings.php:105 msgid "Upload file" -msgstr "" +msgstr "Incargar file" #: lib/designsettings.php:109 msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" +"Tu pote actualisar tu imagine de fundo personal. Le dimension maximal del " +"file es 2MB." #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "" +msgstr "Apparentia predefinite restaurate." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "" +msgstr "Disfavorir iste nota" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" -msgstr "" +msgstr "Favorir iste nota" #: lib/favorform.php:140 msgid "Favor" -msgstr "" +msgstr "Favorir" #: lib/feed.php:85 msgid "RSS 1.0" -msgstr "" +msgstr "RSS 1.0" #: lib/feed.php:87 msgid "RSS 2.0" -msgstr "" +msgstr "RSS 2.0" #: lib/feed.php:89 msgid "Atom" -msgstr "" +msgstr "Atom" #: lib/feed.php:91 msgid "FOAF" -msgstr "" +msgstr "Amico de un amico" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "Exportar datos" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "" +msgstr "Filtrar etiquettas" #: lib/galleryaction.php:131 msgid "All" -msgstr "" +msgstr "Totes" #: lib/galleryaction.php:139 msgid "Select tag to filter" -msgstr "" +msgstr "Selige etiquetta a filtrar" #: lib/galleryaction.php:140 msgid "Tag" -msgstr "" +msgstr "Etiquetta" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "" +msgstr "Selige etiquetta pro reducer lista" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Ir" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" -msgstr "" +msgstr "URL del pagina initial o blog del gruppo o topico" #: lib/groupeditform.php:168 msgid "Describe the group or topic" -msgstr "" +msgstr "Describe le gruppo o topico" #: lib/groupeditform.php:170 #, php-format msgid "Describe the group or topic in %d characters" -msgstr "" +msgstr "Describe le gruppo o topico in %d characteres" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" msgstr "" +"Loco del gruppo, si existe, como \"Citate, Provincia (o Region), Pais\"" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" msgstr "" +"Pseudonymos additional pro le gruppo, separate per commas o spatios, max %d" #: lib/groupnav.php:85 msgid "Group" -msgstr "" +msgstr "Gruppo" #: lib/groupnav.php:101 msgid "Blocked" -msgstr "" +msgstr "Blocate" #: lib/groupnav.php:102 #, php-format msgid "%s blocked users" -msgstr "" +msgstr "%s usatores blocate" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Modificar proprietates del gruppo %s" #: lib/groupnav.php:113 msgid "Logo" -msgstr "" +msgstr "Logotypo" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "" +msgstr "Adder o modificar logotypo de %s" #: lib/groupnav.php:120 #, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "Adder o modificar apparentia de %s" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" -msgstr "" +msgstr "Gruppos con le plus membros" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" -msgstr "" +msgstr "Gruppos con le plus messages" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "Etiquettas in le notas del gruppo %s" #: lib/htmloutputter.php:103 msgid "This page is not available in a media type you accept" -msgstr "" +msgstr "Iste pagina non es disponibile in un formato que tu accepta" #: lib/imagefile.php:75 #, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" +msgstr "Iste file es troppo grande. Le dimension maximal es %s." #: lib/imagefile.php:80 msgid "Partial upload." -msgstr "" +msgstr "Incargamento partial." #: lib/imagefile.php:88 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "" +msgstr "Error de systema durante le incargamento del file." #: lib/imagefile.php:96 msgid "Not an image or corrupt file." -msgstr "" +msgstr "Le file non es un imagine o es defecte." #: lib/imagefile.php:105 msgid "Unsupported image file format." -msgstr "" +msgstr "Formato de file de imagine non supportate." #: lib/imagefile.php:118 msgid "Lost our file." -msgstr "" +msgstr "File perdite." #: lib/imagefile.php:150 lib/imagefile.php:197 msgid "Unknown file type" -msgstr "" +msgstr "Typo de file incognite" #: lib/imagefile.php:217 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:219 msgid "kB" -msgstr "" +msgstr "KB" #: lib/jabber.php:220 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:400 -#, fuzzy, php-format +#, php-format msgid "Unknown inbox source %d." -msgstr "Lingua \"%s\" incognite" +msgstr "Fonte de cassa de entrata \"%s\" incognite" #: lib/joinform.php:114 msgid "Join" -msgstr "" +msgstr "Inscriber" #: lib/leaveform.php:114 msgid "Leave" -msgstr "" +msgstr "Quitar" #: lib/logingroupnav.php:80 msgid "Login with a username and password" -msgstr "" +msgstr "Aperir session con nomine de usator e contrasigno" #: lib/logingroupnav.php:86 msgid "Sign up for a new account" -msgstr "" +msgstr "Crear un nove conto" #: lib/mail.php:172 msgid "Email address confirmation" -msgstr "" +msgstr "Confirmation del adresse de e-mail" #: lib/mail.php:174 #, php-format @@ -5387,11 +5449,23 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"Salute %s,\n" +"\n" +"Alcuno entrava ante un momento iste adresse de e-mail in %s.\n" +"\n" +"Si isto esseva tu, e tu vole confirmar le adresse, usa le URL hic infra:\n" +"\n" +"%s\n" +"\n" +"Si non, simplemente ignora iste message.\n" +"\n" +"Gratias pro tu attention,\n" +"%s\n" #: lib/mail.php:236 #, php-format msgid "%1$s is now listening to your notices on %2$s." -msgstr "" +msgstr "%1$s seque ora tu notas in %2$s." #: lib/mail.php:241 #, php-format @@ -5407,16 +5481,26 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" +"%1$s seque ora tu notas in %2$s.\n" +"\n" +"%3$s\n" +"\n" +"%4$s%5$s%6$s\n" +"Cordialmente,\n" +"%7$s.\n" +"\n" +"----\n" +"Cambia tu adresse de e-mail o optiones de notification a %8$s\n" #: lib/mail.php:258 -#, fuzzy, php-format +#, php-format msgid "Bio: %s" -msgstr "Bio" +msgstr "Bio: %s" #: lib/mail.php:286 #, php-format msgid "New email address for posting to %s" -msgstr "" +msgstr "Nove adresse de e-mail pro publicar in %s" #: lib/mail.php:289 #, php-format @@ -5430,20 +5514,28 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" +"Tu ha un nove adresse pro publication in %1$s.\n" +"\n" +"Invia e-mail a %2$s pro publicar nove messages.\n" +"\n" +"Ulterior informationes se trova a %3$s.\n" +"\n" +"Cordialmente,\n" +"%4$s" #: lib/mail.php:413 #, php-format msgid "%s status" -msgstr "" +msgstr "Stato de %s" #: lib/mail.php:439 msgid "SMS confirmation" -msgstr "" +msgstr "Confirmation SMS" #: lib/mail.php:463 #, php-format msgid "You've been nudged by %s" -msgstr "" +msgstr "%s te ha pulsate" #: lib/mail.php:467 #, php-format @@ -5460,11 +5552,22 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) se demanda lo que tu face iste dies e te invita a scriber alique " +"de nove.\n" +"\n" +"Dunque face audir de te :)\n" +"\n" +"%3$s\n" +"\n" +"Non responde a iste message; le responsa non arrivara.\n" +"\n" +"Con salutes cordial,\n" +"%4$s\n" #: lib/mail.php:510 #, php-format msgid "New private message from %s" -msgstr "" +msgstr "Nove message private de %s" #: lib/mail.php:514 #, php-format @@ -5484,11 +5587,25 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" +"%1$s (%2$s) te ha inviate un message private:\n" +"\n" +"------------------------------------------------------\n" +"%3$s\n" +"------------------------------------------------------\n" +"\n" +"Tu pote responder a su message hic:\n" +"\n" +"%4$s\n" +"\n" +"Non responde per e-mail; le responsa non arrivara.\n" +"\n" +"Con salutes cordial,\n" +"%5$s\n" #: lib/mail.php:559 #, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "" +msgstr "%s (@%s) ha addite tu nota como favorite" #: lib/mail.php:561 #, php-format @@ -5510,11 +5627,28 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) addeva ante un momento tu nota de %2$s como un de su " +"favorites.\n" +"\n" +"Le URL de tu nota es:\n" +"\n" +"%3$s\n" +"\n" +"Le texto de tu nota es:\n" +"\n" +"%4$s\n" +"\n" +"Tu pote vider le lista del favorites de %1$s hic:\n" +"\n" +"%5$s\n" +"\n" +"Cordialmente,\n" +"%6$s\n" #: lib/mail.php:624 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +msgstr "%s (@%s) ha inviate un nota a tu attention" #: lib/mail.php:626 #, php-format @@ -5530,168 +5664,185 @@ msgid "" "\t%4$s\n" "\n" msgstr "" +"%1$s (@%9$s) inviava ante un momento un nota a tu attention (un 'responsa " +"@') in %2$s.\n" +"\n" +"Le nota es hic:\n" +"\n" +"%3$s\n" +"\n" +"Le texto:\n" +"\n" +"%4$s\n" +"\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "Solmente le usator pote leger su proprie cassas postal." #: lib/mailbox.php:139 msgid "" "You have no private messages. You can send private message to engage other " "users in conversation. People can send you messages for your eyes only." msgstr "" +"Tu non ha messages private. Tu pote inviar messages private pro ingagiar " +"altere usatores in conversation. Altere personas pote inviar te messages que " +"solmente tu pote leger." #: lib/mailbox.php:227 lib/noticelist.php:477 msgid "from" -msgstr "" +msgstr "de" #: lib/mailhandler.php:37 msgid "Could not parse message." -msgstr "" +msgstr "Non comprendeva le syntaxe del message." #: lib/mailhandler.php:42 msgid "Not a registered user." -msgstr "" +msgstr "Non un usator registrate." #: lib/mailhandler.php:46 msgid "Sorry, that is not your incoming email address." -msgstr "" +msgstr "Pardono, isto non es tu adresse de e-mail entrante." #: lib/mailhandler.php:50 msgid "Sorry, no incoming email allowed." -msgstr "" +msgstr "Pardono, le reception de e-mail non es permittite." #: lib/mailhandler.php:228 -#, fuzzy, php-format +#, php-format msgid "Unsupported message type: %s" -msgstr "Formato non supportate." +msgstr "Typo de message non supportate: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" +"Un error de base de datos occurreva durante le salveguarda de tu file. Per " +"favor reproba." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." -msgstr "" +msgstr "Le file incargate excede le directiva upload_max_filesize in php.ini." #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" +"Le file incargate excede le directiva MAX_FILE_SIZE specificate in le " +"formulario HTML." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "Le file incargate ha solmente essite incargate partialmente." #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "Manca un dossier temporari." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "Falleva de scriber le file in disco." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +msgstr "Incargamento de file stoppate per un extension." #: lib/mediafile.php:179 lib/mediafile.php:216 msgid "File exceeds user's quota." -msgstr "" +msgstr "File excede quota del usator." #: lib/mediafile.php:196 lib/mediafile.php:233 msgid "File could not be moved to destination directory." -msgstr "" +msgstr "File non poteva esser displaciate in le directorio de destination." #: lib/mediafile.php:201 lib/mediafile.php:237 -#, fuzzy msgid "Could not determine file's MIME type." -msgstr "Non poteva determinar le usator de origine." +msgstr "Non poteva determinar le typo MIME del file." #: lib/mediafile.php:270 #, php-format msgid " Try using another %s format." -msgstr "" +msgstr " Tenta usar un altere formato %s." #: lib/mediafile.php:275 #, php-format msgid "%s is not a supported file type on this server." -msgstr "" +msgstr "%s non es un typo de file supportate in iste servitor." #: lib/messageform.php:120 msgid "Send a direct notice" -msgstr "" +msgstr "Inviar un nota directe" #: lib/messageform.php:146 msgid "To" -msgstr "" +msgstr "A" #: lib/messageform.php:159 lib/noticeform.php:185 msgid "Available characters" -msgstr "" +msgstr "Characteres disponibile" #: lib/noticeform.php:160 msgid "Send a notice" -msgstr "" +msgstr "Inviar un nota" #: lib/noticeform.php:173 #, php-format msgid "What's up, %s?" -msgstr "" +msgstr "Como sta, %s?" #: lib/noticeform.php:192 msgid "Attach" -msgstr "" +msgstr "Annexar" #: lib/noticeform.php:196 msgid "Attach a file" -msgstr "" +msgstr "Annexar un file" #: lib/noticeform.php:212 -#, fuzzy msgid "Share my location" -msgstr "Non poteva salveguardar le preferentias de loco." +msgstr "Divulgar mi loco" #: lib/noticeform.php:215 -#, fuzzy msgid "Do not share my location" -msgstr "Non poteva salveguardar le preferentias de loco." +msgstr "Non divulgar mi loco" #: lib/noticeform.php:216 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" +"Pardono, le obtention de tu geolocalisation prende plus tempore que " +"previste. Per favor reproba plus tarde." #: lib/noticelist.php:428 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -msgstr "" +msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" #: lib/noticelist.php:429 msgid "N" -msgstr "" +msgstr "N" #: lib/noticelist.php:429 msgid "S" -msgstr "" +msgstr "S" #: lib/noticelist.php:430 msgid "E" -msgstr "" +msgstr "E" #: lib/noticelist.php:430 msgid "W" -msgstr "" +msgstr "W" #: lib/noticelist.php:436 msgid "at" -msgstr "" +msgstr "a" #: lib/noticelist.php:547 msgid "in context" -msgstr "" +msgstr "in contexto" #: lib/noticelist.php:572 msgid "Repeated by" @@ -5699,151 +5850,148 @@ msgstr "Repetite per" #: lib/noticelist.php:598 msgid "Reply to this notice" -msgstr "" +msgstr "Responder a iste nota" #: lib/noticelist.php:599 msgid "Reply" -msgstr "" +msgstr "Responder" #: lib/noticelist.php:641 -#, fuzzy msgid "Notice repeated" -msgstr "Nota delite." +msgstr "Nota repetite" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "" +msgstr "Pulsar iste usator" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "" +msgstr "Pulsar" #: lib/nudgeform.php:128 msgid "Send a nudge to this user" -msgstr "" +msgstr "Inviar un pulsata a iste usator" #: lib/oauthstore.php:283 msgid "Error inserting new profile" -msgstr "" +msgstr "Error durante le insertion del nove profilo" #: lib/oauthstore.php:291 msgid "Error inserting avatar" -msgstr "" +msgstr "Error durante le insertion del avatar" #: lib/oauthstore.php:311 msgid "Error inserting remote profile" -msgstr "" +msgstr "Error durante le insertion del profilo remote" #: lib/oauthstore.php:345 msgid "Duplicate notice" -msgstr "" +msgstr "Duplicar nota" #: lib/oauthstore.php:465 lib/subs.php:48 msgid "You have been banned from subscribing." -msgstr "" +msgstr "Tu ha essite blocate del subscription." #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." -msgstr "" +msgstr "Non poteva inserer nove subscription." #: lib/personalgroupnav.php:99 msgid "Personal" -msgstr "" +msgstr "Personal" #: lib/personalgroupnav.php:104 msgid "Replies" -msgstr "" +msgstr "Responsas" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "" +msgstr "Favorites" #: lib/personalgroupnav.php:125 msgid "Inbox" -msgstr "" +msgstr "Cassa de entrata" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "" +msgstr "Tu messages recipite" #: lib/personalgroupnav.php:130 msgid "Outbox" -msgstr "" +msgstr "Cassa de exito" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "" +msgstr "Tu messages inviate" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "Etiquettas in le notas de %s" #: lib/plugin.php:114 -#, fuzzy msgid "Unknown" -msgstr "Action incognite" +msgstr "Incognite" #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82 msgid "Subscriptions" -msgstr "" +msgstr "Subscriptiones" #: lib/profileaction.php:126 msgid "All subscriptions" -msgstr "" +msgstr "Tote le subscriptiones" #: lib/profileaction.php:140 lib/profileaction.php:201 lib/subgroupnav.php:90 msgid "Subscribers" -msgstr "" +msgstr "Subscriptores" #: lib/profileaction.php:157 msgid "All subscribers" -msgstr "" +msgstr "Tote le subscriptores" #: lib/profileaction.php:178 msgid "User ID" -msgstr "" +msgstr "ID del usator" #: lib/profileaction.php:183 msgid "Member since" -msgstr "" +msgstr "Membro depost" #: lib/profileaction.php:245 msgid "All groups" -msgstr "" +msgstr "Tote le gruppos" #: lib/profileformaction.php:123 msgid "No return-to arguments." -msgstr "" +msgstr "Nulle parametro return-to." #: lib/profileformaction.php:137 msgid "Unimplemented method." -msgstr "" +msgstr "Methodo non implementate." #: lib/publicgroupnav.php:78 msgid "Public" -msgstr "" +msgstr "Public" #: lib/publicgroupnav.php:82 msgid "User groups" -msgstr "" +msgstr "Gruppos de usatores" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" -msgstr "" +msgstr "Etiquettas recente" #: lib/publicgroupnav.php:88 msgid "Featured" -msgstr "" +msgstr "In evidentia" #: lib/publicgroupnav.php:92 msgid "Popular" -msgstr "" +msgstr "Popular" #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "Repeter iste nota" +msgstr "Repeter iste nota?" #: lib/repeatform.php:132 msgid "Repeat this notice" @@ -5851,228 +5999,228 @@ msgstr "Repeter iste nota" #: lib/router.php:665 msgid "No single user defined for single-user mode." -msgstr "" +msgstr "Nulle signule usator definite pro le modo de singule usator." #: lib/sandboxform.php:67 msgid "Sandbox" -msgstr "" +msgstr "Cassa de sablo" #: lib/sandboxform.php:78 msgid "Sandbox this user" -msgstr "" +msgstr "Mitter iste usator in le cassa de sablo" #: lib/searchaction.php:120 msgid "Search site" -msgstr "" +msgstr "Cercar in sito" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "" +msgstr "Parola(s)-clave" #: lib/searchaction.php:162 msgid "Search help" -msgstr "" +msgstr "Adjuta super le recerca" #: lib/searchgroupnav.php:80 msgid "People" -msgstr "" +msgstr "Personas" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "" +msgstr "Cercar personas in iste sito" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "" +msgstr "Cercar in contento de notas" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "" +msgstr "Cercar gruppos in iste sito" #: lib/section.php:89 msgid "Untitled section" -msgstr "" +msgstr "Section sin titulo" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "Plus…" #: lib/silenceform.php:67 msgid "Silence" -msgstr "" +msgstr "Silentiar" #: lib/silenceform.php:78 msgid "Silence this user" -msgstr "" +msgstr "Silentiar iste usator" #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" -msgstr "" +msgstr "Personas que %s seque" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "Personas qui seque %s" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "" +msgstr "Gruppos del quales %s es membro" #: lib/subs.php:52 msgid "Already subscribed!" -msgstr "" +msgstr "Ja subscribite!" #: lib/subs.php:56 msgid "User has blocked you." -msgstr "" +msgstr "Le usator te ha blocate." #: lib/subs.php:63 msgid "Could not subscribe." -msgstr "" +msgstr "Non poteva subscriber te." #: lib/subs.php:82 msgid "Could not subscribe other to you." -msgstr "" +msgstr "Non poteva subcriber altere persona a te." #: lib/subs.php:137 msgid "Not subscribed!" -msgstr "" +msgstr "Non subscribite!" #: lib/subs.php:142 msgid "Couldn't delete self-subscription." -msgstr "" +msgstr "Non poteva deler auto-subscription." #: lib/subs.php:158 msgid "Couldn't delete subscription." -msgstr "" +msgstr "Non poteva deler subscription." #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "Nube de etiquettas de personas como auto-etiquettate" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "Nube de etiquetta de personas como etiquettate" #: lib/tagcloudsection.php:56 msgid "None" -msgstr "" +msgstr "Nulle" #: lib/topposterssection.php:74 msgid "Top posters" -msgstr "" +msgstr "Qui scribe le plus" #: lib/unsandboxform.php:69 msgid "Unsandbox" -msgstr "" +msgstr "Retirar del cassa de sablo" #: lib/unsandboxform.php:80 msgid "Unsandbox this user" -msgstr "" +msgstr "Retirar iste usator del cassa de sablo" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "Dissilentiar" #: lib/unsilenceform.php:78 msgid "Unsilence this user" -msgstr "" +msgstr "Non plus silentiar iste usator" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "" +msgstr "Cancellar subscription a iste usator" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "" +msgstr "Cancellar subscription" #: lib/userprofile.php:116 msgid "Edit Avatar" -msgstr "" +msgstr "Modificar avatar" #: lib/userprofile.php:236 msgid "User actions" -msgstr "" +msgstr "Actiones de usator" #: lib/userprofile.php:248 msgid "Edit profile settings" -msgstr "" +msgstr "Modificar configuration de profilo" #: lib/userprofile.php:249 msgid "Edit" -msgstr "" +msgstr "Modificar" #: lib/userprofile.php:272 msgid "Send a direct message to this user" -msgstr "" +msgstr "Inviar un message directe a iste usator" #: lib/userprofile.php:273 msgid "Message" -msgstr "" +msgstr "Message" #: lib/userprofile.php:311 msgid "Moderate" -msgstr "" +msgstr "Moderar" -#: lib/util.php:867 +#: lib/util.php:870 msgid "a few seconds ago" -msgstr "" +msgstr "alcun secundas retro" -#: lib/util.php:869 +#: lib/util.php:872 msgid "about a minute ago" -msgstr "" +msgstr "circa un minuta retro" -#: lib/util.php:871 +#: lib/util.php:874 #, php-format msgid "about %d minutes ago" -msgstr "" +msgstr "circa %d minutas retro" -#: lib/util.php:873 +#: lib/util.php:876 msgid "about an hour ago" -msgstr "" +msgstr "circa un hora retro" -#: lib/util.php:875 +#: lib/util.php:878 #, php-format msgid "about %d hours ago" -msgstr "" +msgstr "circa %d horas retro" -#: lib/util.php:877 +#: lib/util.php:880 msgid "about a day ago" -msgstr "" +msgstr "circa un die retro" -#: lib/util.php:879 +#: lib/util.php:882 #, php-format msgid "about %d days ago" -msgstr "" +msgstr "circa %d dies retro" -#: lib/util.php:881 +#: lib/util.php:884 msgid "about a month ago" -msgstr "" +msgstr "circa un mense retro" -#: lib/util.php:883 +#: lib/util.php:886 #, php-format msgid "about %d months ago" -msgstr "" +msgstr "circa %d menses retro" -#: lib/util.php:885 +#: lib/util.php:888 msgid "about a year ago" -msgstr "" +msgstr "circa un anno retro" #: lib/webcolor.php:82 #, php-format msgid "%s is not a valid color!" -msgstr "" +msgstr "%s non es un color valide!" #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "" +msgstr "%s non es un color valide! Usa 3 o 6 characteres hexadecimal." #: lib/xmppmanager.php:402 #, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" +msgstr "Message troppo longe - maximo es %1$d characteres, tu inviava %2$d." diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index 63432e0dc2..e885830258 100644 --- a/locale/is/LC_MESSAGES/statusnet.po +++ b/locale/is/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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" diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index b9a92a4bfe..37ac228b23 100644 --- a/locale/it/LC_MESSAGES/statusnet.po +++ b/locale/it/LC_MESSAGES/statusnet.po @@ -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 %3$s your %4$s account data. You should only " "give access to your %4$s account to third parties you trust." msgstr "" +"L'applicazione %1$s di %2$s vorrebbe poter " +"%3$s 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" diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index 82e67f8046..3063f95389 100644 --- a/locale/ja/LC_MESSAGES/statusnet.po +++ b/locale/ja/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 年前" diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index d3bd136626..7be2acfca1 100644 --- a/locale/ko/LC_MESSAGES/statusnet.po +++ b/locale/ko/LC_MESSAGES/statusnet.po @@ -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년 전" diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 9aa7d12a1b..92209e72ea 100644 --- a/locale/mk/LC_MESSAGES/statusnet.po +++ b/locale/mk/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 "пред една година" diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index 287b95b35a..ab74ad1dce 100644 --- a/locale/nb/LC_MESSAGES/statusnet.po +++ b/locale/nb/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index cad7721554..b1a54d06a2 100644 --- a/locale/nl/LC_MESSAGES/statusnet.po +++ b/locale/nl/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index 5a6d256b96..e3e2cf80ed 100644 --- a/locale/nn/LC_MESSAGES/statusnet.po +++ b/locale/nn/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index 0931925530..a13f6362b4 100644 --- a/locale/pl/LC_MESSAGES/statusnet.po +++ b/locale/pl/LC_MESSAGES/statusnet.po @@ -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 \n" "Language-Team: Polish \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" diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index 3258ec53cd..a2c8fd60cc 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index 5470616fe9..b9ffc361b4 100644 --- a/locale/pt_BR/LC_MESSAGES/statusnet.po +++ b/locale/pt_BR/LC_MESSAGES/statusnet.po @@ -2,6 +2,7 @@ # # Author@translatewiki.net: Aracnus # Author@translatewiki.net: Ewout +# Author@translatewiki.net: 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 %3$s your %4$s account data. You should only " "give access to your %4$s account to third parties you trust." msgstr "" +"A aplicação %1$s por %2$s solicita a " +"permissão para %3$s 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" diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index caa48b9609..da1345a0d6 100644 --- a/locale/ru/LC_MESSAGES/statusnet.po +++ b/locale/ru/LC_MESSAGES/statusnet.po @@ -12,12 +12,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 "около года назад" diff --git a/locale/statusnet.po b/locale/statusnet.po index 987e4ad23d..d1ee56f2ca 100644 --- a/locale/statusnet.po +++ b/locale/statusnet.po @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index a2645e8bb2..a0d407c5c8 100644 --- a/locale/sv/LC_MESSAGES/statusnet.po +++ b/locale/sv/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index eee6e39e48..85719532b8 100644 --- a/locale/te/LC_MESSAGES/statusnet.po +++ b/locale/te/LC_MESSAGES/statusnet.po @@ -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 "ఒక సంవత్సరం క్రితం" diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index c41e87f1ba..5368680c6b 100644 --- a/locale/tr/LC_MESSAGES/statusnet.po +++ b/locale/tr/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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" diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index 9f8e8b9419..5f5fa846e6 100644 --- a/locale/uk/LC_MESSAGES/statusnet.po +++ b/locale/uk/LC_MESSAGES/statusnet.po @@ -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 "рік тому" diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index 696587e5fd..cf152eff5f 100644 --- a/locale/vi/LC_MESSAGES/statusnet.po +++ b/locale/vi/LC_MESSAGES/statusnet.po @@ -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" diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index f643a788d9..a7aeec7ca5 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -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 "一年前" diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index 6a384eac16..815f95eacd 100644 --- a/locale/zh_TW/LC_MESSAGES/statusnet.po +++ b/locale/zh_TW/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-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 "" diff --git a/plugins/FeedSub/FeedSubPlugin.php b/plugins/FeedSub/FeedSubPlugin.php deleted file mode 100644 index e49e2a648a..0000000000 --- a/plugins/FeedSub/FeedSubPlugin.php +++ /dev/null @@ -1,115 +0,0 @@ - -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 . - */ - -/** - * @package FeedSubPlugin - * @maintainer Brion Vibber - */ - -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; - } -} diff --git a/plugins/FeedSub/feedinfo.php b/plugins/FeedSub/feedinfo.php deleted file mode 100644 index b166bd6e12..0000000000 --- a/plugins/FeedSub/feedinfo.php +++ /dev/null @@ -1,268 +0,0 @@ -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"); - } - } -} diff --git a/plugins/FeedSub/feedinfo.sql b/plugins/FeedSub/feedinfo.sql deleted file mode 100644 index e9b53d26eb..0000000000 --- a/plugins/FeedSub/feedinfo.sql +++ /dev/null @@ -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; diff --git a/plugins/MemcachePlugin.php b/plugins/MemcachePlugin.php index 2bc4b892bd..c5e74fb416 100644 --- a/plugins/MemcachePlugin.php +++ b/plugins/MemcachePlugin.php @@ -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', diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php new file mode 100644 index 0000000000..8444c3d73d --- /dev/null +++ b/plugins/OStatus/OStatusPlugin.php @@ -0,0 +1,276 @@ + +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 . + */ + +/** + * @package FeedSubPlugin + * @maintainer Brion Vibber + */ + +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 .= $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; + } +} diff --git a/plugins/FeedSub/README b/plugins/OStatus/README similarity index 100% rename from plugins/FeedSub/README rename to plugins/OStatus/README diff --git a/plugins/FeedSub/actions/feedsubsettings.php b/plugins/OStatus/actions/feedsubsettings.php similarity index 83% rename from plugins/FeedSub/actions/feedsubsettings.php rename to plugins/OStatus/actions/feedsubsettings.php index 0fba20a393..6933c9bf21 100644 --- a/plugins/FeedSub/actions/feedsubsettings.php +++ b/plugins/OStatus/actions/feedsubsettings.php @@ -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) { diff --git a/plugins/OStatus/actions/hostmeta.php b/plugins/OStatus/actions/hostmeta.php new file mode 100644 index 0000000000..850b8a0fe8 --- /dev/null +++ b/plugins/OStatus/actions/hostmeta.php @@ -0,0 +1,42 @@ +. + */ + +/** + * @package OStatusPlugin + * @maintainer James Walker + */ + +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); + } +} diff --git a/plugins/OStatus/actions/ostatusinit.php b/plugins/OStatus/actions/ostatusinit.php new file mode 100644 index 0000000000..bac2c4d438 --- /dev/null +++ b/plugins/OStatus/actions/ostatusinit.php @@ -0,0 +1,128 @@ +. + */ + +/** + * @package OStatusPlugin + * @maintainer James Walker + */ + +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'); + } + +} \ No newline at end of file diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php new file mode 100644 index 0000000000..9774286fdd --- /dev/null +++ b/plugins/OStatus/actions/ostatussub.php @@ -0,0 +1,226 @@ +. + */ + +/** + * @package OStatusPlugin + * @maintainer James Walker + */ + +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.'); + } + } + + +} \ No newline at end of file diff --git a/plugins/FeedSub/actions/feedsubcallback.php b/plugins/OStatus/actions/pushcallback.php similarity index 63% rename from plugins/FeedSub/actions/feedsubcallback.php rename to plugins/OStatus/actions/pushcallback.php index 0c4280c1fa..2601a377a0 100644 --- a/plugins/FeedSub/actions/feedsubcallback.php +++ b/plugins/OStatus/actions/pushcallback.php @@ -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; } } diff --git a/plugins/OStatus/actions/pushhub.php b/plugins/OStatus/actions/pushhub.php new file mode 100644 index 0000000000..901c18f702 --- /dev/null +++ b/plugins/OStatus/actions/pushhub.php @@ -0,0 +1,176 @@ +. + */ + +/** + * Integrated PuSH hub; lets us only ping them what need it. + * @package Hub + * @maintainer Brion Vibber + */ + +/** + + +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); + } +} + diff --git a/plugins/OStatus/actions/salmon.php b/plugins/OStatus/actions/salmon.php new file mode 100644 index 0000000000..b616027a93 --- /dev/null +++ b/plugins/OStatus/actions/salmon.php @@ -0,0 +1,81 @@ +. + */ + +/** + * @package OStatusPlugin + * @author James Walker + */ + +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: + } + } +} diff --git a/plugins/OStatus/actions/webfinger.php b/plugins/OStatus/actions/webfinger.php new file mode 100644 index 0000000000..75ba16638b --- /dev/null +++ b/plugins/OStatus/actions/webfinger.php @@ -0,0 +1,77 @@ +. + */ + +/** + * @package OStatusPlugin + * @maintainer James Walker + */ + +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(); + } + +} diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php new file mode 100644 index 0000000000..7071ee5b4f --- /dev/null +++ b/plugins/OStatus/classes/HubSub.php @@ -0,0 +1,272 @@ +. + */ + +/** + * PuSH feed subscription record + * @package Hub + * @author Brion Vibber + */ +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; + } + } +} + diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php new file mode 100644 index 0000000000..733d8843b8 --- /dev/null +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -0,0 +1,644 @@ +. + */ + +/** + * @package FeedSubPlugin + * @maintainer Brion Vibber + */ + +/* +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"); + } + } +} diff --git a/plugins/FeedSub/extlib/README b/plugins/OStatus/extlib/README similarity index 100% rename from plugins/FeedSub/extlib/README rename to plugins/OStatus/extlib/README diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser.php b/plugins/OStatus/extlib/XML/Feed/Parser.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser.php rename to plugins/OStatus/extlib/XML/Feed/Parser.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Atom.php b/plugins/OStatus/extlib/XML/Feed/Parser/Atom.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/Atom.php rename to plugins/OStatus/extlib/XML/Feed/Parser/Atom.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/AtomElement.php b/plugins/OStatus/extlib/XML/Feed/Parser/AtomElement.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/AtomElement.php rename to plugins/OStatus/extlib/XML/Feed/Parser/AtomElement.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Exception.php b/plugins/OStatus/extlib/XML/Feed/Parser/Exception.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/Exception.php rename to plugins/OStatus/extlib/XML/Feed/Parser/Exception.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS09.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS09.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS09.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09Element.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS09Element.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS09Element.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS09Element.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS1.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS1.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS1.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS11.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS11.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS11.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11Element.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS11Element.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS11Element.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS11Element.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1Element.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS1Element.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS1Element.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS1Element.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS2.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS2.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS2.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2Element.php b/plugins/OStatus/extlib/XML/Feed/Parser/RSS2Element.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/RSS2Element.php rename to plugins/OStatus/extlib/XML/Feed/Parser/RSS2Element.php diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Type.php b/plugins/OStatus/extlib/XML/Feed/Parser/Type.php similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/Parser/Type.php rename to plugins/OStatus/extlib/XML/Feed/Parser/Type.php diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-entryonly.xml b/plugins/OStatus/extlib/XML/Feed/samples/atom10-entryonly.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/atom10-entryonly.xml rename to plugins/OStatus/extlib/XML/Feed/samples/atom10-entryonly.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example1.xml b/plugins/OStatus/extlib/XML/Feed/samples/atom10-example1.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/atom10-example1.xml rename to plugins/OStatus/extlib/XML/Feed/samples/atom10-example1.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example2.xml b/plugins/OStatus/extlib/XML/Feed/samples/atom10-example2.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/atom10-example2.xml rename to plugins/OStatus/extlib/XML/Feed/samples/atom10-example2.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/delicious.feed b/plugins/OStatus/extlib/XML/Feed/samples/delicious.feed similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/delicious.feed rename to plugins/OStatus/extlib/XML/Feed/samples/delicious.feed diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/flickr.feed b/plugins/OStatus/extlib/XML/Feed/samples/flickr.feed similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/flickr.feed rename to plugins/OStatus/extlib/XML/Feed/samples/flickr.feed diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/grwifi-atom.xml b/plugins/OStatus/extlib/XML/Feed/samples/grwifi-atom.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/grwifi-atom.xml rename to plugins/OStatus/extlib/XML/Feed/samples/grwifi-atom.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/hoder.xml b/plugins/OStatus/extlib/XML/Feed/samples/hoder.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/hoder.xml rename to plugins/OStatus/extlib/XML/Feed/samples/hoder.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/illformed_atom10.xml b/plugins/OStatus/extlib/XML/Feed/samples/illformed_atom10.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/illformed_atom10.xml rename to plugins/OStatus/extlib/XML/Feed/samples/illformed_atom10.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-complete.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss091-complete.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss091-complete.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss091-complete.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-international.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss091-international.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss091-international.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss091-international.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-simple.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss091-simple.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss091-simple.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss091-simple.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss092-sample.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss092-sample.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss092-sample.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss092-sample.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example1.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss10-example1.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss10-example1.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss10-example1.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example2.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss10-example2.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss10-example2.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss10-example2.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss2sample.xml b/plugins/OStatus/extlib/XML/Feed/samples/rss2sample.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/rss2sample.xml rename to plugins/OStatus/extlib/XML/Feed/samples/rss2sample.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/sixapart-jp.xml b/plugins/OStatus/extlib/XML/Feed/samples/sixapart-jp.xml similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/sixapart-jp.xml rename to plugins/OStatus/extlib/XML/Feed/samples/sixapart-jp.xml diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/technorati.feed b/plugins/OStatus/extlib/XML/Feed/samples/technorati.feed similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/samples/technorati.feed rename to plugins/OStatus/extlib/XML/Feed/samples/technorati.feed diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/atom.rnc b/plugins/OStatus/extlib/XML/Feed/schemas/atom.rnc similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/schemas/atom.rnc rename to plugins/OStatus/extlib/XML/Feed/schemas/atom.rnc diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/rss10.rnc b/plugins/OStatus/extlib/XML/Feed/schemas/rss10.rnc similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/schemas/rss10.rnc rename to plugins/OStatus/extlib/XML/Feed/schemas/rss10.rnc diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/rss11.rnc b/plugins/OStatus/extlib/XML/Feed/schemas/rss11.rnc similarity index 100% rename from plugins/FeedSub/extlib/XML/Feed/schemas/rss11.rnc rename to plugins/OStatus/extlib/XML/Feed/schemas/rss11.rnc diff --git a/plugins/FeedSub/extlib/xml-feed-parser-bug-16416.patch b/plugins/OStatus/extlib/xml-feed-parser-bug-16416.patch similarity index 100% rename from plugins/FeedSub/extlib/xml-feed-parser-bug-16416.patch rename to plugins/OStatus/extlib/xml-feed-parser-bug-16416.patch diff --git a/plugins/FeedSub/images/24px-Feed-icon.svg.png b/plugins/OStatus/images/24px-Feed-icon.svg.png similarity index 100% rename from plugins/FeedSub/images/24px-Feed-icon.svg.png rename to plugins/OStatus/images/24px-Feed-icon.svg.png diff --git a/plugins/FeedSub/images/48px-Feed-icon.svg.png b/plugins/OStatus/images/48px-Feed-icon.svg.png similarity index 100% rename from plugins/FeedSub/images/48px-Feed-icon.svg.png rename to plugins/OStatus/images/48px-Feed-icon.svg.png diff --git a/plugins/FeedSub/images/96px-Feed-icon.svg.png b/plugins/OStatus/images/96px-Feed-icon.svg.png similarity index 100% rename from plugins/FeedSub/images/96px-Feed-icon.svg.png rename to plugins/OStatus/images/96px-Feed-icon.svg.png diff --git a/plugins/FeedSub/images/README b/plugins/OStatus/images/README similarity index 100% rename from plugins/FeedSub/images/README rename to plugins/OStatus/images/README diff --git a/plugins/OStatus/lib/activity.php b/plugins/OStatus/lib/activity.php new file mode 100644 index 0000000000..36e2279134 --- /dev/null +++ b/plugins/OStatus/lib/activity.php @@ -0,0 +1,85 @@ +. + * + * @category OStatus + * @package StatusNet + * @author Evan Prodromou + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +class ActivityNoun +{ + const ARTICLE = 'http://activitystrea.ms/schema/1.0/article'; + const BLOGENTRY = 'http://activitystrea.ms/schema/1.0/blog-entry'; + const NOTE = 'http://activitystrea.ms/schema/1.0/note'; + const STATUS = 'http://activitystrea.ms/schema/1.0/status'; + const FILE = 'http://activitystrea.ms/schema/1.0/file'; + const PHOTO = 'http://activitystrea.ms/schema/1.0/photo'; + const ALBUM = 'http://activitystrea.ms/schema/1.0/photo-album'; + const PLAYLIST = 'http://activitystrea.ms/schema/1.0/playlist'; + const VIDEO = 'http://activitystrea.ms/schema/1.0/video'; + const AUDIO = 'http://activitystrea.ms/schema/1.0/audio'; + const BOOKMARK = 'http://activitystrea.ms/schema/1.0/bookmark'; + const PERSON = 'http://activitystrea.ms/schema/1.0/person'; + const GROUP = 'http://activitystrea.ms/schema/1.0/group'; + const PLACE = 'http://activitystrea.ms/schema/1.0/place'; + const COMMENT = 'http://activitystrea.ms/schema/1.0/comment'; // tea + + public $type; + public $id; + public $title; + public $summary; + public $content; +} + +class Activity +{ + const NAMESPACE = 'http://activitystrea.ms/schema/1.0/'; + + const POST = 'http://activitystrea.ms/schema/1.0/post'; + const SHARE = 'http://activitystrea.ms/schema/1.0/share'; + const SAVE = 'http://activitystrea.ms/schema/1.0/save'; + const FAVORITE = 'http://activitystrea.ms/schema/1.0/favorite'; + const PLAY = 'http://activitystrea.ms/schema/1.0/play'; + const FOLLOW = 'http://activitystrea.ms/schema/1.0/follow'; + const FRIEND = 'http://activitystrea.ms/schema/1.0/make-friend'; + const JOIN = 'http://activitystrea.ms/schema/1.0/join'; + const TAG = 'http://activitystrea.ms/schema/1.0/tag'; + + public $actor; // an ActivityNoun + public $verb; // a string (the URL) + public $object; // an ActivityNoun + public $target; // an ActivityNoun + + static function fromAtomEntry($domEntry) + { + } + + function toAtomEntry() + { + } +} diff --git a/plugins/FeedSub/feeddiscovery.php b/plugins/OStatus/lib/feeddiscovery.php similarity index 85% rename from plugins/FeedSub/feeddiscovery.php rename to plugins/OStatus/lib/feeddiscovery.php index 35edaca33a..39985fc902 100644 --- a/plugins/FeedSub/feeddiscovery.php +++ b/plugins/OStatus/lib/feeddiscovery.php @@ -48,6 +48,18 @@ class FeedSubNoFeedException extends FeedSubException { } +/** + * Given a web page or feed URL, discover the final location of the feed + * and return its current contents. + * + * @example + * $feed = new FeedDiscovery(); + * if ($feed->discoverFromURL($url)) { + * print $feed->uri; + * print $feed->type; + * processFeed($feed->body); + * } + */ class FeedDiscovery { public $uri; @@ -64,7 +76,7 @@ class FeedDiscovery /** * @param string $url - * @param bool $htmlOk + * @param bool $htmlOk pass false here if you don't want to follow web pages. * @return string with validated URL * @throws FeedSubBadURLException * @throws FeedSubBadHtmlException @@ -156,7 +168,13 @@ class FeedDiscovery } // Ok... now on to the links! + // Types listed in order of priority -- we'll prefer Atom if available. // @fixme merge with the munger link checks + $feeds = array( + 'application/atom+xml' => false, + 'application/rss+xml' => false, + ); + $nodes = $dom->getElementsByTagName('link'); for ($i = 0; $i < $nodes->length; $i++) { $node = $nodes->item($i); @@ -169,17 +187,21 @@ class FeedDiscovery $type = trim($type->value); $href = trim($href->value); - $feedTypes = array( - 'application/rss+xml', - 'application/atom+xml', - ); - if (trim($rel) == 'alternate' && in_array($type, $feedTypes)) { - return $this->resolveURI($href, $base); + if (trim($rel) == 'alternate' && array_key_exists($type, $feeds) && empty($feeds[$type])) { + // Save the first feed found of each type... + $feeds[$type] = $this->resolveURI($href, $base); } } } } + // Return the highest-priority feed found + foreach ($feeds as $type => $url) { + if ($url) { + return $url; + } + } + return false; } diff --git a/plugins/FeedSub/feedmunger.php b/plugins/OStatus/lib/feedmunger.php similarity index 56% rename from plugins/FeedSub/feedmunger.php rename to plugins/OStatus/lib/feedmunger.php index f3618b8eb0..c895b6ce24 100644 --- a/plugins/FeedSub/feedmunger.php +++ b/plugins/OStatus/lib/feedmunger.php @@ -30,8 +30,8 @@ class FeedSubPreviewNotice extends Notice function __construct($profile) { - //parent::__construct(); // uhhh? $this->profile = $profile; + $this->profile_id = 0; } function getProfile() @@ -56,14 +56,19 @@ class FeedSubPreviewProfile extends Profile { function getAvatar($width, $height=null) { - return new FeedSubPreviewAvatar($width, $height); + return new FeedSubPreviewAvatar($width, $height, $this->avatar); } } class FeedSubPreviewAvatar extends Avatar { + function __construct($width, $height, $remote) + { + $this->remoteImage = $remote; + } + function displayUrl() { - return common_path('plugins/FeedSub/images/48px-Feed-icon.svg.png'); + return $this->remoteImage; } } @@ -78,13 +83,17 @@ class FeedMunger $this->url = $url; } - function feedinfo() + function ostatusProfile() { - $feedinfo = new Feedinfo(); - $feedinfo->feeduri = $this->url; - $feedinfo->homeuri = $this->feed->link; - $feedinfo->huburi = $this->getHubLink(); - return $feedinfo; + $profile = new Ostatus_profile(); + $profile->feeduri = $this->url; + $profile->homeuri = $this->feed->link; + $profile->huburi = $this->getHubLink(); + $salmon = $this->getSalmonLink(); + if ($salmon) { + $profile->salmonuri = $salmon; + } + return $profile; } function getAtomLink($item, $attribs=array()) @@ -150,6 +159,33 @@ class FeedMunger return $this->getAtomLink($this->feed, array('rel' => 'hub')); } + function getSalmonLink() + { + return $this->getAtomLink($this->feed, array('rel' => 'salmon')); + } + + function getSelfLink() + { + return $this->getAtomLink($this->feed, array('rel' => 'self')); + } + + /** + * Get an appropriate avatar image source URL, if available. + * @return mixed string or false + */ + function getAvatar() + { + $logo = $this->feed->logo; + if ($logo) { + return $logo; + } + $icon = $this->feed->icon; + if ($icon) { + return $icon; + } + return common_path('plugins/OStatus/images/48px-Feed-icon.svg.png'); + } + function profile($preview=false) { if ($preview) { @@ -164,6 +200,10 @@ class FeedMunger $profile->homepage = $this->getAltLink($this->feed); $profile->bio = $this->feed->description; $profile->profileurl = $this->getAltLink($this->feed); + + if ($preview) { + $profile->avatar = $this->getAvatar(); + } // @todo tags from categories // @todo lat/lon/location? @@ -177,60 +217,131 @@ class FeedMunger if (!$entry) { return null; } - + if ($preview) { $notice = new FeedSubPreviewNotice($this->profile(true)); $notice->id = -1; } else { $notice = new Notice(); + $notice->profile_id = $this->profileIdForEntry($index); } $link = $this->getAltLink($entry); + if (empty($link)) { + if (preg_match('!^https?://!', $entry->id)) { + $link = $entry->id; + common_log(LOG_DEBUG, "No link on entry, using URL from id: $link"); + } + } $notice->uri = $link; $notice->url = $link; $notice->content = $this->noticeFromEntry($entry); - $notice->rendered = common_render_content($notice->content, $notice); + $notice->rendered = common_render_content($notice->content, $notice); // @fixme this is failing on group posts $notice->created = common_sql_date($entry->updated); // @fixme $notice->is_local = Notice::GATEWAY; $notice->source = 'feed'; - + + $location = $this->getLocation($entry); + if ($location) { + if ($location->location_id) { + $notice->location_ns = $location->location_ns; + $notice->location_id = $location->location_id; + } + $notice->lat = $location->lat; + $notice->lon = $location->lon; + } + return $notice; } + function profileIdForEntry($index=1) + { + // hack hack hack + // should get profile for this entry's author... + $remote = Ostatus_profile::staticGet('feeduri', $this->getSelfLink()); + if ($feed) { + return $feed->profile_id; + } else { + throw new Exception("Can't find feed profile"); + } + } + + /** + * Parse location given as a GeoRSS-simple point, if provided. + * http://www.georss.org/simple + * + * @param feed item $entry + * @return mixed Location or false + */ + function getLocation($entry) + { + $dom = $entry->model; + $points = $dom->getElementsByTagNameNS('http://www.georss.org/georss', 'point'); + + for ($i = 0; $i < $points->length; $i++) { + $point = $points->item(0)->textContent; + $point = str_replace(',', ' ', $point); // per spec "treat commas as whitespace" + $point = preg_replace('/\s+/', ' ', $point); + $point = trim($point); + $coords = explode(' ', $point); + if (count($coords) == 2) { + list($lat, $lon) = $coords; + if (is_numeric($lat) && is_numeric($lon)) { + common_log(LOG_INFO, "Looking up location for $lat $lon from georss"); + return Location::fromLatLon($lat, $lon); + } + } + common_log(LOG_ERR, "Ignoring bogus georss:point value $point"); + } + + return false; + } + /** * @param XML_Feed_Type $entry * @return string notice text, within post size limit */ function noticeFromEntry($entry) { + $max = Notice::maxContent(); + $ellipsis = "\xe2\x80\xa6"; // U+2026 HORIZONTAL ELLIPSIS $title = $entry->title; $link = $entry->link; - + // @todo We can get entries like this: // $cats = $entry->getCategory('category', array(0, true)); // but it feels like an awful hack. If it's accessible cleanly, // try adding #hashtags from the categories/tags on a post. - - // @todo Should we force a language here? - $format = _m('New post: "%1$s" %2$s'); + $title = $entry->title; $link = $this->getAltLink($entry); - $out = sprintf($format, $title, $link); - - // Trim link if needed... - $max = Notice::maxContent(); - if (mb_strlen($out) > $max) { - $link = common_shorten_url($link); + if ($link) { + // Blog post or such... + // @todo Should we force a language here? + $format = _m('New post: "%1$s" %2$s'); $out = sprintf($format, $title, $link); - } - // Trim title if needed... - if (mb_strlen($out) > $max) { - $ellipsis = "\xe2\x80\xa6"; // U+2026 HORIZONTAL ELLIPSIS - $used = mb_strlen($out) - mb_strlen($title); - $available = $max - $used - mb_strlen($ellipsis); - $title = mb_substr($title, 0, $available) . $ellipsis; - $out = sprintf($format, $title, $link); + // Trim link if needed... + if (mb_strlen($out) > $max) { + $link = common_shorten_url($link); + $out = sprintf($format, $title, $link); + } + + // Trim title if needed... + if (mb_strlen($out) > $max) { + $used = mb_strlen($out) - mb_strlen($title); + $available = $max - $used - mb_strlen($ellipsis); + $title = mb_substr($title, 0, $available) . $ellipsis; + $out = sprintf($format, $title, $link); + } + } else { + // No link? Consider a bare status update. + if (mb_strlen($title) > $max) { + $available = $max - mb_strlen($ellipsis); + $out = mb_substr($title, 0, $available) . $ellipsis; + } else { + $out = $title; + } } return $out; diff --git a/plugins/OStatus/lib/hubdistribqueuehandler.php b/plugins/OStatus/lib/hubdistribqueuehandler.php new file mode 100644 index 0000000000..245a57f720 --- /dev/null +++ b/plugins/OStatus/lib/hubdistribqueuehandler.php @@ -0,0 +1,185 @@ +. + */ + +/** + * Send a PuSH subscription verification from our internal hub. + * Queue up final distribution for + * @package Hub + * @author Brion Vibber + */ +class HubDistribQueueHandler extends QueueHandler +{ + function transport() + { + return 'hubdistrib'; + } + + function handle($notice) + { + assert($notice instanceof Notice); + + $this->pushUser($notice); + foreach ($notice->getGroups() as $group) { + $this->pushGroup($notice, $group->group_id); + } + return true; + } + + function pushUser($notice) + { + // See if there's any PuSH subscriptions, including OStatus clients. + // @fixme handle group subscriptions as well + // http://identi.ca/api/statuses/user_timeline/1.atom + $feed = common_local_url('ApiTimelineUser', + array('id' => $notice->profile_id, + 'format' => 'atom')); + $this->pushFeed($feed, array($this, 'userFeedForNotice'), $notice); + } + + function pushGroup($notice, $group_id) + { + $feed = common_local_url('ApiTimelineGroup', + array('id' => $group_id, + 'format' => 'atom')); + $this->pushFeed($feed, array($this, 'groupFeedForNotice'), $group_id, $notice); + } + + /** + * @param string $feed URI to the feed + * @param callable $callback function to generate Atom feed update if needed + * any additional params are passed to the callback. + */ + function pushFeed($feed, $callback) + { + $hub = common_config('ostatus', 'hub'); + if ($hub) { + $this->pushFeedExternal($feed, $hub); + } + + $sub = new HubSub(); + $sub->topic = $feed; + if ($sub->find()) { + $args = array_slice(func_get_args(), 2); + $atom = call_user_func_array($callback, $args); + $this->pushFeedInternal($atom, $sub); + } else { + common_log(LOG_INFO, "No PuSH subscribers for $feed"); + } + return true; + } + + /** + * Ping external hub about this update. + * The hub will pull the feed and check for new items later. + * Not guaranteed safe in an environment with database replication. + * + * @param string $feed feed topic URI + * @param string $hub PuSH hub URI + * @fixme can consolidate pings for user & group posts + */ + function pushFeedExternal($feed, $hub) + { + $client = new HTTPClient(); + try { + $data = array('hub.mode' => 'publish', + 'hub.url' => $feed); + $response = $client->post($hub, array(), $data); + if ($response->getStatus() == 204) { + common_log(LOG_INFO, "PuSH ping to hub $hub for $feed ok"); + return true; + } else { + common_log(LOG_ERR, "PuSH ping to hub $hub for $feed failed with HTTP " . + $response->getStatus() . ': ' . + $response->getBody()); + } + } catch (Exception $e) { + common_log(LOG_ERR, "PuSH ping to hub $hub for $feed failed: " . $e->getMessage()); + return false; + } + } + + /** + * Queue up direct feed update pushes to subscribers on our internal hub. + * @param string $atom update feed, containing only new/changed items + * @param HubSub $sub open query of subscribers + */ + function pushFeedInternal($atom, $sub) + { + common_log(LOG_INFO, "Preparing $sub->N PuSH distribution(s) for $sub->topic"); + $qm = QueueManager::get(); + while ($sub->fetch()) { + common_log(LOG_INFO, "Prepping PuSH distribution to $sub->callback for $sub->topic"); + $data = array('sub' => clone($sub), + 'atom' => $atom); + $qm->enqueue($data, 'hubout'); + } + } + + /** + * Build a single-item version of the sending user's Atom feed. + * @param Notice $notice + * @return string + */ + function userFeedForNotice($notice) + { + // @fixme this feels VERY hacky... + // should probably be a cleaner way to do it + + ob_start(); + $api = new ApiTimelineUserAction(); + $api->prepare(array('id' => $notice->profile_id, + 'format' => 'atom', + 'max_id' => $notice->id, + 'since_id' => $notice->id - 1)); + $api->showTimeline(); + $feed = ob_get_clean(); + + // ...and override the content-type back to something normal... eww! + // hope there's no other headers that got set while we weren't looking. + header('Content-Type: text/html; charset=utf-8'); + + common_log(LOG_DEBUG, $feed); + return $feed; + } + + function groupFeedForNotice($group_id, $notice) + { + // @fixme this feels VERY hacky... + // should probably be a cleaner way to do it + + ob_start(); + $api = new ApiTimelineGroupAction(); + $args = array('id' => $group_id, + 'format' => 'atom', + 'max_id' => $notice->id, + 'since_id' => $notice->id - 1); + $api->prepare($args); + $api->handle($args); + $feed = ob_get_clean(); + + // ...and override the content-type back to something normal... eww! + // hope there's no other headers that got set while we weren't looking. + header('Content-Type: text/html; charset=utf-8'); + + common_log(LOG_DEBUG, $feed); + return $feed; + } + +} + diff --git a/plugins/OStatus/lib/huboutqueuehandler.php b/plugins/OStatus/lib/huboutqueuehandler.php new file mode 100644 index 0000000000..0791c7e5db --- /dev/null +++ b/plugins/OStatus/lib/huboutqueuehandler.php @@ -0,0 +1,52 @@ +. + */ + +/** + * Send a raw PuSH atom update from our internal hub. + * @package Hub + * @author Brion Vibber + */ +class HubOutQueueHandler extends QueueHandler +{ + function transport() + { + return 'hubout'; + } + + function handle($data) + { + $sub = $data['sub']; + $atom = $data['atom']; + + assert($sub instanceof HubSub); + assert(is_string($atom)); + + try { + $sub->push($atom); + } catch (Exception $e) { + common_log(LOG_ERR, "Failed PuSH to $sub->callback for $sub->topic: " . + $e->getMessage()); + // @fixme Reschedule a later delivery? + return true; + } + + return true; + } +} + diff --git a/plugins/OStatus/lib/hubverifyqueuehandler.php b/plugins/OStatus/lib/hubverifyqueuehandler.php new file mode 100644 index 0000000000..125d13a777 --- /dev/null +++ b/plugins/OStatus/lib/hubverifyqueuehandler.php @@ -0,0 +1,53 @@ +. + */ + +/** + * Send a PuSH subscription verification from our internal hub. + * @package Hub + * @author Brion Vibber + */ +class HubVerifyQueueHandler extends QueueHandler +{ + function transport() + { + return 'hubverify'; + } + + function handle($data) + { + $sub = $data['sub']; + $mode = $data['mode']; + + assert($sub instanceof HubSub); + assert($mode === 'subscribe' || $mode === 'unsubscribe'); + + common_log(LOG_INFO, __METHOD__ . ": $mode $sub->callback $sub->topic"); + try { + $sub->verify($mode); + } catch (Exception $e) { + common_log(LOG_ERR, "Failed PuSH $mode verify to $sub->callback for $sub->topic: " . + $e->getMessage()); + // @fixme schedule retry? + // @fixme just kill it? + } + + return true; + } +} + diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php new file mode 100644 index 0000000000..8c77222a62 --- /dev/null +++ b/plugins/OStatus/lib/salmon.php @@ -0,0 +1,64 @@ +. + * + * @package StatusNet + * @author James Walker + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ +class Salmon +{ + public function post($endpoint_uri, $xml) + { + if (empty($endpoint_uri)) { + return FALSE; + } + + $headers = array('Content-type: application/atom+xml'); + + try { + $client = new HTTPClient(); + $client->setBody($xml); + $response = $client->post($endpoint_uri, $headers); + } catch (HTTP_Request2_Exception $e) { + return false; + } + if ($response->getStatus() != 200) { + return false; + } + + } + + public function createMagicEnv($text, $userid) + { + + + } + + + public function verifyMagicEnv($env) + { + + + } +} diff --git a/plugins/OStatus/lib/webfinger.php b/plugins/OStatus/lib/webfinger.php new file mode 100644 index 0000000000..417d54904b --- /dev/null +++ b/plugins/OStatus/lib/webfinger.php @@ -0,0 +1,143 @@ +. + * + * @package StatusNet + * @author James Walker + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +define('WEBFINGER_SERVICE_REL_VALUE', 'lrdd'); + +/** + * Implement the webfinger protocol. + */ +class Webfinger +{ + /** + * Perform a webfinger lookup given an account. + */ + public function lookup($id) + { + $id = $this->normalize($id); + list($name, $domain) = explode('@', $id); + + $links = $this->getServiceLinks($domain); + if (!$links) { + return false; + } + + $services = array(); + foreach ($links as $link) { + if ($link['template']) { + return $this->getServiceDescription($link['template'], $id); + } + if ($link['href']) { + return $this->getServiceDescription($link['href'], $id); + } + } + } + + /** + * Normalize an account ID + */ + function normalize($id) + { + if (substr($id, 0, 7) == 'acct://') { + return substr($id, 7); + } else if (substr($id, 0, 5) == 'acct:') { + return substr($id, 5); + } + + return $id; + } + + function getServiceLinks($domain) + { + $url = 'http://'. $domain .'/.well-known/host-meta'; + $content = $this->fetchURL($url); + if (empty($content)) { + common_log(LOG_DEBUG, 'Error fetching host-meta'); + return false; + } + $result = XRD::parse($content); + + // Ensure that the host == domain (spec may include signing later) + if ($result->host != $domain) { + return false; + } + + $links = array(); + foreach ($result->links as $link) { + if ($link['rel'] == WEBFINGER_SERVICE_REL_VALUE) { + $links[] = $link; + } + + } + return $links; + } + + function getServiceDescription($template, $id) + { + $url = $this->applyTemplate($template, 'acct:' . $id); + + $content = $this->fetchURL($url); + + return XRD::parse($content); + } + + function fetchURL($url) + { + try { + $client = new HTTPClient(); + $response = $client->get($url); + } catch (HTTP_Request2_Exception $e) { + return false; + } + + if ($response->getStatus() != 200) { + return false; + } + + return $response->getBody(); + } + + function applyTemplate($template, $id) + { + $template = str_replace('{uri}', urlencode($id), $template); + + return $template; + } + + function getHostMeta($domain, $template) { + $xrd = new XRD(); + $xrd->host = $domain; + $xrd->links[] = array('rel' => 'lrdd', + 'template' => $template, + 'title' => array('Resource Descriptor')); + + return $xrd->toXML(); + } +} + + diff --git a/plugins/OStatus/lib/xrd.php b/plugins/OStatus/lib/xrd.php new file mode 100644 index 0000000000..16d27f8eb7 --- /dev/null +++ b/plugins/OStatus/lib/xrd.php @@ -0,0 +1,183 @@ +. + * + * @package StatusNet + * @author James Walker + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + + +class XRD +{ + const XML_NS = 'http://www.w3.org/2000/xmlns/'; + + const XRD_NS = 'http://docs.oasis-open.org/ns/xri/xrd-1.0'; + + const HOST_META_NS = 'http://host-meta.net/xrd/1.0'; + + public $expires; + + public $subject; + + public $host; + + public $alias = array(); + + public $types = array(); + + public $links = array(); + + public static function parse($xml) + { + $xrd = new XRD(); + + $dom = new DOMDocument(); + $dom->loadXML($xml); + $xrd_element = $dom->getElementsByTagName('XRD')->item(0); + + // Check for host-meta host + $host = $xrd_element->getElementsByTagName('Host')->item(0)->nodeValue; + if ($host) { + $xrd->host = $host; + } + + // Loop through other elements + foreach ($xrd_element->childNodes as $node) { + switch ($node->tagName) { + case 'Expires': + $xrd->expires = $node->nodeValue; + break; + case 'Subject': + $xrd->subject = $node->nodeValue; + break; + + case 'Alias': + $xrd->alias[] = $node->nodeValue; + break; + + case 'Link': + $xrd->links[] = $xrd->parseLink($node); + break; + + case 'Type': + $xrd->types[] = $xrd->parseType($node); + break; + + } + } + return $xrd; + } + + public function toXML() + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + + $xrd_dom = $dom->createElementNS(XRD::XRD_NS, 'XRD'); + $dom->appendChild($xrd_dom); + + if ($this->host) { + $host_dom = $dom->createElement('hm:Host', $this->host); + $xrd_dom->setAttributeNS(XRD::XML_NS, 'xmlns:hm', XRD::HOST_META_NS); + $xrd_dom->appendChild($host_dom); + } + + if ($this->expires) { + $expires_dom = $dom->createElement('Expires', $this->expires); + $xrd_dom->appendChild($expires_dom); + } + + if ($this->subject) { + $subject_dom = $dom->createElement('Subject', $this->subject); + $xrd_dom->appendChild($subject_dom); + } + + foreach ($this->alias as $alias) { + $alias_dom = $dom->createElement('Alias', $alias); + $xrd_dom->appendChild($alias_dom); + } + + foreach ($this->types as $type) { + $type_dom = $dom->createElement('Type', $type); + $xrd_dom->appendChild($type_dom); + } + + foreach ($this->links as $link) { + $link_dom = $this->saveLink($dom, $link); + $xrd_dom->appendChild($link_dom); + } + + return $dom->saveXML(); + } + + function parseType($element) + { + return array(); + } + + function parseLink($element) + { + $link = array(); + $link['rel'] = $element->getAttribute('rel'); + $link['type'] = $element->getAttribute('type'); + $link['href'] = $element->getAttribute('href'); + $link['template'] = $element->getAttribute('template'); + foreach ($element->childNodes as $node) { + switch($node->tagName) { + case 'Title': + $link['title'][] = $node->nodeValue; + } + } + + return $link; + } + + function saveLink($doc, $link) + { + $link_element = $doc->createElement('Link'); + if ($link['rel']) { + $link_element->setAttribute('rel', $link['rel']); + } + if ($link['type']) { + $link_element->setAttribute('type', $link['type']); + } + if ($link['href']) { + $link_element->setAttribute('href', $link['href']); + } + if ($link['template']) { + $link_element->setAttribute('template', $link['template']); + } + + if (is_array($link['title'])) { + foreach($link['title'] as $title) { + $title = $doc->createElement('Title', $title); + $link_element->appendChild($title); + } + } + + + return $link_element; + } +} + diff --git a/plugins/FeedSub/locale/FeedSub.po b/plugins/OStatus/locale/OStatus.po similarity index 100% rename from plugins/FeedSub/locale/FeedSub.po rename to plugins/OStatus/locale/OStatus.po diff --git a/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po b/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po similarity index 100% rename from plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po rename to plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po diff --git a/plugins/FeedSub/tests/FeedDiscoveryTest.php b/plugins/OStatus/tests/FeedDiscoveryTest.php similarity index 100% rename from plugins/FeedSub/tests/FeedDiscoveryTest.php rename to plugins/OStatus/tests/FeedDiscoveryTest.php diff --git a/plugins/FeedSub/tests/FeedMungerTest.php b/plugins/OStatus/tests/FeedMungerTest.php similarity index 100% rename from plugins/FeedSub/tests/FeedMungerTest.php rename to plugins/OStatus/tests/FeedMungerTest.php diff --git a/plugins/FeedSub/tests/gettext-speedtest.php b/plugins/OStatus/tests/gettext-speedtest.php similarity index 100% rename from plugins/FeedSub/tests/gettext-speedtest.php rename to plugins/OStatus/tests/gettext-speedtest.php diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index ab548958a6..0f7a680d73 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -209,10 +209,10 @@ console.log(data); var rf; rf = "
"+ "
"+ - "Favor this notice"+ + "Repeat this notice?"+ ""+ - ""+ - ""+ + ""+ + ""+ "
"+ "
"; diff --git a/scripts/decache.php b/scripts/decache.php index 7cabd78ada..094bdb5aa0 100644 --- a/scripts/decache.php +++ b/scripts/decache.php @@ -24,6 +24,8 @@ $helptext = << [] Clears the cache for the object in table with id If is specified, use that instead of 'id' + + ENDOFHELP; require_once INSTALLDIR.'/scripts/commandline.inc'; @@ -43,8 +45,10 @@ if (count($args) > 2) { $object = Memcached_DataObject::staticGet($table, $column, $id); if (!$object) { - print "No such '$table' with $column = '$id'.\n"; - exit(1); + print "No such '$table' with $column = '$id'; it's possible some cache keys won't be cleared properly.\n"; + $class = ucfirst($table); + $object = new $class(); + $object->column = $id; } $result = $object->decache(); diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 8490fb5803..3218276a68 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -1104,25 +1104,22 @@ left:0; .dialogbox { position:absolute; -top:-4px; -right:29px; +top:-1px; +right:-1px; z-index:9; -min-width:199px; float:none; -background-color:#FFF; padding:11px; border-radius:7px; -moz-border-radius:7px; -webkit-border-radius:7px; border-style:solid; border-width:1px; -border-color:#DDDDDD; --moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); } .dialogbox legend { display:block !important; margin-right:18px; +margin-bottom:18px; } .dialogbox button.close { @@ -1131,11 +1128,22 @@ right:3px; top:3px; } +.dialogbox .form_guide { +font-weight:normal; +padding:0; +} + .dialogbox .submit_dialogbox { font-weight:bold; text-indent:0; min-width:46px; } +.dialogbox input { +padding-left:4px; +} +.dialogbox fieldset { +margin-bottom:0; +} #wrap form.processing input.submit, .entity_actions a.processing, @@ -1145,6 +1153,12 @@ outline:none; text-indent:-9999px; } +.form_repeat.dialogbox { +top:-4px; +right:29px; +min-width:199px; +} + .notice-options { position:relative; font-size:0.95em; diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 82eb135316..a2f1013428 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -30,7 +30,9 @@ border-radius:4px; input, textarea, select, option { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; } -input, textarea, select { +input, textarea, select, +.entity_actions .dialogbox input, +.mark-top { border-color:#AAAAAA; } @@ -46,7 +48,8 @@ box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); .pagination .nav_prev a, .pagination .nav_next a, .form_settings fieldset fieldset, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { border-color:#DDDDDD; } @@ -78,7 +81,8 @@ background-color:transparent; input:focus, textarea:focus, select:focus, .form_notice.warning #notice_data-text, .form_notice.warning #notice_text-count, -.form_settings .form_note { +.form_settings .form_note, +.entity_actions .dialogbox .form_data input:focus { border-color:#9BB43E; } input.submit { @@ -133,9 +137,6 @@ color:#002FA7; #content tbody tr { border-top-color:#C8D1D5; } -.mark-top { -border-color:#AAAAAA; -} #aside_primary { background-color:#C8D1D5; @@ -144,7 +145,9 @@ background-color:#C8D1D5; #notice_text-count { color:#333333; } -.form_notice.warning #notice_text-count { +.form_notice.warning #notice_text-count, +.dialogbox, +.entity_actions .dialogbox input { color:#000000; } .form_notice label[for=notice_data-attach] { @@ -221,7 +224,8 @@ border-color:transparent; #content, #site_nav_local_views .current a, .entity_send-a-message .form_notice, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { background-color:#FFFFFF; } @@ -308,7 +312,8 @@ background-position: 5px -718px; background-position: 5px -852px; } .entity_send-a-message .form_notice, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index 44ae4953b7..e214047451 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -30,7 +30,9 @@ border-radius:4px; input, textarea, select, option { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; } -input, textarea, select { +input, textarea, select, +.entity_actions .dialogbox input, +.mark-top { border-color:#AAAAAA; } @@ -46,7 +48,8 @@ box-shadow:3px 3px 7px rgba(194, 194, 194, 0.3); .pagination .nav_prev a, .pagination .nav_next a, .form_settings fieldset fieldset, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { border-color:#DDDDDD; } @@ -88,6 +91,7 @@ color:#FFFFFF; border-color:transparent; text-shadow:none; } + .dialogbox .submit_dialogbox, input.submit, .form_notice input.submit { @@ -133,9 +137,6 @@ color:#002FA7; #content tbody tr { border-top-color:#CEE1E9; } -.mark-top { -border-color:#AAAAAA; -} #aside_primary { background-color:#CEE1E9; @@ -144,7 +145,9 @@ background-color:#CEE1E9; #notice_text-count { color:#333333; } -.form_notice.warning #notice_text-count { +.form_notice.warning #notice_text-count, +.dialogbox, +.entity_actions .dialogbox input { color:#000000; } .form_notice label[for=notice_data-attach] { @@ -221,7 +224,8 @@ border-color:transparent; #content, #site_nav_local_views .current a, .entity_send-a-message .form_notice, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { background-color:#FFFFFF; } @@ -307,7 +311,8 @@ background-position: 5px -718px; background-position: 5px -852px; } .entity_send-a-message .form_notice, -.entity_moderation:hover ul { +.entity_moderation:hover ul, +.dialogbox { box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); -moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7); -webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.7);