]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'master' of gitorious.org:statusnet/mainline into testing
authorBrion Vibber <brion@pobox.com>
Thu, 25 Feb 2010 19:57:21 +0000 (11:57 -0800)
committerBrion Vibber <brion@pobox.com>
Thu, 25 Feb 2010 19:57:21 +0000 (11:57 -0800)
274 files changed:
EVENTS.txt
README
actions/apidirectmessage.php
actions/apifriendshipsdestroy.php
actions/apigroupcreate.php
actions/apigrouplist.php
actions/apigrouplistall.php
actions/apitimelinefavorites.php
actions/apitimelinefriends.php
actions/apitimelinegroup.php
actions/apitimelinehome.php
actions/apitimelinementions.php
actions/apitimelinepublic.php
actions/apitimelineretweetedtome.php
actions/apitimelineretweetsofme.php
actions/apitimelinetag.php
actions/apitimelineuser.php
actions/blockedfromgroup.php
actions/doc.php
actions/editgroup.php
actions/favor.php
actions/foafgroup.php
actions/groupdesignsettings.php
actions/grouplogo.php
actions/groupmembers.php
actions/grouprss.php
actions/groups.php
actions/joingroup.php
actions/leavegroup.php
actions/makeadmin.php
actions/newgroup.php
actions/public.php
actions/rsd.php [new file with mode: 0644]
actions/showgroup.php
actions/showstream.php
actions/subscribe.php
actions/subscriptions.php
actions/twitapisearchatom.php
actions/userauthorization.php
classes/Avatar.php
classes/Conversation.php [new file with mode: 0755]
classes/Design.php
classes/Fave.php
classes/File.php
classes/Local_group.php [new file with mode: 0644]
classes/Memcached_DataObject.php
classes/Nonce.php
classes/Notice.php
classes/Profile.php
classes/Subscription.php
classes/User.php
classes/User_group.php
classes/statusnet.ini
classes/statusnet.links.ini
db/statusnet.sql
js/jquery.js
js/jquery.min.js
js/util.js
lib/action.php
lib/activity.php [new file with mode: 0644]
lib/api.php
lib/atom10entry.php [new file with mode: 0644]
lib/atom10feed.php [new file with mode: 0644]
lib/atomgroupnoticefeed.php [new file with mode: 0644]
lib/atomnoticefeed.php [new file with mode: 0644]
lib/atomusernoticefeed.php [new file with mode: 0644]
lib/cache.php
lib/command.php
lib/common.php
lib/default.php
lib/distribqueuehandler.php
lib/error.php
lib/grouplist.php
lib/groupsection.php
lib/htmloutputter.php
lib/httpclient.php
lib/mysqlschema.php [new file with mode: 0644]
lib/noticelist.php
lib/noticesection.php
lib/pgsqlschema.php [new file with mode: 0644]
lib/profilelist.php
lib/profilequeuehandler.php [new file with mode: 0644]
lib/profilesection.php
lib/queuemanager.php
lib/right.php
lib/router.php
lib/schema.php
lib/statusnet.php
lib/subs.php
lib/taguri.php [new file with mode: 0644]
lib/theme.php
lib/userprofile.php
lib/util.php
locale/ar/LC_MESSAGES/statusnet.po
locale/arz/LC_MESSAGES/statusnet.po
locale/bg/LC_MESSAGES/statusnet.po
locale/ca/LC_MESSAGES/statusnet.po
locale/cs/LC_MESSAGES/statusnet.po
locale/de/LC_MESSAGES/statusnet.po
locale/el/LC_MESSAGES/statusnet.po
locale/en_GB/LC_MESSAGES/statusnet.po
locale/es/LC_MESSAGES/statusnet.po
locale/fa/LC_MESSAGES/statusnet.po
locale/fi/LC_MESSAGES/statusnet.po
locale/fr/LC_MESSAGES/statusnet.po
locale/ga/LC_MESSAGES/statusnet.po
locale/he/LC_MESSAGES/statusnet.po
locale/hsb/LC_MESSAGES/statusnet.po
locale/ia/LC_MESSAGES/statusnet.po
locale/is/LC_MESSAGES/statusnet.po
locale/it/LC_MESSAGES/statusnet.po
locale/ja/LC_MESSAGES/statusnet.po
locale/ko/LC_MESSAGES/statusnet.po
locale/mk/LC_MESSAGES/statusnet.po
locale/nb/LC_MESSAGES/statusnet.po
locale/nl/LC_MESSAGES/statusnet.po
locale/nn/LC_MESSAGES/statusnet.po
locale/pl/LC_MESSAGES/statusnet.po
locale/pt/LC_MESSAGES/statusnet.po
locale/pt_BR/LC_MESSAGES/statusnet.po
locale/ru/LC_MESSAGES/statusnet.po
locale/statusnet.po
locale/sv/LC_MESSAGES/statusnet.po
locale/te/LC_MESSAGES/statusnet.po
locale/tr/LC_MESSAGES/statusnet.po
locale/uk/LC_MESSAGES/statusnet.po
locale/vi/LC_MESSAGES/statusnet.po
locale/zh_CN/LC_MESSAGES/statusnet.po
locale/zh_TW/LC_MESSAGES/statusnet.po
plugins/FeedSub/FeedSubPlugin.php [deleted file]
plugins/FeedSub/README [deleted file]
plugins/FeedSub/actions/feedsubcallback.php [deleted file]
plugins/FeedSub/actions/feedsubsettings.php [deleted file]
plugins/FeedSub/extlib/README [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/Atom.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/AtomElement.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/Exception.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS09.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS09Element.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS1.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS11.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS11Element.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS1Element.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS2.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/RSS2Element.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/Parser/Type.php [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/atom10-entryonly.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/atom10-example1.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/atom10-example2.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/delicious.feed [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/flickr.feed [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/grwifi-atom.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/hoder.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/illformed_atom10.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss091-complete.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss091-international.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss091-simple.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss092-sample.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss10-example1.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss10-example2.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/rss2sample.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/sixapart-jp.xml [deleted file]
plugins/FeedSub/extlib/XML/Feed/samples/technorati.feed [deleted file]
plugins/FeedSub/extlib/XML/Feed/schemas/atom.rnc [deleted file]
plugins/FeedSub/extlib/XML/Feed/schemas/rss10.rnc [deleted file]
plugins/FeedSub/extlib/XML/Feed/schemas/rss11.rnc [deleted file]
plugins/FeedSub/extlib/xml-feed-parser-bug-16416.patch [deleted file]
plugins/FeedSub/feeddiscovery.php [deleted file]
plugins/FeedSub/feedinfo.php [deleted file]
plugins/FeedSub/feedinfo.sql [deleted file]
plugins/FeedSub/feedmunger.php [deleted file]
plugins/FeedSub/images/24px-Feed-icon.svg.png [deleted file]
plugins/FeedSub/images/48px-Feed-icon.svg.png [deleted file]
plugins/FeedSub/images/96px-Feed-icon.svg.png [deleted file]
plugins/FeedSub/images/README [deleted file]
plugins/FeedSub/locale/FeedSub.po [deleted file]
plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po [deleted file]
plugins/FeedSub/tests/FeedDiscoveryTest.php [deleted file]
plugins/FeedSub/tests/FeedMungerTest.php [deleted file]
plugins/FeedSub/tests/gettext-speedtest.php [deleted file]
plugins/MemcachePlugin.php
plugins/MobileProfile/MobileProfilePlugin.php
plugins/MobileProfile/mp-screen.css
plugins/OStatus/OStatusPlugin.php [new file with mode: 0644]
plugins/OStatus/README [new file with mode: 0644]
plugins/OStatus/actions/groupsalmon.php [new file with mode: 0644]
plugins/OStatus/actions/hostmeta.php [new file with mode: 0644]
plugins/OStatus/actions/ostatusinit.php [new file with mode: 0644]
plugins/OStatus/actions/ostatussub.php [new file with mode: 0644]
plugins/OStatus/actions/pushcallback.php [new file with mode: 0644]
plugins/OStatus/actions/pushhub.php [new file with mode: 0644]
plugins/OStatus/actions/usersalmon.php [new file with mode: 0644]
plugins/OStatus/actions/webfinger.php [new file with mode: 0644]
plugins/OStatus/classes/FeedSub.php [new file with mode: 0644]
plugins/OStatus/classes/HubSub.php [new file with mode: 0644]
plugins/OStatus/classes/Magicsig.php [new file with mode: 0644]
plugins/OStatus/classes/Ostatus_profile.php [new file with mode: 0644]
plugins/OStatus/classes/Ostatus_source.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/ErrorHandler.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/Key.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/KeyPair.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/Math/BCMath.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/Math/BigInt.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/Math/GMP.php [new file with mode: 0644]
plugins/OStatus/extlib/Crypt/RSA/MathLoader.php [new file with mode: 0644]
plugins/OStatus/images/24px-Feed-icon.svg.png [new file with mode: 0644]
plugins/OStatus/images/48px-Feed-icon.svg.png [new file with mode: 0644]
plugins/OStatus/images/96px-Feed-icon.svg.png [new file with mode: 0644]
plugins/OStatus/images/README [new file with mode: 0644]
plugins/OStatus/js/ostatus.js [new file with mode: 0644]
plugins/OStatus/lib/feeddiscovery.php [new file with mode: 0644]
plugins/OStatus/lib/hubconfqueuehandler.php [new file with mode: 0644]
plugins/OStatus/lib/huboutqueuehandler.php [new file with mode: 0644]
plugins/OStatus/lib/magicenvelope.php [new file with mode: 0644]
plugins/OStatus/lib/ostatusqueuehandler.php [new file with mode: 0644]
plugins/OStatus/lib/pushinqueuehandler.php [new file with mode: 0644]
plugins/OStatus/lib/salmon.php [new file with mode: 0644]
plugins/OStatus/lib/salmonaction.php [new file with mode: 0644]
plugins/OStatus/lib/salmonqueuehandler.php [new file with mode: 0644]
plugins/OStatus/lib/webfinger.php [new file with mode: 0644]
plugins/OStatus/lib/xrd.php [new file with mode: 0644]
plugins/OStatus/locale/OStatus.po [new file with mode: 0644]
plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po [new file with mode: 0644]
plugins/OStatus/tests/FeedDiscoveryTest.php [new file with mode: 0644]
plugins/OStatus/tests/gettext-speedtest.php [new file with mode: 0644]
plugins/OStatus/theme/base/css/ostatus.css [new file with mode: 0644]
plugins/OpenID/doc-src/openid
plugins/OpenID/finishopenidlogin.php
plugins/PostDebug/PostDebugPlugin.php [new file with mode: 0644]
plugins/PoweredByStatusNet/PoweredByStatusNetPlugin.php
plugins/Realtime/icon_external.gif [deleted file]
plugins/Realtime/icon_pause.gif [deleted file]
plugins/Realtime/icon_play.gif [deleted file]
plugins/Realtime/realtimeupdate.css
plugins/Realtime/realtimeupdate.js
plugins/Sample/hello.php
plugins/Sample/locale/Sample.po [new file with mode: 0644]
plugins/UserFlag/UserFlagPlugin.php
plugins/UserFlag/clearflagform.php
plugins/UserFlag/icon_flag.gif [deleted file]
plugins/UserFlag/userflag.css [deleted file]
scripts/setconfig.php [changed mode: 0644->0755]
scripts/update_po_templates.php
tests/ActivityParseTests.php [new file with mode: 0644]
tests/TagURITest.php [new file with mode: 0644]
theme/base/css/display.css
theme/base/images/icons/README [new file with mode: 0644]
theme/base/images/icons/icon_geo.png [deleted file]
theme/base/images/icons/icons-01.gif
theme/base/images/icons/twotone/green/against.gif [new file with mode: 0644]
theme/base/images/icons/twotone/green/checkmark.gif [new file with mode: 0644]
theme/base/images/icons/twotone/green/clear.gif [new file with mode: 0644]
theme/base/images/icons/twotone/green/flag.gif [new file with mode: 0644]
theme/base/logo.png
theme/cloudy/css/display.css
theme/default/css/display.css
theme/default/logo.png
theme/default/mobilelogo.png
theme/identica/css/display.css
theme/identica/mobilelogo.png
theme/otalk/css/base.css [deleted file]
theme/otalk/css/display.css [deleted file]
theme/otalk/css/ie.css [deleted file]
theme/otalk/default-avatar-mini.png [deleted file]
theme/otalk/default-avatar-profile.png [deleted file]
theme/otalk/default-avatar-stream.png [deleted file]
theme/otalk/images/illustrations/illu_arrow-left-01.gif [deleted file]
theme/otalk/images/illustrations/illu_pattern-01.png [deleted file]
theme/otalk/logo.png [deleted file]
theme/pigeonthoughts/css/base.css
theme/pigeonthoughts/css/display.css
theme/pigeonthoughts/logo.png

index 6bf12bf13fb15db9ea94507971c635266db383ee..c387274c03f55fed99d400eb6b322ad8003eba58 100644 (file)
@@ -355,6 +355,14 @@ EndShowHeadElements: Right before the </head> tag; put <script>s here if you nee
 
 CheckSchema: chance to check the schema
 
+StartProfileRemoteSubscribe: Before showing the link to remote subscription
+- $userprofile: UserProfile widget
+- &$profile: the profile being shown
+
+EndProfileRemoteSubscribe: After showing the link to remote subscription
+- $userprofile: UserProfile widget
+- &$profile: the profile being shown
+
 StartProfilePageProfileSection: Starting to show the section of the
                               profile page with the actual profile data;
                               hook to prevent showing the profile (e.g.)
@@ -714,3 +722,50 @@ StartRobotsTxt: Before outputting the robots.txt page
 EndRobotsTxt: After the default robots.txt page (good place for customization)
 - &$action: RobotstxtAction being shown
 
+StartGetProfileUri: When determining the canonical URI for a given profile
+- $profile: the current profile
+- &$uri: the URI
+
+EndGetProfileUri: After determining the canonical URI for a given profile
+- $profile: the current profile
+- &$uri: the URI
+
+StartFavorNotice: Saving a notice as a favorite
+- $profile: profile of the person faving (can be remote!)
+- $notice: notice being faved
+- &$fave: Favor object; null to start off with, but feel free to override.
+
+EndFavorNotice: After saving a notice as a favorite
+- $profile: profile of the person faving (can be remote!)
+- $notice: notice being faved
+
+StartDisfavorNotice: Saving a notice as a favorite
+- $profile: profile of the person faving (can be remote!)
+- $notice: notice being faved
+- &$result: result of the disfavoring (if you override)
+
+EndDisfavorNotice: After saving a notice as a favorite
+- $profile: profile of the person faving (can be remote!)
+- $notice: notice being faved
+
+StartFindMentions: start finding mentions in a block of text
+- $sender: sender profile
+- $text: plain text version of the notice
+- &$mentions: mentions found so far. Array of arrays; each array
+  has 'mentioned' (array of mentioned profiles), 'url' (url to link as),
+  'title' (title of the link), 'position' (position of the text to
+  replace), 'text' (text to replace)
+
+EndFindMentions: end finding mentions in a block of text
+- $sender: sender profile
+- $text: plain text version of the notice
+- &$mentions: mentions found so far. Array of arrays; each array
+  has 'mentioned' (array of mentioned profiles), 'url' (url to link as),
+  'title' (title of the link), 'position' (position of the text to
+  replace), 'text' (text to replace)
+
+StartShowSubscriptionsContent: before showing the subscriptions content
+- $action: the current action
+
+EndShowSubscriptionsContent: after showing the subscriptions content
+- $action: the current action
diff --git a/README b/README
index 9b4147645b5fe1ce0f67a117480ad5f62402cbf2..75336eb83fb57f28a14776b124db06d3ca06bb45 100644 (file)
--- a/README
+++ b/README
@@ -1192,6 +1192,8 @@ server: If set, defines another server where avatars are stored in the
        typically only make 2 connections to a single server at a
        time <http://ur1.ca/6ih>, so this can parallelize the job.
        Defaults to null.
+ssl:    Whether to access avatars using HTTPS. Defaults to null, meaning
+        to guess based on site-wide SSL settings.
 
 public
 ------
@@ -1221,6 +1223,19 @@ path:    Path part of theme URLs, before the theme name. Relative to the
        (using version numbers as the path) to make sure that all files are
        reloaded by caching clients or proxies. Defaults to null,
        which means to use the site path + '/theme'.
+ssl:   Whether to use SSL for theme elements. Default is null, which means
+       guess based on site SSL settings.
+
+javascript
+----------
+
+server: You can speed up page loading by pointing the
+       theme file lookup to another server (virtual or real).
+       Defaults to NULL, meaning to use the site server.
+path:  Path part of Javascript URLs. Defaults to null,
+       which means to use the site path + '/js/'.
+ssl:   Whether to use SSL for JavaScript files. Default is null, which means
+       guess based on site SSL settings.
 
 xmpp
 ----
@@ -1447,6 +1462,8 @@ server: server name to use when creating URLs for uploaded files.
         a virtual server here can speed up Web performance.
 path: URL path, relative to the server, to find files. Defaults to
       main path + '/file/'.
+ssl: whether to use HTTPS for file URLs. Defaults to null, meaning to
+     guess based on other SSL settings.
 filecommand: command to use for determining the type of a file. May be
              skipped if fileinfo extension is installed. Defaults to
              '/usr/bin/file'.
@@ -1506,6 +1523,8 @@ dir: directory to write backgrounds too. Default is '/background/'
      subdir of install dir.
 path: path to backgrounds. Default is sub-path of install path; note
       that you may need to change this if you change site-path too.
+ssl: Whether or not to use HTTPS for background files. Defaults to
+     null, meaning to guess from site-wide SSL settings.
 
 ping
 ----
index 5fbc46518b2f5ec884d2bad3b81c01a52ac25a15..5355acf8253805796cfa5411a857b8a5947d2310 100644 (file)
@@ -79,7 +79,7 @@ class ApiDirectMessageAction extends ApiAuthAction
         }
 
         $server   = common_root_url();
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
 
         if ($this->arg('sent')) {
 
index 91c6fd032439e7bdc68c621fec5bcb64458ec4c1..d48a577562af968e259899c56e5a32edb8a79933 100644 (file)
@@ -124,12 +124,9 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
             return;
         }
 
-        $result = subs_unsubscribe_user($this->user, $this->other->nickname);
-
-        if (is_string($result)) {
-            $this->clientError($result, 403, $this->format);
-            return;
-        }
+        // throws an exception on error
+        Subscription::cancel($this->user->getProfile(),
+                             $this->other->getProfile());
 
         $this->initDocument($this->format);
         $this->showProfile($this->other, $this->format);
index 028d76a7822a99c5bf2f3b6a46d9743280a4054a..145806356c77d2b74224635ed19cc854e92d9629 100644 (file)
@@ -123,7 +123,9 @@ class ApiGroupCreateAction extends ApiAuthAction
                                             'description' => $this->description,
                                             'location' => $this->location,
                                             'aliases'  => $this->aliases,
-                                            'userid'   => $this->user->id));
+                                            'userid'   => $this->user->id,
+                                            'local'    => true));
+
         switch($this->format) {
         case 'xml':
             $this->showSingleXmlGroup($group);
@@ -306,9 +308,9 @@ class ApiGroupCreateAction extends ApiAuthAction
 
     function groupNicknameExists($nickname)
     {
-        $group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
 
-        if (!empty($group)) {
+        if (!empty($local)) {
             return true;
         }
 
index 66b67a030e0899bf3aceb60e6ae568d748d6af59..605b3823261338bcf750b5c1a74ad9c5fae28983 100644 (file)
@@ -93,7 +93,7 @@ class ApiGroupListAction extends ApiBareAuthAction
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s's groups"), $this->user->nickname);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:Groups";
         $link       = common_local_url(
             'usergroups',
index 1921c1f193f3396e4c5d42c2007515487b649280..e1b54a83229ae1bcf985444d8ceebde0b572ace1 100644 (file)
@@ -88,7 +88,7 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s groups"), $sitename);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:Groups";
         $link       = common_local_url('groups');
         $subtitle   = sprintf(_("groups on %s"), $sitename);
@@ -134,13 +134,13 @@ class ApiGroupListAllAction extends ApiPrivateAuthAction
 
     function getGroups()
     {
-        $groups = array();
-
-        // XXX: Use the $page, $count, $max_id, $since_id, and $since parameters
+        $qry = 'SELECT user_group.* '.
+          'from user_group join local_group on user_group.id = local_group.group_id '.
+          'order by created desc ';
 
         $group = new User_group();
-        $group->orderBy('created DESC');
-        $group->find();
+
+        $group->query($qry);
 
         while ($group->fetch()) {
             $groups[] = clone($group);
index 1027d97d440047f77c3401b9b446b070a974137f..c89d02247acda2edbfcff97d87d5bb9f9c2e860b 100644 (file)
@@ -100,44 +100,81 @@ 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
         );
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $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);
index 4e3827baea61a5bf9f1c947e8f2cad55b86d7f08..2db76857e3c7615d43647f24ad27f7867a33fcd8 100644 (file)
@@ -112,41 +112,73 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
         $avatar     = $profile->getAvatar(AVATAR_PROFILE_SIZE);
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s and friends"), $this->user->nickname);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $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');
+
+            $atom = new AtomNoticeFeed();
+
+            $atom->setId($id);
+            $atom->setTitle($title);
+            $atom->setSubtitle($subtitle);
+            $atom->setLogo($logo);
+            $atom->setUpdated('now');
 
-            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->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);
index af414c680403e557361d15ef3c9e1b554353bee4..0bb4860ea7f6009ac185d711e2cbf327d6410523 100644 (file)
@@ -107,40 +107,85 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
         $sitename   = common_config('site', 'name');
         $avatar     = $this->group->homepage_logo;
         $title      = sprintf(_("%s timeline"), $this->group->nickname);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $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 {
+
+                // If this was called using an integer ID, i.e.: using the canonical
+                // URL for this group's feed, then pass the Group object into the feed, 
+                // so the OStatus plugin, and possibly other plugins, can access it. 
+                // Feels sorta hacky. -- Z
+
+                $atom = null;
+                $id = $this->arg('id');
+
+                if (strval(intval($id)) === strval($id)) {
+                    $atom = new AtomGroupNoticeFeed($this->group);
+                } else {
+                    $atom = new AtomGroupNoticeFeed();
+                }
+
+                $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());
+                print $atom->getString(); // temp hack until PuSH feeds are redone cleanly
+
+            } catch (Atom10FeedException $e) {
+                $this->serverError(
+                    'Could not generate feed for group - ' . $e->getMessage()
+                );
+                return;
+            }
+
             break;
         case 'json':
             $this->showJsonTimeline($this->notices);
index 828eae6cf6f912382f350afe2fe17ba716041bc9..0c72f4020c47d77229bb798752bb482dbaac25c3 100644 (file)
@@ -113,41 +113,69 @@ class ApiTimelineHomeAction extends ApiBareAuthAction
         $avatar     = $profile->getAvatar(AVATAR_PROFILE_SIZE);
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s and friends"), $this->user->nickname);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $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');
+
+            $atom = new AtomNoticeFeed();
 
-            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->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);
index 9dc2162cc45fa738e8c368c0b8841f19ef3f677a..a39c63346abfa2dc990c8a2c806fed835c1924b7 100644 (file)
@@ -117,7 +117,7 @@ class ApiTimelineMentionsAction extends ApiBareAuthAction
             _('%1$s / Updates mentioning %2$s'),
             $sitename, $this->user->nickname
         );
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:Mentions:" . $this->user->id;
         $link       = common_local_url(
             'replies',
@@ -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);
index 0fb0788e98795b286daf9b7f37f7d9cf0d92804c..1ff0fd26172892defc5d48c047fe9da50ffb4423 100644 (file)
@@ -74,7 +74,7 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
         parent::prepare($args);
 
         $this->notices = $this->getNotices();
-        
+
         if ($this->since) {
             throw new ServerException("since parameter is disabled for performance; use since_id", 403);
         }
@@ -109,7 +109,7 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
         $sitename   = common_config('site', 'name');
         $sitelogo   = (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png');
         $title      = sprintf(_("%s public timeline"), $sitename);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:PublicTimeline";
         $link       = common_root_url();
         $subtitle   = sprintf(_("%s updates from everyone!"), $sitename);
@@ -122,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);
index e47bc30b854cb9a93e69cd2d229186668a5964e4..73e35c86bf81a2ecb8c7d88b661760f1891dcb2c 100644 (file)
@@ -109,7 +109,7 @@ class ApiTimelineRetweetedToMeAction extends ApiAuthAction
             $profile    = $this->auth_user->getProfile();
 
             $title      = sprintf(_("Repeated to %s"), $this->auth_user->nickname);
-            $taguribase = common_config('integration', 'taguri');
+            $taguribase = TagURI::base();
             $id         = "tag:$taguribase:RepeatedToMe:" . $this->auth_user->id;
             $link       = common_local_url('all',
                                            array('nickname' => $this->auth_user->nickname));
index e4b09e9bdaf334b860022482d5d1e0bac6b41bd9..c77912fd0f24e209bed482232be7110eb7dd45be 100644 (file)
@@ -99,6 +99,8 @@ class ApiTimelineRetweetsOfMeAction extends ApiAuthAction
 
         $strm = $this->auth_user->repeatsOfMe($offset, $limit, $this->since_id, $this->max_id);
 
+        common_debug(var_export($strm, true));
+
         switch ($this->format) {
         case 'xml':
             $this->showXmlTimeline($strm);
@@ -110,12 +112,40 @@ class ApiTimelineRetweetsOfMeAction extends ApiAuthAction
             $profile    = $this->auth_user->getProfile();
 
             $title      = sprintf(_("Repeats of %s"), $this->auth_user->nickname);
-            $taguribase = common_config('integration', 'taguri');
+            $taguribase = TagURI::base();
             $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:
index 1427d23b6a45d70e0f93f26292f11d25b8c4f1d1..a29061fccfcbc50d35eef9c27ee3e79ad94ea3c1 100644 (file)
@@ -100,16 +100,12 @@ 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,
             $sitename
         );
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:TagTimeline:".$tag;
 
         switch($this->format) {
@@ -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);
index 830b16941dc8898ccfc0453ca23a2eb384203d85..3e849cc786c56b69c77b67c5ae6eee3685cdbd8b 100644 (file)
@@ -116,7 +116,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
 
         $sitename   = common_config('site', 'name');
         $title      = sprintf(_("%s timeline"), $this->user->nickname);
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $id         = "tag:$taguribase:UserTimeline:" . $this->user->id;
         $link       = common_local_url(
             'showstream',
@@ -145,18 +145,60 @@ class ApiTimelineUserAction extends ApiBareAuthAction
             );
             break;
         case 'atom':
-            if (isset($apidata['api_arg'])) {
-                $selfuri = common_root_url() .
-                    'api/statuses/user_timeline/' .
-                    $apidata['api_arg'] . '.atom';
+
+            header('Content-Type: application/atom+xml; charset=utf-8');
+
+            // If this was called using an integer ID, i.e.: using the canonical
+            // URL for this user's feed, then pass the User object into the feed,
+            // so the OStatus plugin, and possibly other plugins, can access it.
+            // Feels sorta hacky. -- Z
+
+            $atom = null;
+            $id = $this->arg('id');
+
+            if (strval(intval($id)) === strval($id)) {
+                $atom = new AtomUserNoticeFeed($this->user);
             } else {
-                $selfuri = common_root_url() .
-                    'api/statuses/user_timeline.atom';
+                $atom = new AtomUserNoticeFeed();
+            }
+
+            $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;
             }
-            $this->showAtomTimeline(
-                $this->notices, $title, $id, $link,
-                $subtitle, $suplink, $selfuri, $logo
+
+            $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());
+            print $atom->getString(); // temporary for output buffering
+
             break;
         case 'json':
             $this->showJsonTimeline($this->notices);
index 0b4caf5bf34e742928bba6aed4e3651a271e2a43..a0598db270e64767f3432fd3ff5e18cf1d4601fe 100644 (file)
@@ -74,7 +74,14 @@ class BlockedfromgroupAction extends GroupDesignAction
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
index eaf4b7df2d8f0b62365b718cca266ffe572ac1f8..459f5f09683ca013af2ffa7335fd06b4fb7a9f4c 100644 (file)
@@ -173,6 +173,10 @@ class DocAction extends Action
         }
 
         $local = glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*');
+        if ($local === false) {
+            // Some systems return false, others array(), if dir didn't exist.
+            $local = array();
+        }
 
         if (count($local) || isset($localDef)) {
             return $this->negotiateLanguage($local, $localDef);
@@ -183,6 +187,9 @@ class DocAction extends Action
         }
 
         $dist = glob(INSTALLDIR.'/doc-src/'.$this->title.'.*');
+        if ($dist === false) {
+            $dist = array();
+        }
 
         if (count($dist) || isset($distDef)) {
             return $this->negotiateLanguage($dist, $distDef);
index ad0b6e185dcfe97c801a0787e382a4982bb21be6..d486db0c0aa3ba2bace92761e0443e6a30978046 100644 (file)
@@ -86,10 +86,14 @@ class EditgroupAction extends GroupDesignAction
         }
 
         $groupid = $this->trimmed('groupid');
+
         if ($groupid) {
             $this->group = User_group::staticGet('id', $groupid);
         } else {
-            $this->group = User_group::staticGet('nickname', $nickname);
+            $local = Local_group::staticGet('nickname', $nickname);
+            if ($local) {
+                $this->group = User_group::staticGet('id', $local->group_id);
+            }
         }
 
         if (!$this->group) {
@@ -245,6 +249,7 @@ class EditgroupAction extends GroupDesignAction
         $this->group->homepage    = $homepage;
         $this->group->description = $description;
         $this->group->location    = $location;
+        $this->group->mainpage    = common_local_url('showgroup', array('nickname' => $nickname));
 
         $result = $this->group->update($orig);
 
@@ -259,6 +264,12 @@ class EditgroupAction extends GroupDesignAction
             $this->serverError(_('Could not create aliases.'));
         }
 
+        if ($nickname != $orig->nickname) {
+            common_log(LOG_INFO, "Saving local group info.");
+            $local = Local_group::staticGet('group_id', $this->group->id);
+            $local->setNickname($nickname);
+        }
+
         $this->group->query('COMMIT');
 
         if ($this->group->nickname != $orig->nickname) {
@@ -272,7 +283,7 @@ class EditgroupAction extends GroupDesignAction
 
     function nicknameExists($nickname)
     {
-        $group = User_group::staticGet('nickname', $nickname);
+        $group = Local_group::staticGet('nickname', $nickname);
 
         if (!empty($group) &&
             $group->id != $this->group->id) {
index 2aeb1da6134df6ff19a1d7bce8150c89262a7c18..afca9768ae0c4c69c57065101f21f8b6dab6b8ea 100644 (file)
@@ -79,7 +79,7 @@ class FavorAction extends Action
             $this->clientError(_('This notice is already a favorite!'));
             return;
         }
-        $fave = Fave::addNew($user, $notice);
+        $fave = Fave::addNew($user->getProfile(), $notice);
         if (!$fave) {
             $this->serverError(_('Could not create favorite.'));
             return;
index f5fd7fe885e993adb4e2fa1fe64b468a3d6bdb81..ebdf1cee2567555748fe04e9423203f4f1a7131b 100644 (file)
@@ -56,7 +56,14 @@ class FoafGroupAction extends Action
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $this->nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
@@ -113,7 +120,7 @@ class FoafGroupAction extends Action
         if ($this->group->homepage_logo) {
             $this->element('depiction', array('rdf:resource' => $this->group->homepage_logo));
         }
-        
+
         $members = $this->group->getMembers();
         $member_details = array();
         while ($members->fetch()) {
@@ -123,7 +130,7 @@ class FoafGroupAction extends Action
                                         );
             $this->element('member', array('rdf:resource' => $member_uri));
         }
-        
+
         $admins = $this->group->getAdmins();
         while ($admins->fetch()) {
             $admin_uri = common_local_url('userbyid', array('id'=>$admins->id));
@@ -132,7 +139,7 @@ class FoafGroupAction extends Action
         }
 
         $this->elementEnd('Group');
-        
+
         ksort($member_details);
         foreach ($member_details as $uri => $details) {
             if ($details['is_admin'])
@@ -158,7 +165,7 @@ class FoafGroupAction extends Action
                                         ));
             }
         }
-        
+
         $this->elementEnd('rdf:RDF');
         $this->endXML();
     }
index e290ba5141e270ac8d4295bba1eb88872f0d53fd..526226a285715914486ffc3eb0905f60c4ebf13c 100644 (file)
@@ -90,7 +90,10 @@ class GroupDesignSettingsAction extends DesignSettingsAction
         if ($groupid) {
             $this->group = User_group::staticGet('id', $groupid);
         } else {
-            $this->group = User_group::staticGet('nickname', $nickname);
+            $local = Local_group::staticGet('nickname', $nickname);
+            if ($local) {
+                $this->group = User_group::staticGet('id', $local->group_id);
+            }
         }
 
         if (!$this->group) {
index 3c9b562962e34944ab7864b8f96157de90d114b7..f414a23cc31369665abd68eb0b69e8b899c95b07 100644 (file)
@@ -92,7 +92,10 @@ class GrouplogoAction extends GroupDesignAction
         if ($groupid) {
             $this->group = User_group::staticGet('id', $groupid);
         } else {
-            $this->group = User_group::staticGet('nickname', $nickname);
+            $local = Local_group::staticGet('nickname', $nickname);
+            if ($local) {
+                $this->group = User_group::staticGet('id', $local->group_id);
+            }
         }
 
         if (!$this->group) {
index 0f47c268dd30eda6bd4094bc7acbca56c3259031..a16debd7b068ecd4e69deec35d61e42475f83752 100644 (file)
@@ -77,7 +77,14 @@ class GroupmembersAction extends GroupDesignAction
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
@@ -192,7 +199,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,
index 866fc66eb117685ef60c8ee6b21563d594097e63..490f6f945cac57b509f968b3f771aea5b3f3c5c5 100644 (file)
@@ -92,7 +92,14 @@ class groupRssAction extends Rss10Action
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
index 10a1d5964d374ac2d18118223b3f297ca5211ed5..8aacff8b0ecd1cd2efe86de5b35a6a7b90312f03 100644 (file)
@@ -109,17 +109,21 @@ class GroupsAction extends Action
         }
 
         $offset = ($this->page-1) * GROUPS_PER_PAGE;
-        $limit =  GROUPS_PER_PAGE + 1;
+        $limit  = GROUPS_PER_PAGE + 1;
+
+        $qry = 'SELECT user_group.* '.
+          'from user_group join local_group on user_group.id = local_group.group_id '.
+          'order by user_group.created desc '.
+          'limit ' . $limit . ' offset ' . $offset;
 
         $groups = new User_group();
-        $groups->orderBy('created DESC');
-        $groups->limit($offset, $limit);
 
         $cnt = 0;
-        if ($groups->find()) {
-            $gl = new GroupList($groups, null, $this);
-            $cnt = $gl->show();
-        }
+
+        $groups->query($qry);
+
+        $gl = new GroupList($groups, null, $this);
+        $cnt = $gl->show();
 
         $this->pagination($this->page > 1, $cnt > GROUPS_PER_PAGE,
                           $this->page, 'groups');
index 235e5ab4c2c8ea792de834ce745079bd7c7dc45c..ba642f71293b13743b8f86df5511cb7d5e26c770 100644 (file)
@@ -77,7 +77,14 @@ class JoingroupAction extends Action
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
index 9b9d83b6caae243befbd9e43a43eb6b137be53f5..222d4c1b438a9b844e6efe3e1bb1398678937816 100644 (file)
@@ -77,7 +77,14 @@ class LeavegroupAction extends Action
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $this->clientError(_('No such group.'), 404);
index 9ad7d6e7c821a247cdc1961e1cbed593dc785991..f19348648d8700f50b0ef8955419dbd7a0b24ecf 100644 (file)
@@ -87,7 +87,8 @@ class MakeadminAction extends Action
             return false;
         }
         $user = common_current_user();
-        if (!$user->isAdmin($this->group)) {
+        if (!$user->isAdmin($this->group) &&
+            !$user->hasRight(Right::MAKEGROUPADMIN)) {
             $this->clientError(_('Only an admin can make another user an admin.'), 401);
             return false;
         }
index 25da7f8fc75ebcf679c88bb83bd4d8e9f94571fe..75bc293ec63e15e4df92af789e115e8a997b2cc2 100644 (file)
@@ -180,6 +180,8 @@ class NewgroupAction extends Action
             }
         }
 
+        $mainpage = common_local_url('showgroup', array('nickname' => $nickname));
+
         $cur = common_current_user();
 
         // Checked in prepare() above
@@ -192,16 +194,18 @@ class NewgroupAction extends Action
                                             'description' => $description,
                                             'location' => $location,
                                             'aliases'  => $aliases,
-                                            'userid'   => $cur->id));
+                                            'userid'   => $cur->id,
+                                            'mainpage' => $mainpage,
+                                            'local'    => true));
 
         common_redirect($group->homeUrl(), 303);
     }
 
     function nicknameExists($nickname)
     {
-        $group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
 
-        if (!empty($group)) {
+        if (!empty($local)) {
             return true;
         }
 
index 982dfde15700863f6fff8da111a7f04376fdb070..50278bfcedab55a80c9fe2c2ed359ad79399e727 100644 (file)
@@ -131,12 +131,20 @@ class PublicAction extends Action
             return _('Public timeline');
         }
     }
-    
+
     function extraHead()
     {
         parent::extraHead();
         $this->element('meta', array('http-equiv' => 'X-XRDS-Location',
                                            'content' => common_local_url('publicxrds')));
+
+        $rsd = common_local_url('rsd');
+
+        // RSD, http://tales.phrasewise.com/rfc/rsd
+
+        $this->element('link', array('rel' => 'EditURI',
+                                     'type' => 'application/rsd+xml',
+                                     'href' => $rsd));
     }
 
     /**
diff --git a/actions/rsd.php b/actions/rsd.php
new file mode 100644 (file)
index 0000000..f88bf2e
--- /dev/null
@@ -0,0 +1,226 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2010, StatusNet, Inc.
+ *
+ * Really Simple Discovery (RSD) for API access
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category API
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * RSD action class
+ *
+ * Really Simple Discovery (RSD) is a simple (to a fault, maybe)
+ * discovery tool for blog APIs.
+ *
+ * http://tales.phrasewise.com/rfc/rsd
+ *
+ * Anil Dash suggested that RSD be used for services that implement
+ * the Twitter API:
+ *
+ * http://dashes.com/anil/2009/12/the-twitter-api-is-finished.html
+ *
+ * It's in use now for WordPress.com blogs:
+ *
+ * http://matt.wordpress.com/xmlrpc.php?rsd
+ *
+ * I (evan@status.net) have tried to stay faithful to the premise of
+ * RSD, while adding information useful to StatusNet client developers.
+ * In particular:
+ *
+ * - There is a link from each user's profile page to their personal
+ *   RSD feed. A personal rsd.xml includes a 'blogID' element that is
+ *   their username.
+ * - There is a link from the public root to '/rsd.xml', a public RSD
+ *   feed. It's identical to the personal rsd except it doesn't include
+ *   a blogId.
+ * - I've added a setting to the API to indicate that OAuth support is
+ *   available.
+ *
+ * @category API
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ */
+
+class RsdAction extends Action
+{
+    /**
+     * Optional attribute for the personal rsd.xml file.
+     */
+
+    var $user = null;
+
+    /**
+     * Prepare the action for use.
+     *
+     * Check for a nickname; redirect if non-canonical; if
+     * not provided, assume public rsd.xml.
+     *
+     * @param array $args GET, POST, and URI arguments.
+     *
+     * @return boolean success flag
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        // optional argument
+
+        $nickname_arg = $this->arg('nickname');
+
+        if (empty($nickname_arg)) {
+            $this->user = null;
+        } else {
+            $nickname = common_canonical_nickname($nickname_arg);
+
+            // Permanent redirect on non-canonical nickname
+
+            if ($nickname_arg != $nickname) {
+                common_redirect(common_local_url('rsd',
+                                                 array('nickname' => $nickname)),
+                                301);
+                return false;
+            }
+
+            $this->user = User::staticGet('nickname', $nickname);
+
+            if (empty($this->user)) {
+                $this->clientError(_('No such user.'), 404);
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Action handler.
+     *
+     * Outputs the XML format for an RSD file. May include
+     * personal information if this is a personal file
+     * (based on whether $user attribute is set).
+     *
+     * @param array $args array of arguments
+     *
+     * @return nothing
+     */
+
+    function handle($args)
+    {
+        header('Content-Type: application/rsd+xml');
+
+        $this->startXML();
+
+        $rsdNS = 'http://archipelago.phrasewise.com/rsd';
+        $this->elementStart('rsd', array('version' => '1.0',
+                                         'xmlns' => $rsdNS));
+        $this->elementStart('service');
+        $this->element('engineName', null, _('StatusNet'));
+        $this->element('engineLink', null, 'http://status.net/');
+        $this->elementStart('apis');
+        if (Event::handle('StartRsdListApis', array($this, $this->user))) {
+
+            $blogID   = (empty($this->user)) ? '' : $this->user->nickname;
+            $apiAttrs = array('name' => 'Twitter',
+                              'preferred' => 'true',
+                              'apiLink' => $this->_apiRoot(),
+                              'blogID' => $blogID);
+
+            $this->elementStart('api', $apiAttrs);
+            $this->elementStart('settings');
+            $this->element('docs', null,
+                           'http://status.net/wiki/TwitterCompatibleAPI');
+            $this->element('setting', array('name' => 'OAuth'),
+                           'true');
+            $this->elementEnd('settings');
+            $this->elementEnd('api');
+            Event::handle('EndRsdListApis', array($this, $this->user));
+        }
+        $this->elementEnd('apis');
+        $this->elementEnd('service');
+        $this->elementEnd('rsd');
+
+        $this->endXML();
+
+        return true;
+    }
+
+    /**
+     * Returns last-modified date for use in caching
+     *
+     * Per-user rsd.xml is dated to last change of user
+     * (in case of nickname change); public has no date.
+     *
+     * @return string date of last change of this page
+     */
+
+    function lastModified()
+    {
+        if (!empty($this->user)) {
+            return $this->user->modified;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Flag to indicate if this action is read-only
+     *
+     * It is; it doesn't change the DB.
+     *
+     * @param array $args ignored
+     *
+     * @return boolean true
+     */
+
+    function isReadOnly($args)
+    {
+        return true;
+    }
+
+    /**
+     * Return current site's API root
+     *
+     * Varies based on URL parameters, like if fancy URLs are
+     * turned on.
+     *
+     * @return string API root URI for this site
+     */
+
+    private function _apiRoot()
+    {
+        if (common_config('site', 'fancy')) {
+            return common_path('api/', true);
+        } else {
+            return common_path('index.php/api/', true);
+        }
+    }
+}
index 8042a4951339a26f7aebaf4ad56f2e05de3a386b..0139ba157de75ca00496a695813d655931027ff5 100644 (file)
@@ -122,7 +122,15 @@ class ShowgroupAction extends GroupDesignAction
             return false;
         }
 
-        $this->group = User_group::staticGet('nickname', $nickname);
+        $local = Local_group::staticGet('nickname', $nickname);
+
+        if (!$local) {
+            common_log(LOG_NOTICE, "Couldn't find local group for nickname '$nickname'");
+            $this->clientError(_('No such group.'), 404);
+            return false;
+        }
+
+        $this->group = User_group::staticGet('id', $local->group_id);
 
         if (!$this->group) {
             $alias = Group_alias::staticGet('alias', $nickname);
@@ -330,13 +338,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,
index c529193860ff886d02b937514f9f8474b9b2af3b..f9407e35a1f7890189b817c39dd8900c2c6a1f33 100644 (file)
@@ -131,14 +131,14 @@ class ShowstreamAction extends ProfileAction
                      new Feed(Feed::RSS2,
                               common_local_url('ApiTimelineUser',
                                                array(
-                                                    'id' => $this->user->nickname,
+                                                    'id' => $this->user->id,
                                                     'format' => 'rss')),
                               sprintf(_('Notice feed for %s (RSS 2.0)'),
                                       $this->user->nickname)),
                      new Feed(Feed::ATOM,
                               common_local_url('ApiTimelineUser',
                                                array(
-                                                    'id' => $this->user->nickname,
+                                                    'id' => $this->user->id,
                                                     'format' => 'atom')),
                               sprintf(_('Notice feed for %s (Atom)'),
                                       $this->user->nickname)),
@@ -178,6 +178,15 @@ class ShowstreamAction extends ProfileAction
         $this->element('link', array('rel' => 'microsummary',
                                      'href' => common_local_url('microsummary',
                                                                 array('nickname' => $this->profile->nickname))));
+
+        $rsd = common_local_url('rsd',
+                                array('nickname' => $this->profile->nickname));
+
+        // RSD, http://tales.phrasewise.com/rfc/rsd
+        $this->element('link', array('rel' => 'EditURI',
+                                     'type' => 'application/rsd+xml',
+                                     'href' => $rsd));
+
     }
 
     function showProfile()
index a90d7facdfaca15e60c16d03c376833af228d448..3745311b6621998b9b4610e0f12fe377304a5126 100644 (file)
@@ -1,7 +1,9 @@
 <?php
-/*
+/**
  * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+ * Copyright (C) 2008-2010, StatusNet, Inc.
+ *
+ * Subscription action.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * PHP version 5
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Subscription action
+ *
+ * Subscribing to a profile. Does not work for OMB 0.1 remote subscriptions,
+ * but may work for other remote subscription protocols, like OStatus.
+ *
+ * Takes parameters:
+ *
+ *    - subscribeto: a profile ID
+ *    - token: session token to prevent CSRF attacks
+ *    - ajax: boolean; whether to return Ajax or full-browser results
+ *
+ * Only works if the current user is logged in.
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
 
 class SubscribeAction extends Action
 {
+    var $user;
+    var $other;
 
-    function handle($args)
-    {
-        parent::handle($args);
+    /**
+     * Check pre-requisites and instantiate attributes
+     *
+     * @param Array $args array of arguments (URL, GET, POST)
+     *
+     * @return boolean success flag
+     */
 
-        if (!common_logged_in()) {
-            $this->clientError(_('Not logged in.'));
-            return;
-        }
+    function prepare($args)
+    {
+        parent::prepare($args);
 
-        $user = common_current_user();
+        // Only allow POST requests
 
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-            common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname)));
-            return;
+            $this->clientError(_('This action only accepts POST requests.'));
+            return false;
         }
 
-        # CSRF protection
+        // CSRF protection
 
         $token = $this->trimmed('token');
 
         if (!$token || $token != common_session_token()) {
-            $this->clientError(_('There was a problem with your session token. Try again, please.'));
-            return;
+            $this->clientError(_('There was a problem with your session token.'.
+                                 ' Try again, please.'));
+            return false;
+        }
+
+        // Only for logged-in users
+
+        $this->user = common_current_user();
+
+        if (empty($this->user)) {
+            $this->clientError(_('Not logged in.'));
+            return false;
         }
 
+        // Profile to subscribe to
+
         $other_id = $this->arg('subscribeto');
 
-        $other = User::staticGet('id', $other_id);
+        $this->other = Profile::staticGet('id', $other_id);
 
-        if (!$other) {
-            $this->clientError(_('Not a local user.'));
-            return;
+        if (empty($this->other)) {
+            $this->clientError(_('No such profile.'));
+            return false;
         }
 
-        $result = subs_subscribe_to($user, $other);
+        // OMB 0.1 doesn't have a mechanism for local-server-
+        // originated subscription.
+
+        $omb01 = Remote_profile::staticGet('id', $other_id);
 
-        if (is_string($result)) {
-            $this->clientError($result);
-            return;
+        if (!empty($omb01)) {
+            $this->clientError(_('You cannot subscribe to an OMB 0.1'.
+                                 ' remote profile with this action.'));
+            return false;
         }
 
+        return true;
+    }
+
+    /**
+     * Handle request
+     *
+     * Does the subscription and returns results.
+     *
+     * @param Array $args unused.
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        // Throws exception on error
+
+        Subscription::start($this->user->getProfile(),
+                            $this->other);
+
         if ($this->boolean('ajax')) {
             $this->startHTML('text/xml;charset=utf-8');
             $this->elementStart('head');
             $this->element('title', null, _('Subscribed'));
             $this->elementEnd('head');
             $this->elementStart('body');
-            $unsubscribe = new UnsubscribeForm($this, $other->getProfile());
+            $unsubscribe = new UnsubscribeForm($this, $this->other->getProfile());
             $unsubscribe->show();
             $this->elementEnd('body');
             $this->elementEnd('html');
         } else {
-            common_redirect(common_local_url('subscriptions', array('nickname' =>
-                                                                $user->nickname)),
-                            303);
+            $url = common_local_url('subscriptions',
+                                    array('nickname' => $this->user->nickname));
+            common_redirect($url, 303);
         }
     }
 }
index 0ef31aa9f1d7124b24017f60398ed1e926381db7..ba6171ef4ccc596abc16376f039414db6eb32875 100644 (file)
@@ -79,32 +79,37 @@ class SubscriptionsAction extends GalleryAction
 
     function showContent()
     {
-        parent::showContent();
+        if (Event::handle('StartShowSubscriptionsContent', array($this))) {
+            parent::showContent();
 
-        $offset = ($this->page-1) * PROFILES_PER_PAGE;
-        $limit =  PROFILES_PER_PAGE + 1;
+            $offset = ($this->page-1) * PROFILES_PER_PAGE;
+            $limit =  PROFILES_PER_PAGE + 1;
 
-        $cnt = 0;
+            $cnt = 0;
 
-        if ($this->tag) {
-            $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit);
-        } else {
-            $subscriptions = $this->user->getSubscriptions($offset, $limit);
-        }
+            if ($this->tag) {
+                $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit);
+            } else {
+                $subscriptions = $this->user->getSubscriptions($offset, $limit);
+            }
 
-        if ($subscriptions) {
-            $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this);
-            $cnt = $subscriptions_list->show();
-            if (0 == $cnt) {
-                $this->showEmptyListMessage();
+            if ($subscriptions) {
+                $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this);
+                $cnt = $subscriptions_list->show();
+                if (0 == $cnt) {
+                    $this->showEmptyListMessage();
+                }
             }
-        }
 
-        $subscriptions->free();
+            $subscriptions->free();
+
+            $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
+                              $this->page, 'subscriptions',
+                              array('nickname' => $this->user->nickname));
 
-        $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
-                          $this->page, 'subscriptions',
-                          array('nickname' => $this->user->nickname));
+
+            Event::handle('EndShowSubscriptionsContent', array($this));
+        }
     }
 
     function showScripts()
index baed2a0c7c24107cb15731489fc312974ea267c6..e389ddec84f43b2bf44428d7bbf99314e19eed6c 100644 (file)
@@ -245,7 +245,7 @@ class TwitapisearchatomAction extends ApiAction
                              'xmlns:twitter' => 'http://api.twitter.com/',
                              'xml:lang' => 'en-US')); // XXX Other locales ?
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $this->element('id', null, "tag:$taguribase:search/$server");
 
         $site_uri = common_path(false);
@@ -329,7 +329,7 @@ class TwitapisearchatomAction extends ApiAction
 
         $this->elementStart('entry');
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
 
         $this->element('id', null, "tag:$taguribase:$notice->id");
         $this->element('published', null, common_date_w3dtf($notice->created));
index 4321f1302e0ca6735c8307128fe083a00e616946..7f71c60dbe64441adc9515b1ab106362089ce897 100644 (file)
@@ -127,10 +127,10 @@ class UserauthorizationAction extends Action
         $location = $params->getLocation();
         $avatar   = $params->getAvatarURL();
 
-        $this->elementStart('div', array('class' => 'profile'));
         $this->elementStart('div', 'entity_profile vcard');
-        $this->elementStart('a', array('href' => $profile,
-                                            'class' => 'url'));
+        $this->elementStart('dl', 'entity_depiction');
+        $this->element('dt', null, _('Photo'));
+        $this->elementStart('dd');
         if ($avatar) {
             $this->element('img', array('src' => $avatar,
                                         'class' => 'photo avatar',
@@ -138,11 +138,19 @@ class UserauthorizationAction extends Action
                                         'height' => AVATAR_PROFILE_SIZE,
                                         'alt' => $nickname));
         }
+        $this->elementEnd('dd');
+        $this->elementEnd('dl');
+
+        $this->elementStart('dl', 'entity_nickname');
+        $this->element('dt', null, _('Nickname'));
+        $this->elementStart('dd');
         $hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname';
-        $this->elementStart('span', $hasFN);
+        $this->elementStart('a', array('href' => $profile,
+                                       'class' => 'url '.$hasFN));
         $this->raw($nickname);
-        $this->elementEnd('span');
         $this->elementEnd('a');
+        $this->elementEnd('dd');
+        $this->elementEnd('dl');
 
         if (!is_null($fullname)) {
             $this->elementStart('dl', 'entity_fn');
@@ -214,7 +222,6 @@ class UserauthorizationAction extends Action
         $this->elementEnd('li');
         $this->elementEnd('ul');
         $this->elementEnd('div');
-        $this->elementEnd('div');
     }
 
     function sendAuthorization()
@@ -350,4 +357,4 @@ class UserauthorizationAction extends Action
             }
         }
     }
-}
\ No newline at end of file
+}
index 91bde0f0401b6dc144b48a6ba434c312c80c967c..dbe2cd813847eb585f94999b595e2f495ab0d03b 100644 (file)
@@ -82,9 +82,20 @@ class Avatar extends Memcached_DataObject
             $server = common_config('site', 'server');
         }
 
-        // XXX: protocol
+        $ssl = common_config('avatar', 'ssl');
+
+        if (is_null($ssl)) { // null -> guess
+            if (common_config('site', 'ssl') == 'always' &&
+                !common_config('avatar', 'server')) {
+                $ssl = true;
+            } else {
+                $ssl = false;
+            }
+        }
+
+        $protocol = ($ssl) ? 'https' : 'http';
 
-        return 'http://'.$server.$path.$filename;
+        return $protocol.'://'.$server.$path.$filename;
     }
 
     function displayUrl()
diff --git a/classes/Conversation.php b/classes/Conversation.php
new file mode 100755 (executable)
index 0000000..ea8bd87
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Data class for Conversations
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Data
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
+
+class Conversation extends Memcached_DataObject
+{
+    ###START_AUTOCODE
+    /* the code below is auto generated do not remove the above tag */
+
+    public $__table = 'conversation';                    // table name
+    public $id;                              // int(4)  primary_key not_null
+    public $uri;                             // varchar(225)  unique_key
+    public $created;                         // datetime   not_null
+    public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
+
+    /* Static get */
+    function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('conversation',$k,$v); }
+
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
+
+    /**
+     * Factory method for creating a new conversation
+     *
+     * @return Conversation the new conversation DO
+     */
+    static function create()
+    {
+        $conv = new Conversation();
+        $conv->created = common_sql_now();
+        $id = $conv->insert();
+
+        if (empty($id)) {
+            common_log_db_error($conv, 'INSERT', __FILE__);
+            return null;
+        }
+
+        $orig = clone($conv);
+        $orig->uri = common_local_url('conversation', array('id' => $id));
+        $result = $orig->update($conv);
+
+        if (empty($result)) {
+            common_log_db_error($conv, 'UPDATE', __FILE__);
+            return null;
+        }
+
+        return $conv;
+    }
+
+}
+
index 4e7d7dfb257854a4a898ae44524b9a0739671e72..ff44e010964042f0d6e8b18de603668c2c71d496 100644 (file)
@@ -155,9 +155,20 @@ class Design extends Memcached_DataObject
             $server = common_config('site', 'server');
         }
 
-        // XXX: protocol
+        $ssl = common_config('background', 'ssl');
+
+        if (is_null($ssl)) { // null -> guess
+            if (common_config('site', 'ssl') == 'always' &&
+                !common_config('background', 'server')) {
+                $ssl = true;
+            } else {
+                $ssl = false;
+            }
+        }
+
+        $protocol = ($ssl) ? 'https' : 'http';
 
-        return 'http://'.$server.$path.$filename;
+        return $protocol.'://'.$server.$path.$filename;
     }
 
     function setDisposition($on, $off, $tile)
index 8113c8e1668a508251323f117468da25d119f7f6..0b6eec2bc40af2e2742332fcc1dae6883521e218 100644 (file)
@@ -21,17 +21,47 @@ class Fave extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    static function addNew($user, $notice) {
-        $fave = new Fave();
-        $fave->user_id = $user->id;
-        $fave->notice_id = $notice->id;
-        if (!$fave->insert()) {
-            common_log_db_error($fave, 'INSERT', __FILE__);
-            return false;
+    static function addNew($profile, $notice) {
+
+        $fave = null;
+
+        if (Event::handle('StartFavorNotice', array($profile, $notice, &$fave))) {
+
+            $fave = new Fave();
+
+            $fave->user_id   = $profile->id;
+            $fave->notice_id = $notice->id;
+
+            if (!$fave->insert()) {
+                common_log_db_error($fave, 'INSERT', __FILE__);
+                return false;
+            }
+
+            Event::handle('EndFavorNotice', array($profile, $notice));
         }
+
         return $fave;
     }
 
+    function delete()
+    {
+        $profile = Profile::staticGet('id', $this->user_id);
+        $notice  = Notice::staticGet('id', $this->notice_id);
+
+        $result = null;
+
+        if (Event::handle('StartDisfavorNotice', array($profile, $notice, &$result))) {
+
+            $result = parent::delete();
+
+            if ($result) {
+                Event::handle('EndDisfavorNotice', array($profile, $notice));
+            }
+        }
+
+        return $result;
+    }
+
     function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Fave', $kv);
index ee418a802413a203ed3ea1460afb8fc3d91aeab7..91b12d2e28664e61206aadb9abb4e8301fe21441 100644 (file)
@@ -228,9 +228,20 @@ class File extends Memcached_DataObject
                 $server = common_config('site', 'server');
             }
 
-            // XXX: protocol
+            $ssl = common_config('attachments', 'ssl');
 
-            return 'http://'.$server.$path.$filename;
+            if (is_null($ssl)) { // null -> guess
+                if (common_config('site', 'ssl') == 'always' &&
+                    !common_config('attachments', 'server')) {
+                    $ssl = true;
+                } else {
+                    $ssl = false;
+                }
+            }
+
+            $protocol = ($ssl) ? 'https' : 'http';
+
+            return $protocol.'://'.$server.$path.$filename;
         }
     }
 
diff --git a/classes/Local_group.php b/classes/Local_group.php
new file mode 100644 (file)
index 0000000..42312ec
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Table Definition for local_group
+ */
+
+class Local_group extends Memcached_DataObject
+{
+    ###START_AUTOCODE
+    /* the code below is auto generated do not remove the above tag */
+
+    public $__table = 'local_group';                     // table name
+    public $group_id;                        // int(4)  primary_key not_null
+    public $nickname;                        // varchar(64)  unique_key
+    public $created;                         // datetime   not_null default_0000-00-00%2000%3A00%3A00
+    public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
+
+    /* Static get */
+    function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Local_group',$k,$v); }
+
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
+
+    function sequenceKey()
+    {
+        return array(false, false, false);
+    }
+
+    function setNickname($nickname)
+    {
+        $this->decache();
+        $qry = 'UPDATE local_group set nickname = "'.$nickname.'" where group_id = ' . $this->group_id;
+
+        $result = $this->query($qry);
+
+        if ($result) {
+            $this->nickname = $nickname;
+            $this->fixupTimestamps();
+            $this->encache();
+        } else {
+            common_log_db_error($local, 'UPDATE', __FILE__);
+            throw new ServerException(_('Could not update local group.'));
+        }
+
+        return $result;
+    }
+}
index 16c3d906ce30688997572a20e5c9895b3ec42585..bc4c3a000ce11a732bc495e878fc018854dcd79d 100644 (file)
@@ -314,7 +314,7 @@ class Memcached_DataObject extends Safe_DataObject
             $cached[] = clone($inst);
         }
         $inst->free();
-        $c->set($ckey, $cached, MEMCACHE_COMPRESSED, $expiry);
+        $c->set($ckey, $cached, Cache::COMPRESSED, $expiry);
         return new ArrayWrapper($cached);
     }
 
@@ -501,7 +501,11 @@ class Memcached_DataObject extends Safe_DataObject
 
     function raiseError($message, $type = null, $behaviour = null)
     {
-        throw new ServerException("DB_DataObject error [$type]: $message");
+        $id = get_class($this);
+        if ($this->id) {
+            $id .= ':' . $this->id;
+        }
+        throw new ServerException("[$id] DB_DataObject error [$type]: $message");
     }
 
     static function cacheGet($keyPart)
index 486a65a3c7e2aa6d78bc8478f579b27e8d80ab93..2f8ab00b5dc097886687a8e2413bd59df689c59d 100644 (file)
@@ -22,4 +22,19 @@ class Nonce extends Memcached_DataObject
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
+
+    /**
+     * Compatibility hack for PHP 5.3
+     *
+     * The statusnet.links.ini entry cannot be read because "," is no longer
+     * allowed in key names when read by parse_ini_file().
+     *
+     * @return   array
+     * @access   public
+     */
+    function links()
+    {
+        return array('consumer_key,token' => 'token:consumer_key,token');
+    }
+
 }
index f9f38635797f44456610cb973baf2611bdebd3a3..46c5ebb37cfdde1d2b6caff0b51c03cbd1d8b55b 100644 (file)
@@ -121,6 +121,9 @@ class Notice extends Memcached_DataObject
         $result = parent::delete();
     }
 
+    /**
+     * Extract #hashtags from this notice's content and save them to the database.
+     */
     function saveTags()
     {
         /* extract all #hastags */
@@ -129,14 +132,22 @@ class Notice extends Memcached_DataObject
             return true;
         }
 
+        /* Add them to the database */
+        return $this->saveKnownTags($match[1]);
+    }
+
+    /**
+     * Record the given set of hash tags in the db for this notice.
+     * Given tag strings will be normalized and checked for dupes.
+     */
+    function saveKnownTags($hashtags)
+    {
         //turn each into their canonical tag
         //this is needed to remove dupes before saving e.g. #hash.tag = #hashtag
-        $hashtags = array();
-        for($i=0; $i<count($match[1]); $i++) {
-            $hashtags[] = common_canonical_tag($match[1][$i]);
+        for($i=0; $i<count($hashtags); $i++) {
+            $hashtags[$i] = common_canonical_tag($hashtags[$i]);
         }
 
-        /* Add them to the database */
         foreach(array_unique($hashtags) as $hashtag) {
             /* elide characters we don't want in the tag */
             $this->saveTag($hashtag);
@@ -145,6 +156,10 @@ class Notice extends Memcached_DataObject
         return true;
     }
 
+    /**
+     * Record a single hash tag as associated with this notice.
+     * Tag format and uniqueness must be validated by caller.
+     */
     function saveTag($hashtag)
     {
         $tag = new Notice_tag();
@@ -187,13 +202,23 @@ class Notice extends Memcached_DataObject
      *              int 'location_ns' geoname namespace to interpret location_id
      *              int 'reply_to'; notice ID this is a reply to
      *              int 'repeat_of'; notice ID this is a repeat of
-     *              string 'uri' permalink to notice; defaults to local notice URL
+     *              string 'uri' unique ID for notice; defaults to local notice URL
+     *              string 'url' permalink to notice; defaults to local notice URL
+     *              string 'rendered' rendered HTML version of content
+     *              array 'replies' list of profile URIs for reply delivery in
+     *                              place of extracting @-replies from content.
+     *              array 'groups' list of group IDs to deliver to, in place of
+     *                              extracting ! tags from content
+     *              array 'tags' list of hashtag strings to save with the notice
+     *                           in place of extracting # tags from content
+     * @fixme tag override
      *
      * @return Notice
      * @throws ClientException
      */
     static function saveNew($profile_id, $content, $source, $options=null) {
         $defaults = array('uri' => null,
+                          'url' => null,
                           'reply_to' => null,
                           'repeat_of' => null);
 
@@ -256,9 +281,16 @@ class Notice extends Memcached_DataObject
         }
 
         $notice->content = $final;
-        $notice->rendered = common_render_content($final, $notice);
+
+        if (!empty($rendered)) {
+            $notice->rendered = $rendered;
+        } else {
+            $notice->rendered = common_render_content($final, $notice);
+        }
+
         $notice->source = $source;
         $notice->uri = $uri;
+        $notice->url = $url;
 
         // Handle repeat case
 
@@ -309,7 +341,8 @@ class Notice extends Memcached_DataObject
             // the beginning of a new conversation.
 
             if (empty($notice->conversation)) {
-                $notice->conversation = $notice->id;
+                $conv = Conversation::create();
+                $notice->conversation = $conv->id;
                 $changed = true;
             }
 
@@ -324,21 +357,47 @@ class Notice extends Memcached_DataObject
 
         # Clear the cache for subscribed users, so they'll update at next request
         # XXX: someone clever could prepend instead of clearing the cache
+
         $notice->blowOnInsert();
 
+        // Save per-notice metadata...
+
+        if (isset($replies)) {
+            $notice->saveKnownReplies($replies);
+        } else {
+            $notice->saveReplies();
+        }
+
+        if (isset($groups)) {
+            $notice->saveKnownGroups($groups);
+        } else {
+            $notice->saveGroups();
+        }
+
+        if (isset($tags)) {
+            $notice->saveKnownTags($tags);
+        } else {
+            $notice->saveTags();
+        }
+
+        // @fixme pass in data for URLs too?
+        $notice->saveUrls();
+
+        // Prepare inbox delivery, may be queued to background.
         $notice->distribute();
 
         return $notice;
     }
 
-    function blowOnInsert()
+    function blowOnInsert($conversation = false)
     {
         self::blow('profile:notice_ids:%d', $this->profile_id);
         self::blow('public');
 
-        if ($this->conversation != $this->id) {
-            self::blow('notice:conversation_ids:%d', $this->conversation);
-        }
+        // XXX: Before we were blowing the casche only if the notice id
+        // was not the root of the conversation.  What to do now?
+
+        self::blow('notice:conversation_ids:%d', $this->conversation);
 
         if (!empty($this->repeat_of)) {
             self::blow('notice:repeats:%d', $this->repeat_of);
@@ -675,11 +734,39 @@ class Notice extends Memcached_DataObject
         return $ni;
     }
 
-    function addToInboxes($groups, $recipients)
+    /**
+     * Adds this notice to the inboxes of each local user who should receive
+     * it, based on author subscriptions, group memberships, and @-replies.
+     *
+     * Warning: running a second time currently will make items appear
+     * multiple times in users' inboxes.
+     *
+     * @fixme make more robust against errors
+     * @fixme break up massive deliveries to smaller background tasks
+     *
+     * @param array $groups optional list of Group objects;
+     *              if left empty, will be loaded from group_inbox records
+     * @param array $recipient optional list of reply profile ids
+     *              if left empty, will be loaded from reply records
+     */
+    function addToInboxes($groups=null, $recipients=null)
     {
         $ni = $this->whoGets($groups, $recipients);
 
-        Inbox::bulkInsert($this->id, array_keys($ni));
+        $ids = array_keys($ni);
+
+        // We remove the author (if they're a local user),
+        // since we'll have already done this in distribute()
+
+        $i = array_search($this->profile_id, $ids);
+
+        if ($i !== false) {
+            unset($ids[$i]);
+        }
+
+        // Bulk insert
+
+        Inbox::bulkInsert($this->id, $ids);
 
         return;
     }
@@ -712,6 +799,42 @@ class Notice extends Memcached_DataObject
     }
 
     /**
+     * Record this notice to the given group inboxes for delivery.
+     * Overrides the regular parsing of !group markup.
+     *
+     * @param string $group_ids
+     * @fixme might prefer URIs as identifiers, as for replies?
+     *        best with generalizations on user_group to support
+     *        remote groups better.
+     */
+    function saveKnownGroups($group_ids)
+    {
+        if (!is_array($group_ids)) {
+            throw new ServerException("Bad type provided to saveKnownGroups");
+        }
+
+        $groups = array();
+        foreach ($group_ids as $id) {
+            $group = User_group::staticGet('id', $id);
+            if ($group) {
+                common_log(LOG_ERR, "Local delivery to group id $id, $group->nickname");
+                $result = $this->addToGroupInbox($group);
+                if (!$result) {
+                    common_log_db_error($gi, 'INSERT', __FILE__);
+                }
+
+                // @fixme should we save the tags here or not?
+                $groups[] = clone($group);
+            } else {
+                common_log(LOG_ERR, "Local delivery to group id $id skipped, doesn't exist");
+            }
+        }
+
+        return $groups;
+    }
+
+    /**
+     * Parse !group delivery and record targets into group_inbox.
      * @return array of Group objects
      */
     function saveGroups()
@@ -783,7 +906,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.'));
             }
@@ -795,8 +918,49 @@ class Notice extends Memcached_DataObject
     }
 
     /**
+     * Save reply records indicating that this notice needs to be
+     * delivered to the local users with the given URIs.
+     *
+     * Since this is expected to be used when saving foreign-sourced
+     * messages, we won't deliver to any remote targets as that's the
+     * source service's responsibility.
+     *
+     * @fixme Unlike saveReplies() there's no mail notification here.
+     *        Move that to distrib queue handler?
+     *
+     * @param array of unique identifier URIs for recipients
+     */
+    function saveKnownReplies($uris)
+    {
+        foreach ($uris as $uri) {
+
+            $user = User::staticGet('uri', $uri);
+
+            if (!empty($user)) {
+
+                $reply = new Reply();
+
+                $reply->notice_id  = $this->id;
+                $reply->profile_id = $user->id;
+
+                $id = $reply->insert();
+            }
+        }
+
+        return;
+    }
+
+    /**
+     * Pull @-replies from this message's content in StatusNet markup format
+     * and save reply records indicating that this message needs to be
+     * delivered to those users.
+     *
+     * Side effect: local recipients get e-mail notifications here.
+     * @fixme move mail notifications to distrib?
+     *
      * @return array of integer profile IDs
      */
+
     function saveReplies()
     {
         // Don't save reply data for repeats
@@ -805,76 +969,44 @@ class Notice extends Memcached_DataObject
             return array();
         }
 
-        // Alternative reply format
-        $tname = false;
-        if (preg_match('/^T ([A-Z0-9]{1,64}) /', $this->content, $match)) {
-            $tname = $match[1];
-        }
-        // extract all @messages
-        $cnt = preg_match_all('/(?:^|\s)@([a-z0-9]{1,64})/', $this->content, $match);
-
-        $names = array();
-
-        if ($cnt || $tname) {
-            // XXX: is there another way to make an array copy?
-            $names = ($tname) ? array_unique(array_merge(array(strtolower($tname)), $match[1])) : array_unique($match[1]);
-        }
-
         $sender = Profile::staticGet($this->profile_id);
 
+        $mentions = common_find_mentions($this->profile_id, $this->content);
+
         $replied = array();
 
         // store replied only for first @ (what user/notice what the reply directed,
         // we assume first @ is it)
 
-        for ($i=0; $i<count($names); $i++) {
-            $nickname = $names[$i];
-            $recipient = common_relative_profile($sender, $nickname, $this->created);
-            if (empty($recipient)) {
-                continue;
-            }
-            // Don't save replies from blocked profile to local user
-            $recipient_user = User::staticGet('id', $recipient->id);
-            if (!empty($recipient_user) && $recipient_user->hasBlocked($sender)) {
-                continue;
-            }
-            $reply = new Reply();
-            $reply->notice_id = $this->id;
-            $reply->profile_id = $recipient->id;
-            $id = $reply->insert();
-            if (!$id) {
-                $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
-                common_log(LOG_ERR, 'DB error inserting reply: ' . $last_error->message);
-                common_server_error(sprintf(_('DB error inserting reply: %s'), $last_error->message));
-                return array();
-            } else {
-                $replied[$recipient->id] = 1;
-            }
-        }
+        foreach ($mentions as $mention) {
 
-        // Hash format replies, too
-        $cnt = preg_match_all('/(?:^|\s)@#([a-z0-9]{1,64})/', $this->content, $match);
-        if ($cnt) {
-            foreach ($match[1] as $tag) {
-                $tagged = Profile_tag::getTagged($sender->id, $tag);
-                foreach ($tagged as $t) {
-                    if (!$replied[$t->id]) {
-                        // Don't save replies from blocked profile to local user
-                        $t_user = User::staticGet('id', $t->id);
-                        if ($t_user && $t_user->hasBlocked($sender)) {
-                            continue;
-                        }
-                        $reply = new Reply();
-                        $reply->notice_id = $this->id;
-                        $reply->profile_id = $t->id;
-                        $id = $reply->insert();
-                        if (!$id) {
-                            common_log_db_error($reply, 'INSERT', __FILE__);
-                            return array();
-                        } else {
-                            $replied[$recipient->id] = 1;
-                        }
-                    }
+            foreach ($mention['mentioned'] as $mentioned) {
+
+                // skip if they're already covered
+
+                if (!empty($replied[$mentioned->id])) {
+                    continue;
+                }
+
+                // Don't save replies from blocked profile to local user
+
+                $mentioned_user = User::staticGet('id', $mentioned->id);
+                if (!empty($mentioned_user) && $mentioned_user->hasBlocked($sender)) {
+                    continue;
+                }
+
+                $reply = new Reply();
+
+                $reply->notice_id  = $this->id;
+                $reply->profile_id = $mentioned->id;
+
+                $id = $reply->insert();
+
+                if (!$id) {
+                    common_log_db_error($reply, 'INSERT', __FILE__);
+                    throw new ServerException("Couldn't save reply for {$this->id}, {$mentioned->id}");
+                } else {
+                    $replied[$mentioned->id] = 1;
                 }
             }
         }
@@ -915,8 +1047,9 @@ class Notice extends Memcached_DataObject
     }
 
     /**
-     * Same calculation as saveGroups but without the saving
-     * @fixme merge the functions
+     * Pull list of groups this notice needs to be delivered to,
+     * as previously recorded by saveGroups() or saveKnownGroups().
+     *
      * @return array of Group objects
      */
     function getGroups()
@@ -940,7 +1073,10 @@ class Notice extends Memcached_DataObject
 
         if ($gi->find()) {
             while ($gi->fetch()) {
-                $groups[] = clone($gi);
+                $group = User_group::staticGet('id', $gi->group_id);
+                if ($group) {
+                    $groups[] = $group;
+                }
             }
         }
 
@@ -957,7 +1093,11 @@ 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:poco' => 'http://portablecontacts.net/spec/1.0',
+                           'xmlns:ostatus' => 'http://ostatus.org/schema/1.0');
         } else {
             $attrs = array();
         }
@@ -983,11 +1123,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,7 +1130,11 @@ 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',
+                                   'type' => 'text/html',
                                    'href' => $this->bestUrl()));
 
         $xs->element('id', null, $this->uri);
@@ -1014,6 +1153,55 @@ class Notice extends Memcached_DataObject
             }
         }
 
+        if (!empty($this->conversation)) {
+
+            $conv = Conversation::staticGet('id', $this->conversation);
+
+            if (!empty($conv)) {
+                $xs->element(
+                    'link', array(
+                        'rel' => 'ostatus:conversation',
+                        'href' => $conv->uri
+                    )
+                );
+            }
+        }
+
+        $reply_ids = $this->getReplies();
+
+        foreach ($reply_ids as $id) {
+            $profile = Profile::staticGet('id', $id);
+           if (!empty($profile)) {
+                $xs->element(
+                    'link', array(
+                        'rel' => 'ostatus:attention',
+                        'href' => $profile->getUri()
+                    )
+                );
+            }
+        }
+
+        $groups = $this->getGroups();
+
+        foreach ($groups as $group) {
+            $xs->element(
+                'link', array(
+                    'rel' => 'ostatus:attention',
+                    'href' => $group->permalink()
+                )
+            );
+        }
+
+        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 +1229,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');
@@ -1051,6 +1237,21 @@ class Notice extends Memcached_DataObject
         return $xs->getString();
     }
 
+    /**
+     * Returns an XML string fragment with a reference to a notice as an
+     * Activity Streams noun object with the given element type.
+     *
+     * Assumes that 'activity' namespace has been previously defined.
+     *
+     * @param string $element one of 'subject', 'object', 'target'
+     * @return string
+     */
+    function asActivityNoun($element)
+    {
+        $noun = ActivityObject::fromNotice($this);
+        return $noun->asString('activity:' . $element);
+    }
+
     function bestUrl()
     {
         if (!empty($this->url)) {
@@ -1176,6 +1377,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)) {
@@ -1444,6 +1649,14 @@ class Notice extends Memcached_DataObject
 
     function distribute()
     {
+        // We always insert for the author so they don't
+        // have to wait
+
+        $user = User::staticGet('id', $this->profile_id);
+        if (!empty($user)) {
+            Inbox::insertNotice($user->id, $this->id);
+        }
+
         if (common_config('queue', 'inboxes')) {
             // If there's a failure, we want to _force_
             // distribution at this point.
index 1076fb2cb3e09f8b95b1915b36f1b6bb5ffbcef6..78223b34a1956d0e16901e949810cbc3c367f6ba 100644 (file)
@@ -716,6 +716,7 @@ class Profile extends Memcached_DataObject
             switch ($right)
             {
             case Right::DELETEOTHERSNOTICE:
+            case Right::MAKEGROUPADMIN:
             case Right::SANDBOXUSER:
             case Right::SILENCEUSER:
             case Right::DELETEUSER:
@@ -753,4 +754,97 @@ class Profile extends Memcached_DataObject
 
         return !empty($notice);
     }
+
+    /**
+     * Returns an XML string fragment with limited profile information
+     * as an Atom <author> element.
+     *
+     * Assumes that Atom has been previously set up as the base namespace.
+     *
+     * @return string
+     */
+    function asAtomAuthor()
+    {
+        $xs = new XMLStringer(true);
+
+        $xs->elementStart('author');
+        $xs->element('name', null, $this->nickname);
+        $xs->element('uri', null, $this->getUri());
+        $xs->elementEnd('author');
+
+        return $xs->getString();
+    }
+
+    /**
+     * Returns an XML string fragment with profile information as an
+     * Activity Streams <activity:actor> element.
+     *
+     * Assumes that 'activity' namespace has been previously defined.
+     *
+     * @return string
+     */
+    function asActivityActor()
+    {
+        return $this->asActivityNoun('actor');
+    }
+
+    /**
+     * Returns an XML string fragment with profile information as an
+     * Activity Streams noun object with the given element type.
+     *
+     * Assumes that 'activity', 'georss', and 'poco' namespace has been
+     * previously defined.
+     *
+     * @param string $element one of 'actor', 'subject', 'object', 'target'
+     *
+     * @return string
+     */
+    function asActivityNoun($element)
+    {
+        $noun = ActivityObject::fromProfile($this);
+        return $noun->asString('activity:' . $element);
+    }
+
+    /**
+     * Returns the best URI for a profile. Plugins may override.
+     *
+     * @return string $uri
+     */
+    function getUri()
+    {
+        $uri = null;
+
+        // give plugins a chance to set the URI
+        if (Event::handle('StartGetProfileUri', array($this, &$uri))) {
+
+            // check for a local user first
+            $user = User::staticGet('id', $this->id);
+
+            if (!empty($user)) {
+                $uri = $user->uri;
+            } else {
+                // return OMB profile if any
+                $remote = Remote_profile::staticGet('id', $this->id);
+                if (!empty($remote)) {
+                    $uri = $remote->uri;
+                }
+            }
+            Event::handle('EndGetProfileUri', array($this, &$uri));
+        }
+
+        return $uri;
+    }
+
+    function hasBlocked($other)
+    {
+        $block = Profile_block::get($this->id, $other->id);
+
+        if (empty($block)) {
+            $result = false;
+        } else {
+            $result = true;
+        }
+
+        return $result;
+    }
 }
index faf1331cda11565eec0655ea4a266079ceca0618..d6fb3fcbdda82f17d70dcce6692868dfed6f1840 100644 (file)
@@ -24,7 +24,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
  */
 require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
 
-class Subscription extends Memcached_DataObject 
+class Subscription extends Memcached_DataObject
 {
     ###START_AUTOCODE
     /* the code below is auto generated do not remove the above tag */
@@ -34,8 +34,8 @@ class Subscription extends Memcached_DataObject
     public $subscribed;                      // int(4)  primary_key not_null
     public $jabber;                          // tinyint(1)   default_1
     public $sms;                             // tinyint(1)   default_1
-    public $token;                           // varchar(255)  
-    public $secret;                          // varchar(255)  
+    public $token;                           // varchar(255)
+    public $secret;                          // varchar(255)
     public $created;                         // datetime()   not_null
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
@@ -45,9 +45,155 @@ class Subscription extends Memcached_DataObject
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
-    
+
     function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Subscription', $kv);
     }
+
+    /**
+     * Make a new subscription
+     *
+     * @param Profile $subscriber party to receive new notices
+     * @param Profile $other      party sending notices; publisher
+     *
+     * @return Subscription new subscription
+     */
+
+    static function start($subscriber, $other)
+    {
+        if (!$subscriber->hasRight(Right::SUBSCRIBE)) {
+            throw new Exception(_('You have been banned from subscribing.'));
+        }
+
+        if (self::exists($subscriber, $other)) {
+            throw new Exception(_('Already subscribed!'));
+        }
+
+        if ($other->hasBlocked($subscriber)) {
+            throw new Exception(_('User has blocked you.'));
+        }
+
+        if (Event::handle('StartSubscribe', array($subscriber, $other))) {
+
+            $sub = new Subscription();
+
+            $sub->subscriber = $subscriber->id;
+            $sub->subscribed = $other->id;
+            $sub->created    = common_sql_now();
+
+            $result = $sub->insert();
+
+            if (!$result) {
+                common_log_db_error($sub, 'INSERT', __FILE__);
+                throw new Exception(_('Could not save subscription.'));
+            }
+
+            $sub->notify();
+
+            self::blow('user:notices_with_friends:%d', $subscriber->id);
+
+            $subscriber->blowSubscriptionsCount();
+            $other->blowSubscribersCount();
+
+            $otherUser = User::staticGet('id', $other->id);
+
+            if (!empty($otherUser) &&
+                $otherUser->autosubscribe &&
+                !self::exists($other, $subscriber) &&
+                !$subscriber->hasBlocked($other)) {
+
+                $auto = new Subscription();
+
+                $auto->subscriber = $subscriber->id;
+                $auto->subscribed = $other->id;
+                $auto->created    = common_sql_now();
+
+                $result = $auto->insert();
+
+                if (!$result) {
+                    common_log_db_error($auto, 'INSERT', __FILE__);
+                    throw new Exception(_('Could not save subscription.'));
+                }
+
+                $auto->notify();
+            }
+
+            Event::handle('EndSubscribe', array($subscriber, $other));
+        }
+
+        return true;
+    }
+
+    function notify()
+    {
+        # XXX: add other notifications (Jabber, SMS) here
+        # XXX: queue this and handle it offline
+        # XXX: Whatever happens, do it in Twitter-like API, too
+
+        $this->notifyEmail();
+    }
+
+    function notifyEmail()
+    {
+        $subscribedUser = User::staticGet('id', $this->subscribed);
+
+        if (!empty($subscribedUser)) {
+
+            $subscriber = Profile::staticGet('id', $this->subscriber);
+
+            mail_subscribe_notify_profile($subscribedUser, $subscriber);
+        }
+    }
+
+    /**
+     * Cancel a subscription
+     *
+     */
+
+    function cancel($subscriber, $other)
+    {
+        if (!self::exists($subscriber, $other)) {
+            throw new Exception(_('Not subscribed!'));
+        }
+
+        // Don't allow deleting self subs
+
+        if ($subscriber->id == $other->id) {
+            throw new Exception(_('Couldn\'t delete self-subscription.'));
+        }
+
+        if (Event::handle('StartUnsubscribe', array($subscriber, $other))) {
+
+            $sub = Subscription::pkeyGet(array('subscriber' => $subscriber->id,
+                                               'subscribed' => $other->id));
+
+            // note we checked for existence above
+
+            assert(!empty($sub));
+
+            $result = $sub->delete();
+
+            if (!$result) {
+                common_log_db_error($sub, 'DELETE', __FILE__);
+                throw new Exception(_('Couldn\'t delete subscription.'));
+            }
+
+            self::blow('user:notices_with_friends:%d', $subscriber->id);
+
+            $subscriber->blowSubscriptionsCount();
+            $other->blowSubscribersCount();
+
+            Event::handle('EndUnsubscribe', array($subscriber, $other));
+        }
+
+        return;
+    }
+
+    function exists($subscriber, $other)
+    {
+        $sub = Subscription::pkeyGet(array('subscriber' => $subscriber->id,
+                                           'subscribed' => $other->id));
+        return (empty($sub)) ? false : true;
+    }
 }
index 72c3f39e947e507d191bae34a2a9ed1b674e02fa..10b1f486513a4bb5b38ecc5c48d4f8e371c5b684 100644 (file)
@@ -80,11 +80,7 @@ class User extends Memcached_DataObject
 
     function isSubscribed($other)
     {
-        assert(!is_null($other));
-        // XXX: cache results of this query
-        $sub = Subscription::pkeyGet(array('subscriber' => $this->id,
-                                           'subscribed' => $other->id));
-        return (is_null($sub)) ? false : true;
+        return Subscription::exists($this->getProfile(), $other);
     }
 
     // 'update' won't write key columns, so we have to do it ourselves.
@@ -167,17 +163,8 @@ class User extends Memcached_DataObject
 
     function hasBlocked($other)
     {
-
-        $block = Profile_block::get($this->id, $other->id);
-
-        if (is_null($block)) {
-            $result = false;
-        } else {
-            $result = true;
-            $block->free();
-        }
-
-        return $result;
+        $profile = $this->getProfile();
+        return $profile->hasBlocked($other);
     }
 
     /**
index c86eadf8fa7fff1e21ca9cb2f496d4aa4ce9acb4..f24bef7647ec2b3bd62c1f047f2eec3ddaa6b5a7 100644 (file)
@@ -10,21 +10,23 @@ class User_group extends Memcached_DataObject
 
     public $__table = 'user_group';                      // table name
     public $id;                              // int(4)  primary_key not_null
-    public $nickname;                        // varchar(64)  unique_key
+    public $nickname;                        // varchar(64)
     public $fullname;                        // varchar(255)
     public $homepage;                        // varchar(255)
-    public $description;                     // text()
+    public $description;                     // text
     public $location;                        // varchar(255)
     public $original_logo;                   // varchar(255)
     public $homepage_logo;                   // varchar(255)
     public $stream_logo;                     // varchar(255)
     public $mini_logo;                       // varchar(255)
     public $design_id;                       // int(4)
-    public $created;                         // datetime()   not_null
-    public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
+    public $created;                         // datetime   not_null default_0000-00-00%2000%3A00%3A00
+    public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
+    public $uri;                             // varchar(255)  unique_key
+    public $mainpage;                        // varchar(255)
 
     /* Static get */
-    function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_group',$k,$v); }
+    function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('User_group',$k,$v); }
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
@@ -39,22 +41,52 @@ class User_group extends Memcached_DataObject
 
     function homeUrl()
     {
-        return common_local_url('showgroup',
-                                array('nickname' => $this->nickname));
+        $url = null;
+        if (Event::handle('StartUserGroupHomeUrl', array($this, &$url))) {
+            // normally stored in mainpage, but older ones may be null
+            if (!empty($this->mainpage)) {
+                $url = $this->mainpage;
+            } else {
+                $url = common_local_url('showgroup',
+                                        array('nickname' => $this->nickname));
+            }
+        }
+        Event::handle('EndUserGroupHomeUrl', array($this, &$url));
+        return $url;
+    }
+
+    function getUri()
+    {
+        $uri = null;
+        if (Event::handle('StartUserGroupGetUri', array($this, &$uri))) {
+            if (!empty($this->uri)) {
+                $uri = $this->uri;
+            } else {
+                $uri = common_local_url('groupbyid',
+                                        array('id' => $this->id));
+            }
+        }
+        Event::handle('EndUserGroupGetUri', array($this, &$uri));
+        return $uri;
     }
 
     function permalink()
     {
-        return common_local_url('groupbyid',
-                                array('id' => $this->id));
+        $url = null;
+        if (Event::handle('StartUserGroupPermalink', array($this, &$url))) {
+            $url = common_local_url('groupbyid',
+                                    array('id' => $this->id));
+        }
+        Event::handle('EndUserGroupPermalink', array($this, &$url));
+        return $url;
     }
 
-    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 +387,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
@@ -370,28 +435,31 @@ class User_group extends Memcached_DataObject
         $group->homepage    = $homepage;
         $group->description = $description;
         $group->location    = $location;
+        $group->uri         = $uri;
+        $group->mainpage    = $mainpage;
         $group->created     = common_sql_now();
 
         $result = $group->insert();
 
         if (!$result) {
             common_log_db_error($group, 'INSERT', __FILE__);
-            $this->serverError(
-                _('Could not create group.'),
-                500,
-                $this->format
-            );
-            return;
+            throw new ServerException(_('Could not create group.'));
+        }
+
+        if (!isset($uri) || empty($uri)) {
+            $orig = clone($group);
+            $group->uri = common_local_url('groupbyid', array('id' => $group->id));
+            $result = $group->update($orig);
+            if (!$result) {
+                common_log_db_error($group, 'UPDATE', __FILE__);
+                throw new ServerException(_('Could not set group uri.'));
+            }
         }
+
         $result = $group->setAliases($aliases);
 
         if (!$result) {
-            $this->serverError(
-                _('Could not create aliases.'),
-                500,
-                $this->format
-            );
-            return;
+            throw new ServerException(_('Could not create aliases.'));
         }
 
         $member = new Group_member();
@@ -405,12 +473,22 @@ class User_group extends Memcached_DataObject
 
         if (!$result) {
             common_log_db_error($member, 'INSERT', __FILE__);
-            $this->serverError(
-                _('Could not set group membership.'),
-                500,
-                $this->format
-            );
-            return;
+            throw new ServerException(_('Could not set group membership.'));
+        }
+
+        if ($local) {
+            $local_group = new Local_group();
+
+            $local_group->group_id = $group->id;
+            $local_group->nickname = $nickname;
+            $local_group->created  = common_sql_now();
+
+            $result = $local_group->insert();
+
+            if (!$result) {
+                common_log_db_error($local_group, 'INSERT', __FILE__);
+                throw new ServerException(_('Could not save local group info.'));
+            }
         }
 
         $group->query('COMMIT');
index 5f8da7cf51bd5bcf80131eb8b74d362bd38fc2a3..719dbedf57cedbe7d3231d90b2ba51258e90b47a 100644 (file)
@@ -47,6 +47,15 @@ modified = 384
 [consumer__keys]
 consumer_key = K
 
+[conversation]
+id = 129
+uri = 2
+created = 142
+modified = 384
+
+[conversation__keys]
+id = N
+
 [deleted_notice]
 id = 129
 profile_id = 129
@@ -93,7 +102,6 @@ modified = 384
 
 [file__keys]
 id = N
-url = U
 
 [file_oembed]
 file_id = 129
@@ -235,13 +243,6 @@ modified = 384
 group_id = K
 profile_id = K
 
-[invitation]
-code = 130
-user_id = 129
-address = 130
-address_type = 130
-created = 142
-
 [inbox]
 user_id = 129
 notice_ids = 66
@@ -249,9 +250,26 @@ notice_ids = 66
 [inbox__keys]
 user_id = K
 
+[invitation]
+code = 130
+user_id = 129
+address = 130
+address_type = 130
+created = 142
+
 [invitation__keys]
 code = K
 
+[local_group]
+group_id = 129
+nickname = 2
+created = 142
+modified = 384
+
+[local_group__keys]
+group_id = K
+nickname = U
+
 [location_namespace]
 id = 129
 description = 2
@@ -359,7 +377,7 @@ icon = 130
 source_url = 2
 organization = 2
 homepage = 2
-callback_url = 130
+callback_url = 2
 type = 17
 access_type = 17
 created = 142
@@ -367,7 +385,6 @@ modified = 384
 
 [oauth_application__keys]
 id = N
-name = U
 
 [oauth_application_user]
 profile_id = 129
@@ -430,13 +447,13 @@ tag = K
 
 [queue_item]
 id = 129
-frame = 66
+frame = 194
 transport = 130
 created = 142
 claimed = 14
 
 [queue_item__keys]
-id = K
+id = N
 
 [related_group]
 group_id = 129
@@ -583,10 +600,11 @@ mini_logo = 2
 design_id = 1
 created = 142
 modified = 384
+uri = 2
+mainpage = 2
 
 [user_group__keys]
 id = N
-nickname = U
 
 [user_openid]
 canonical = 130
@@ -617,4 +635,3 @@ modified = 384
 
 [user_location_prefs__keys]
 user_id = K
-
index 7f233e6760be02689ad98fc5dcf62905c32689a9..b9dd5af0c9b6ab284653422d3ef5c5d3c3f29cb3 100644 (file)
@@ -19,8 +19,11 @@ profile_id = profile:id
 [token]
 consumer_key = consumer:consumer_key
 
-[nonce]
-consumer_key,token = token:consumer_key,token
+; Compatibility hack for PHP 5.3
+; This entry has been moved to the class definition, as commas are no longer
+; considered valid in keys, causing parse_ini_file() to reject the whole file.
+;[nonce]
+;consumer_key,token = token:consumer_key,token
 
 [confirm_address]
 user_id = user:id
index 343464801662d0fd7ff37828632952214f873fb5..4158f0167db2a9f9def64f29ac8fff1fef574382 100644 (file)
@@ -406,7 +406,7 @@ create table profile_block (
 create table user_group (
     id integer auto_increment primary key comment 'unique identifier',
 
-    nickname varchar(64) unique key comment 'nickname for addressing',
+    nickname varchar(64) comment 'nickname for addressing',
     fullname varchar(255) comment 'display name',
     homepage varchar(255) comment 'URL, cached so we dont regenerate',
     description text comment 'group description',
@@ -421,6 +421,9 @@ create table user_group (
     created datetime not null comment 'date this record was created',
     modified timestamp comment 'date this record was modified',
 
+    uri varchar(255) unique key comment 'universal identifier',
+    mainpage varchar(255) comment 'page for group info to link to',
+
     index user_group_nickname_idx (nickname)
 
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
@@ -633,3 +636,21 @@ create table inbox (
     constraint primary key (user_id)
 
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table conversation (
+    id integer auto_increment primary key comment 'unique identifier',
+    uri varchar(225) unique comment 'URI of the conversation',
+    created datetime not null comment 'date this record was created',
+    modified timestamp comment 'date this record was modified'
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table local_group (
+
+   group_id integer primary key comment 'group represented' references user_group (id),
+   nickname varchar(64) unique key comment 'group represented',
+
+   created datetime not null comment 'date this record was created',
+   modified timestamp comment 'date this record was modified'
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
index 926357433e3e8289757481ee826cee31657982fe..b3b95307a13602285313ecc90a9707b10bf270b6 100644 (file)
 /*!
- * jQuery JavaScript Library v1.3.2
+ * jQuery JavaScript Library v1.4.2
  * http://jquery.com/
  *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
  *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
  */
-(function(){
+(function( window, undefined ) {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               return new jQuery.fn.init( selector, context );
+       },
 
-var 
-       // Will speed up references to window, and allows munging its name.
-       window = this,
-       // Will speed up references to undefined, and allows munging its name.
-       undefined,
        // Map over jQuery in case of overwrite
        _jQuery = window.jQuery,
+
        // Map over the $ in case of overwrite
        _$ = window.$,
 
-       jQuery = window.jQuery = window.$ = function( selector, context ) {
-               // The jQuery object is actually just the init constructor 'enhanced'
-               return new jQuery.fn.init( selector, context );
-       },
+       // Use the correct document accordingly with window argument (sandbox)
+       document = window.document,
+
+       // A central reference to the root jQuery(document)
+       rootjQuery,
 
        // A simple way to check for HTML strings or ID strings
        // (both of which we optimize for)
-       quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+       quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
+
        // Is it a simple selector
-       isSimple = /^.[^:#\[\.,]*$/;
+       isSimple = /^.[^:#\[\.,]*$/,
+
+       // Check if a string has a non-whitespace character in it
+       rnotwhite = /\S/,
+
+       // Used for trimming whitespace
+       rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+
+       // Match a standalone tag
+       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+       // Keep a UserAgent string for use with jQuery.browser
+       userAgent = navigator.userAgent,
+
+       // For matching the engine and version of the browser
+       browserMatch,
+       
+       // Has the ready events already been bound?
+       readyBound = false,
+       
+       // The functions to execute on DOM ready
+       readyList = [],
+
+       // The ready event handler
+       DOMContentLoaded,
+
+       // Save a reference to some core methods
+       toString = Object.prototype.toString,
+       hasOwnProperty = Object.prototype.hasOwnProperty,
+       push = Array.prototype.push,
+       slice = Array.prototype.slice,
+       indexOf = Array.prototype.indexOf;
 
 jQuery.fn = jQuery.prototype = {
        init: function( selector, context ) {
-               // Make sure that a selection was provided
-               selector = selector || document;
+               var match, elem, ret, doc;
+
+               // Handle $(""), $(null), or $(undefined)
+               if ( !selector ) {
+                       return this;
+               }
 
                // Handle $(DOMElement)
                if ( selector.nodeType ) {
-                       this[0] = selector;
+                       this.context = this[0] = selector;
                        this.length = 1;
-                       this.context = selector;
                        return this;
                }
+               
+               // The body element only exists once, optimize finding it
+               if ( selector === "body" && !context ) {
+                       this.context = document;
+                       this[0] = document.body;
+                       this.selector = "body";
+                       this.length = 1;
+                       return this;
+               }
+
                // Handle HTML strings
                if ( typeof selector === "string" ) {
                        // Are we dealing with HTML string or an ID?
-                       var match = quickExpr.exec( selector );
+                       match = quickExpr.exec( selector );
 
                        // Verify a match, and that no context was specified for #id
                        if ( match && (match[1] || !context) ) {
 
                                // HANDLE: $(html) -> $(array)
-                               if ( match[1] )
-                                       selector = jQuery.clean( [ match[1] ], context );
+                               if ( match[1] ) {
+                                       doc = (context ? context.ownerDocument || context : document);
+
+                                       // If a single string is passed in and it's a single tag
+                                       // just do a createElement and skip the rest
+                                       ret = rsingleTag.exec( selector );
+
+                                       if ( ret ) {
+                                               if ( jQuery.isPlainObject( context ) ) {
+                                                       selector = [ document.createElement( ret[1] ) ];
+                                                       jQuery.fn.attr.call( selector, context, true );
+
+                                               } else {
+                                                       selector = [ doc.createElement( ret[1] ) ];
+                                               }
 
+                                       } else {
+                                               ret = buildFragment( [ match[1] ], [ doc ] );
+                                               selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+                                       }
+                                       
+                                       return jQuery.merge( this, selector );
+                                       
                                // HANDLE: $("#id")
-                               else {
-                                       var elem = document.getElementById( match[3] );
-
-                                       // Handle the case where IE and Opera return items
-                                       // by name instead of ID
-                                       if ( elem && elem.id != match[3] )
-                                               return jQuery().find( selector );
-
-                                       // Otherwise, we inject the element directly into the jQuery object
-                                       var ret = jQuery( elem || [] );
-                                       ret.context = document;
-                                       ret.selector = selector;
-                                       return ret;
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       if ( elem ) {
+                                               // Handle the case where IE and Opera return items
+                                               // by name instead of ID
+                                               if ( elem.id !== match[2] ) {
+                                                       return rootjQuery.find( selector );
+                                               }
+
+                                               // Otherwise, we inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
                                }
 
-                       // HANDLE: $(expr, [context])
-                       // (which is just equivalent to: $(content).find(expr)
-                       } else
+                       // HANDLE: $("TAG")
+                       } else if ( !context && /^\w+$/.test( selector ) ) {
+                               this.selector = selector;
+                               this.context = document;
+                               selector = document.getElementsByTagName( selector );
+                               return jQuery.merge( this, selector );
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return (context || rootjQuery).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
                                return jQuery( context ).find( selector );
+                       }
 
                // HANDLE: $(function)
                // Shortcut for document ready
-               } else if ( jQuery.isFunction( selector ) )
-                       return jQuery( document ).ready( selector );
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return rootjQuery.ready( selector );
+               }
 
-               // Make sure that old selector state is passed along
-               if ( selector.selector && selector.context ) {
+               if (selector.selector !== undefined) {
                        this.selector = selector.selector;
                        this.context = selector.context;
                }
 
-               return this.setArray(jQuery.isArray( selector ) ?
-                       selector :
-                       jQuery.makeArray(selector));
+               return jQuery.makeArray( selector, this );
        },
 
        // Start with an empty selector
        selector: "",
 
        // The current version of jQuery being used
-       jquery: "1.3.2",
+       jquery: "1.4.2",
+
+       // The default length of a jQuery object is 0
+       length: 0,
 
        // The number of elements contained in the matched element set
        size: function() {
                return this.length;
        },
 
+       toArray: function() {
+               return slice.call( this, 0 );
+       },
+
        // Get the Nth element in the matched element set OR
        // Get the whole matched element set as a clean array
        get: function( num ) {
-               return num === undefined ?
+               return num == null ?
 
                        // Return a 'clean' array
-                       Array.prototype.slice.call( this ) :
+                       this.toArray() :
 
                        // Return just the object
-                       this[ num ];
+                       ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
        },
 
        // Take an array of elements and push it onto the stack
        // (returning the new matched element set)
        pushStack: function( elems, name, selector ) {
                // Build a new jQuery matched element set
-               var ret = jQuery( elems );
+               var ret = jQuery();
+
+               if ( jQuery.isArray( elems ) ) {
+                       push.apply( ret, elems );
+               
+               } else {
+                       jQuery.merge( ret, elems );
+               }
 
                // Add the old object onto the stack (as a reference)
                ret.prevObject = this;
 
                ret.context = this.context;
 
-               if ( name === "find" )
+               if ( name === "find" ) {
                        ret.selector = this.selector + (this.selector ? " " : "") + selector;
-               else if ( name )
+               } else if ( name ) {
                        ret.selector = this.selector + "." + name + "(" + selector + ")";
+               }
 
                // Return the newly-formed element set
                return ret;
        },
 
-       // Force the current matched set of elements to become
-       // the specified array of elements (destroying the stack in the process)
-       // You should use pushStack() in order to do this, but maintain the stack
-       setArray: function( elems ) {
-               // Resetting the length to 0, then using the native Array push
-               // is a super-fast way to populate an object with array-like properties
-               this.length = 0;
-               Array.prototype.push.apply( this, elems );
-
-               return this;
-       },
-
        // Execute a callback for every element in the matched set.
        // (You can seed the arguments with an array of args, but this is
        // only used internally.)
        each: function( callback, args ) {
                return jQuery.each( this, callback, args );
        },
+       
+       ready: function( fn ) {
+               // Attach the listeners
+               jQuery.bindReady();
 
-       // Determine the position of an element within
-       // the matched set of elements
-       index: function( elem ) {
-               // Locate the position of the desired element
-               return jQuery.inArray(
-                       // If it receives a jQuery object, the first element is used
-                       elem && elem.jquery ? elem[0] : elem
-               , this );
-       },
-
-       attr: function( name, value, type ) {
-               var options = name;
-
-               // Look for the case where we're accessing a style value
-               if ( typeof name === "string" )
-                       if ( value === undefined )
-                               return this[0] && jQuery[ type || "attr" ]( this[0], name );
-
-                       else {
-                               options = {};
-                               options[ name ] = value;
-                       }
-
-               // Check to see if we're setting style values
-               return this.each(function(i){
-                       // Set all the styles
-                       for ( name in options )
-                               jQuery.attr(
-                                       type ?
-                                               this.style :
-                                               this,
-                                       name, jQuery.prop( this, options[ name ], type, i, name )
-                               );
-               });
-       },
-
-       css: function( key, value ) {
-               // ignore negative width and height values
-               if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
-                       value = undefined;
-               return this.attr( key, value, "curCSS" );
-       },
-
-       text: function( text ) {
-               if ( typeof text !== "object" && text != null )
-                       return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
-
-               var ret = "";
-
-               jQuery.each( text || this, function(){
-                       jQuery.each( this.childNodes, function(){
-                               if ( this.nodeType != 8 )
-                                       ret += this.nodeType != 1 ?
-                                               this.nodeValue :
-                                               jQuery.fn.text( [ this ] );
-                       });
-               });
-
-               return ret;
-       },
-
-       wrapAll: function( html ) {
-               if ( this[0] ) {
-                       // The elements to wrap the target around
-                       var wrap = jQuery( html, this[0].ownerDocument ).clone();
-
-                       if ( this[0].parentNode )
-                               wrap.insertBefore( this[0] );
-
-                       wrap.map(function(){
-                               var elem = this;
-
-                               while ( elem.firstChild )
-                                       elem = elem.firstChild;
+               // If the DOM is already ready
+               if ( jQuery.isReady ) {
+                       // Execute the function immediately
+                       fn.call( document, jQuery );
 
-                               return elem;
-                       }).append(this);
+               // Otherwise, remember the function for later
+               } else if ( readyList ) {
+                       // Add the function to the wait list
+                       readyList.push( fn );
                }
 
                return this;
        },
-
-       wrapInner: function( html ) {
-               return this.each(function(){
-                       jQuery( this ).contents().wrapAll( html );
-               });
-       },
-
-       wrap: function( html ) {
-               return this.each(function(){
-                       jQuery( this ).wrapAll( html );
-               });
+       
+       eq: function( i ) {
+               return i === -1 ?
+                       this.slice( i ) :
+                       this.slice( i, +i + 1 );
        },
 
-       append: function() {
-               return this.domManip(arguments, true, function(elem){
-                       if (this.nodeType == 1)
-                               this.appendChild( elem );
-               });
+       first: function() {
+               return this.eq( 0 );
        },
 
-       prepend: function() {
-               return this.domManip(arguments, true, function(elem){
-                       if (this.nodeType == 1)
-                               this.insertBefore( elem, this.firstChild );
-               });
+       last: function() {
+               return this.eq( -1 );
        },
 
-       before: function() {
-               return this.domManip(arguments, false, function(elem){
-                       this.parentNode.insertBefore( elem, this );
-               });
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ),
+                       "slice", slice.call(arguments).join(",") );
        },
 
-       after: function() {
-               return this.domManip(arguments, false, function(elem){
-                       this.parentNode.insertBefore( elem, this.nextSibling );
-               });
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
        },
-
+       
        end: function() {
-               return this.prevObject || jQuery( [] );
+               return this.prevObject || jQuery(null);
        },
 
        // For internal use only.
        // Behaves like an Array's method, not like a jQuery method.
-       push: [].push,
+       push: push,
        sort: [].sort,
-       splice: [].splice,
+       splice: [].splice
+};
 
-       find: function( selector ) {
-               if ( this.length === 1 ) {
-                       var ret = this.pushStack( [], "find", selector );
-                       ret.length = 0;
-                       jQuery.find( selector, this[0], ret );
-                       return ret;
-               } else {
-                       return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
-                               return jQuery.find( selector, elem );
-                       })), "find", selector );
-               }
-       },
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
 
-       clone: function( events ) {
-               // Do the clone
-               var ret = this.map(function(){
-                       if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
-                               // IE copies events bound via attachEvent when
-                               // using cloneNode. Calling detachEvent on the
-                               // clone will also remove the events from the orignal
-                               // In order to get around this, we use innerHTML.
-                               // Unfortunately, this means some modifications to
-                               // attributes in IE that are actually only stored
-                               // as properties will not be copied (such as the
-                               // the name attribute on an input).
-                               var html = this.outerHTML;
-                               if ( !html ) {
-                                       var div = this.ownerDocument.createElement("div");
-                                       div.appendChild( this.cloneNode(true) );
-                                       html = div.innerHTML;
-                               }
+jQuery.extend = jQuery.fn.extend = function() {
+       // copy reference to target object
+       var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
 
-                               return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
-                       } else
-                               return this.cloneNode(true);
-               });
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+               target = arguments[1] || {};
+               // skip the boolean and the target
+               i = 2;
+       }
 
-               // Copy the events from the original to the clone
-               if ( events === true ) {
-                       var orig = this.find("*").andSelf(), i = 0;
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
 
-                       ret.find("*").andSelf().each(function(){
-                               if ( this.nodeName !== orig[i].nodeName )
-                                       return;
+       // extend jQuery itself if only one argument is passed
+       if ( length === i ) {
+               target = this;
+               --i;
+       }
 
-                               var events = jQuery.data( orig[i], "events" );
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != null ) {
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
 
-                               for ( var type in events ) {
-                                       for ( var handler in events[ type ] ) {
-                                               jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
-                                       }
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
                                }
 
-                               i++;
-                       });
-               }
+                               // Recurse if we're merging object literal values or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
+                                       var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
+                                               : jQuery.isArray(copy) ? [] : {};
 
-               // Return the cloned set
-               return ret;
-       },
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
 
-       filter: function( selector ) {
-               return this.pushStack(
-                       jQuery.isFunction( selector ) &&
-                       jQuery.grep(this, function(elem, i){
-                               return selector.call( elem, i );
-                       }) ||
-
-                       jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
-                               return elem.nodeType === 1;
-                       }) ), "filter", selector );
-       },
-
-       closest: function( selector ) {
-               var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
-                       closer = 0;
-
-               return this.map(function(){
-                       var cur = this;
-                       while ( cur && cur.ownerDocument ) {
-                               if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
-                                       jQuery.data(cur, "closest", closer);
-                                       return cur;
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
                                }
-                               cur = cur.parentNode;
-                               closer++;
                        }
-               });
-       },
+               }
+       }
 
-       not: function( selector ) {
-               if ( typeof selector === "string" )
-                       // test special case where just one selector is passed in
-                       if ( isSimple.test( selector ) )
-                               return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
-                       else
-                               selector = jQuery.multiFilter( selector, this );
-
-               var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
-               return this.filter(function() {
-                       return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
-               });
-       },
+       // Return the modified object
+       return target;
+};
 
-       add: function( selector ) {
-               return this.pushStack( jQuery.unique( jQuery.merge(
-                       this.get(),
-                       typeof selector === "string" ?
-                               jQuery( selector ) :
-                               jQuery.makeArray( selector )
-               )));
-       },
+jQuery.extend({
+       noConflict: function( deep ) {
+               window.$ = _$;
 
-       is: function( selector ) {
-               return !!selector && jQuery.multiFilter( selector, this ).length > 0;
-       },
+               if ( deep ) {
+                       window.jQuery = _jQuery;
+               }
 
-       hasClass: function( selector ) {
-               return !!selector && this.is( "." + selector );
+               return jQuery;
        },
+       
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+       
+       // Handle when the DOM is ready
+       ready: function() {
+               // Make sure that the DOM is not already loaded
+               if ( !jQuery.isReady ) {
+                       // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+                       if ( !document.body ) {
+                               return setTimeout( jQuery.ready, 13 );
+                       }
 
-       val: function( value ) {
-               if ( value === undefined ) {                    
-                       var elem = this[0];
+                       // Remember that the DOM is ready
+                       jQuery.isReady = true;
 
-                       if ( elem ) {
-                               if( jQuery.nodeName( elem, 'option' ) )
-                                       return (elem.attributes.value || {}).specified ? elem.value : elem.text;
-                               
-                               // We need to handle select boxes special
-                               if ( jQuery.nodeName( elem, "select" ) ) {
-                                       var index = elem.selectedIndex,
-                                               values = [],
-                                               options = elem.options,
-                                               one = elem.type == "select-one";
+                       // If there are functions bound, to execute
+                       if ( readyList ) {
+                               // Execute all of them
+                               var fn, i = 0;
+                               while ( (fn = readyList[ i++ ]) ) {
+                                       fn.call( document, jQuery );
+                               }
 
-                                       // Nothing was selected
-                                       if ( index < 0 )
-                                               return null;
+                               // Reset the list of functions
+                               readyList = null;
+                       }
 
-                                       // Loop through all the selected options
-                                       for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
-                                               var option = options[ i ];
+                       // Trigger any bound ready events
+                       if ( jQuery.fn.triggerHandler ) {
+                               jQuery( document ).triggerHandler( "ready" );
+                       }
+               }
+       },
+       
+       bindReady: function() {
+               if ( readyBound ) {
+                       return;
+               }
 
-                                               if ( option.selected ) {
-                                                       // Get the specifc value for the option
-                                                       value = jQuery(option).val();
+               readyBound = true;
 
-                                                       // We don't need an array for one selects
-                                                       if ( one )
-                                                               return value;
+               // Catch cases where $(document).ready() is called after the
+               // browser event has already occurred.
+               if ( document.readyState === "complete" ) {
+                       return jQuery.ready();
+               }
 
-                                                       // Multi-Selects return an array
-                                                       values.push( value );
-                                               }
-                                       }
+               // Mozilla, Opera and webkit nightlies currently support this event
+               if ( document.addEventListener ) {
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+                       
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", jQuery.ready, false );
+
+               // If IE event model is used
+               } else if ( document.attachEvent ) {
+                       // ensure firing before onload,
+                       // maybe late but safe also for iframes
+                       document.attachEvent("onreadystatechange", DOMContentLoaded);
+                       
+                       // A fallback to window.onload, that will always work
+                       window.attachEvent( "onload", jQuery.ready );
 
-                                       return values;                          
-                               }
+                       // If IE and not a frame
+                       // continually check to see if the document is ready
+                       var toplevel = false;
 
-                               // Everything else, we just grab the value
-                               return (elem.value || "").replace(/\r/g, "");
+                       try {
+                               toplevel = window.frameElement == null;
+                       } catch(e) {}
 
+                       if ( document.documentElement.doScroll && toplevel ) {
+                               doScrollCheck();
                        }
-
-                       return undefined;
                }
-
-               if ( typeof value === "number" )
-                       value += '';
-
-               return this.each(function(){
-                       if ( this.nodeType != 1 )
-                               return;
-
-                       if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
-                               this.checked = (jQuery.inArray(this.value, value) >= 0 ||
-                                       jQuery.inArray(this.name, value) >= 0);
-
-                       else if ( jQuery.nodeName( this, "select" ) ) {
-                               var values = jQuery.makeArray(value);
-
-                               jQuery( "option", this ).each(function(){
-                                       this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
-                                               jQuery.inArray( this.text, values ) >= 0);
-                               });
-
-                               if ( !values.length )
-                                       this.selectedIndex = -1;
-
-                       } else
-                               this.value = value;
-               });
-       },
-
-       html: function( value ) {
-               return value === undefined ?
-                       (this[0] ?
-                               this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
-                               null) :
-                       this.empty().append( value );
        },
 
-       replaceWith: function( value ) {
-               return this.after( value ).remove();
+       // See test/unit/core.js for details concerning isFunction.
+       // Since version 1.3, DOM methods and functions like alert
+       // aren't supported. They return false on IE (#2968).
+       isFunction: function( obj ) {
+               return toString.call(obj) === "[object Function]";
        },
 
-       eq: function( i ) {
-               return this.slice( i, +i + 1 );
+       isArray: function( obj ) {
+               return toString.call(obj) === "[object Array]";
        },
 
-       slice: function() {
-               return this.pushStack( Array.prototype.slice.apply( this, arguments ),
-                       "slice", Array.prototype.slice.call(arguments).join(",") );
+       isPlainObject: function( obj ) {
+               // Must be an Object.
+               // Because of IE, we also have to check the presence of the constructor property.
+               // Make sure that DOM nodes and window objects don't pass through, as well
+               if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
+                       return false;
+               }
+               
+               // Not own constructor property must be Object
+               if ( obj.constructor
+                       && !hasOwnProperty.call(obj, "constructor")
+                       && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+                       return false;
+               }
+               
+               // Own properties are enumerated firstly, so to speed up,
+               // if last one is own, then all properties are own.
+       
+               var key;
+               for ( key in obj ) {}
+               
+               return key === undefined || hasOwnProperty.call( obj, key );
        },
 
-       map: function( callback ) {
-               return this.pushStack( jQuery.map(this, function(elem, i){
-                       return callback.call( elem, i, elem );
-               }));
+       isEmptyObject: function( obj ) {
+               for ( var name in obj ) {
+                       return false;
+               }
+               return true;
        },
-
-       andSelf: function() {
-               return this.add( this.prevObject );
+       
+       error: function( msg ) {
+               throw msg;
        },
-
-       domManip: function( args, table, callback ) {
-               if ( this[0] ) {
-                       var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
-                               scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
-                               first = fragment.firstChild;
-
-                       if ( first )
-                               for ( var i = 0, l = this.length; i < l; i++ )
-                                       callback.call( root(this[i], first), this.length > 1 || i > 0 ?
-                                                       fragment.cloneNode(true) : fragment );
-               
-                       if ( scripts )
-                               jQuery.each( scripts, evalScript );
+       
+       parseJSON: function( data ) {
+               if ( typeof data !== "string" || !data ) {
+                       return null;
                }
 
-               return this;
+               // Make sure leading/trailing whitespace is removed (IE can't handle it)
+               data = jQuery.trim( data );
                
-               function root( elem, cur ) {
-                       return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
-                               (elem.getElementsByTagName("tbody")[0] ||
-                               elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
-                               elem;
-               }
-       }
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-function evalScript( i, elem ) {
-       if ( elem.src )
-               jQuery.ajax({
-                       url: elem.src,
-                       async: false,
-                       dataType: "script"
-               });
-
-       else
-               jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
-
-       if ( elem.parentNode )
-               elem.parentNode.removeChild( elem );
-}
-
-function now(){
-       return +new Date;
-}
-
-jQuery.extend = jQuery.fn.extend = function() {
-       // copy reference to target object
-       var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
-
-       // Handle a deep copy situation
-       if ( typeof target === "boolean" ) {
-               deep = target;
-               target = arguments[1] || {};
-               // skip the boolean and the target
-               i = 2;
-       }
-
-       // Handle case when target is a string or something (possible in deep copy)
-       if ( typeof target !== "object" && !jQuery.isFunction(target) )
-               target = {};
-
-       // extend jQuery itself if only one argument is passed
-       if ( length == i ) {
-               target = this;
-               --i;
-       }
-
-       for ( ; i < length; i++ )
-               // Only deal with non-null/undefined values
-               if ( (options = arguments[ i ]) != null )
-                       // Extend the base object
-                       for ( var name in options ) {
-                               var src = target[ name ], copy = options[ name ];
-
-                               // Prevent never-ending loop
-                               if ( target === copy )
-                                       continue;
-
-                               // Recurse if we're merging object values
-                               if ( deep && copy && typeof copy === "object" && !copy.nodeType )
-                                       target[ name ] = jQuery.extend( deep, 
-                                               // Never move original objects, clone them
-                                               src || ( copy.length != null ? [ ] : { } )
-                                       , copy );
-
-                               // Don't bring in undefined values
-                               else if ( copy !== undefined )
-                                       target[ name ] = copy;
-
-                       }
-
-       // Return the modified object
-       return target;
-};
-
-// exclude the following css properties to add px
-var    exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
-       // cache defaultView
-       defaultView = document.defaultView || {},
-       toString = Object.prototype.toString;
-
-jQuery.extend({
-       noConflict: function( deep ) {
-               window.$ = _$;
-
-               if ( deep )
-                       window.jQuery = _jQuery;
-
-               return jQuery;
-       },
+               // Make sure the incoming data is actual JSON
+               // Logic borrowed from http://json.org/json2.js
+               if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
+                       .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+                       .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
 
-       // See test/unit/core.js for details concerning isFunction.
-       // Since version 1.3, DOM methods and functions like alert
-       // aren't supported. They return false on IE (#2968).
-       isFunction: function( obj ) {
-               return toString.call(obj) === "[object Function]";
-       },
+                       // Try to use the native JSON parser first
+                       return window.JSON && window.JSON.parse ?
+                               window.JSON.parse( data ) :
+                               (new Function("return " + data))();
 
-       isArray: function( obj ) {
-               return toString.call(obj) === "[object Array]";
+               } else {
+                       jQuery.error( "Invalid JSON: " + data );
+               }
        },
 
-       // check if an element is in a (or is an) XML document
-       isXMLDoc: function( elem ) {
-               return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
-                       !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
-       },
+       noop: function() {},
 
        // Evalulates a script in a global context
        globalEval: function( data ) {
-               if ( data && /\S/.test(data) ) {
+               if ( data && rnotwhite.test(data) ) {
                        // Inspired by code by Andrea Giammarchi
                        // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
                        var head = document.getElementsByTagName("head")[0] || document.documentElement,
                                script = document.createElement("script");
 
                        script.type = "text/javascript";
-                       if ( jQuery.support.scriptEval )
+
+                       if ( jQuery.support.scriptEval ) {
                                script.appendChild( document.createTextNode( data ) );
-                       else
+                       } else {
                                script.text = data;
+                       }
 
-                       // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+                       // Use insertBefore instead of appendChild to circumvent an IE6 bug.
                        // This arises when a base node is used (#2709).
                        head.insertBefore( script, head.firstChild );
                        head.removeChild( script );
@@ -664,1005 +543,2380 @@ jQuery.extend({
        },
 
        nodeName: function( elem, name ) {
-               return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+               return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
        },
 
        // args is for internal usage only
        each: function( object, callback, args ) {
-               var name, i = 0, length = object.length;
+               var name, i = 0,
+                       length = object.length,
+                       isObj = length === undefined || jQuery.isFunction(object);
 
                if ( args ) {
-                       if ( length === undefined ) {
-                               for ( name in object )
-                                       if ( callback.apply( object[ name ], args ) === false )
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.apply( object[ name ], args ) === false ) {
                                                break;
-                       } else
-                               for ( ; i < length; )
-                                       if ( callback.apply( object[ i++ ], args ) === false )
+                                       }
+                               }
+                       } else {
+                               for ( ; i < length; ) {
+                                       if ( callback.apply( object[ i++ ], args ) === false ) {
                                                break;
+                                       }
+                               }
+                       }
 
                // A special, fast, case for the most common use of each
                } else {
-                       if ( length === undefined ) {
-                               for ( name in object )
-                                       if ( callback.call( object[ name ], name, object[ name ] ) === false )
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
                                                break;
-                       } else
+                                       }
+                               }
+                       } else {
                                for ( var value = object[0];
-                                       i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+                                       i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+                       }
                }
 
                return object;
        },
 
-       prop: function( elem, value, type, i, name ) {
-               // Handle executable functions
-               if ( jQuery.isFunction( value ) )
-                       value = value.call( elem, i );
-
-               // Handle passing in a number to a CSS property
-               return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
-                       value + "px" :
-                       value;
+       trim: function( text ) {
+               return (text || "").replace( rtrim, "" );
        },
 
-       className: {
-               // internal only, use addClass("class")
-               add: function( elem, classNames ) {
-                       jQuery.each((classNames || "").split(/\s+/), function(i, className){
-                               if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
-                                       elem.className += (elem.className ? " " : "") + className;
-                       });
-               },
-
-               // internal only, use removeClass("class")
-               remove: function( elem, classNames ) {
-                       if (elem.nodeType == 1)
-                               elem.className = classNames !== undefined ?
-                                       jQuery.grep(elem.className.split(/\s+/), function(className){
-                                               return !jQuery.className.has( classNames, className );
-                                       }).join(" ") :
-                                       "";
-               },
+       // results is for internal usage only
+       makeArray: function( array, results ) {
+               var ret = results || [];
 
-               // internal only, use hasClass("class")
-               has: function( elem, className ) {
-                       return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+               if ( array != null ) {
+                       // The window, strings (and functions) also have 'length'
+                       // The extra typeof function check is to prevent crashes
+                       // in Safari 2 (See: #3039)
+                       if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
+                               push.call( ret, array );
+                       } else {
+                               jQuery.merge( ret, array );
+                       }
                }
+
+               return ret;
        },
 
-       // A method for quickly swapping in/out CSS properties to get correct calculations
-       swap: function( elem, options, callback ) {
-               var old = {};
-               // Remember the old values, and insert the new ones
-               for ( var name in options ) {
-                       old[ name ] = elem.style[ name ];
-                       elem.style[ name ] = options[ name ];
+       inArray: function( elem, array ) {
+               if ( array.indexOf ) {
+                       return array.indexOf( elem );
                }
 
-               callback.call( elem );
+               for ( var i = 0, length = array.length; i < length; i++ ) {
+                       if ( array[ i ] === elem ) {
+                               return i;
+                       }
+               }
 
-               // Revert the old values
-               for ( var name in options )
-                       elem.style[ name ] = old[ name ];
+               return -1;
        },
 
-       css: function( elem, name, force, extra ) {
-               if ( name == "width" || name == "height" ) {
-                       var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+       merge: function( first, second ) {
+               var i = first.length, j = 0;
 
-                       function getWH() {
-                               val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+               if ( typeof second.length === "number" ) {
+                       for ( var l = second.length; j < l; j++ ) {
+                               first[ i++ ] = second[ j ];
+                       }
+               
+               } else {
+                       while ( second[j] !== undefined ) {
+                               first[ i++ ] = second[ j++ ];
+                       }
+               }
 
-                               if ( extra === "border" )
-                                       return;
+               first.length = i;
 
-                               jQuery.each( which, function() {
-                                       if ( !extra )
-                                               val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
-                                       if ( extra === "margin" )
-                                               val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
-                                       else
-                                               val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
-                               });
-                       }
+               return first;
+       },
 
-                       if ( elem.offsetWidth !== 0 )
-                               getWH();
-                       else
-                               jQuery.swap( elem, props, getWH );
+       grep: function( elems, callback, inv ) {
+               var ret = [];
 
-                       return Math.max(0, Math.round(val));
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( var i = 0, length = elems.length; i < length; i++ ) {
+                       if ( !inv !== !callback( elems[ i ], i ) ) {
+                               ret.push( elems[ i ] );
+                       }
                }
 
-               return jQuery.curCSS( elem, name, force );
+               return ret;
        },
 
-       curCSS: function( elem, name, force ) {
-               var ret, style = elem.style;
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var ret = [], value;
 
-               // We need to handle opacity special in IE
-               if ( name == "opacity" && !jQuery.support.opacity ) {
-                       ret = jQuery.attr( style, "opacity" );
+               // Go through the array, translating each of the items to their
+               // new value (or values).
+               for ( var i = 0, length = elems.length; i < length; i++ ) {
+                       value = callback( elems[ i ], i, arg );
 
-                       return ret == "" ?
-                               "1" :
-                               ret;
+                       if ( value != null ) {
+                               ret[ ret.length ] = value;
+                       }
                }
 
-               // Make sure we're using the right name for getting the float value
-               if ( name.match( /float/i ) )
-                       name = styleFloat;
+               return ret.concat.apply( [], ret );
+       },
 
-               if ( !force && style && style[ name ] )
-                       ret = style[ name ];
+       // A global GUID counter for objects
+       guid: 1,
 
-               else if ( defaultView.getComputedStyle ) {
+       proxy: function( fn, proxy, thisObject ) {
+               if ( arguments.length === 2 ) {
+                       if ( typeof proxy === "string" ) {
+                               thisObject = fn;
+                               fn = thisObject[ proxy ];
+                               proxy = undefined;
 
-                       // Only "float" is needed here
-                       if ( name.match( /float/i ) )
-                               name = "float";
+                       } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+                               thisObject = proxy;
+                               proxy = undefined;
+                       }
+               }
 
-                       name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+               if ( !proxy && fn ) {
+                       proxy = function() {
+                               return fn.apply( thisObject || this, arguments );
+                       };
+               }
 
-                       var computedStyle = defaultView.getComputedStyle( elem, null );
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               if ( fn ) {
+                       proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+               }
 
-                       if ( computedStyle )
-                               ret = computedStyle.getPropertyValue( name );
+               // So proxy can be declared as an argument
+               return proxy;
+       },
 
-                       // We should always get a number back from opacity
-                       if ( name == "opacity" && ret == "" )
-                               ret = "1";
+       // Use of jQuery.browser is frowned upon.
+       // More details: http://docs.jquery.com/Utilities/jQuery.browser
+       uaMatch: function( ua ) {
+               ua = ua.toLowerCase();
 
-               } else if ( elem.currentStyle ) {
-                       var camelCase = name.replace(/\-(\w)/g, function(all, letter){
-                               return letter.toUpperCase();
-                       });
+               var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+                       /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
+                       /(msie) ([\w.]+)/.exec( ua ) ||
+                       !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
+                       [];
 
-                       ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+               return { browser: match[1] || "", version: match[2] || "0" };
+       },
 
-                       // From the awesome hack by Dean Edwards
-                       // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+       browser: {}
+});
 
-                       // If we're not dealing with a regular pixel number
-                       // but a number that has a weird ending, we need to convert it to pixels
-                       if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
-                               // Remember the original values
-                               var left = style.left, rsLeft = elem.runtimeStyle.left;
-
-                               // Put in the new values to get a computed value out
-                               elem.runtimeStyle.left = elem.currentStyle.left;
-                               style.left = ret || 0;
-                               ret = style.pixelLeft + "px";
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+       jQuery.browser[ browserMatch.browser ] = true;
+       jQuery.browser.version = browserMatch.version;
+}
 
-                               // Revert the changed values
-                               style.left = left;
-                               elem.runtimeStyle.left = rsLeft;
-                       }
-               }
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+       jQuery.browser.safari = true;
+}
 
-               return ret;
-       },
+if ( indexOf ) {
+       jQuery.inArray = function( elem, array ) {
+               return indexOf.call( array, elem );
+       };
+}
 
-       clean: function( elems, context, fragment ) {
-               context = context || document;
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
 
-               // !context.createElement fails in IE with an error but returns typeof 'object'
-               if ( typeof context.createElement === "undefined" )
-                       context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+       DOMContentLoaded = function() {
+               document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+               jQuery.ready();
+       };
 
-               // If a single string is passed in and it's a single tag
-               // just do a createElement and skip the rest
-               if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
-                       var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
-                       if ( match )
-                               return [ context.createElement( match[1] ) ];
+} else if ( document.attachEvent ) {
+       DOMContentLoaded = function() {
+               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+               if ( document.readyState === "complete" ) {
+                       document.detachEvent( "onreadystatechange", DOMContentLoaded );
+                       jQuery.ready();
                }
+       };
+}
 
-               var ret = [], scripts = [], div = context.createElement("div");
-
-               jQuery.each(elems, function(i, elem){
-                       if ( typeof elem === "number" )
-                               elem += '';
-
-                       if ( !elem )
-                               return;
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+       if ( jQuery.isReady ) {
+               return;
+       }
 
-                       // Convert html string into DOM nodes
-                       if ( typeof elem === "string" ) {
-                               // Fix "XHTML"-style tags in all browsers
-                               elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
-                                       return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
-                                               all :
-                                               front + "></" + tag + ">";
-                               });
+       try {
+               // If IE is used, use the trick by Diego Perini
+               // http://javascript.nwbox.com/IEContentLoaded/
+               document.documentElement.doScroll("left");
+       } catch( error ) {
+               setTimeout( doScrollCheck, 1 );
+               return;
+       }
 
-                               // Trim whitespace, otherwise indexOf won't work as expected
-                               var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+       // and execute any waiting functions
+       jQuery.ready();
+}
 
-                               var wrap =
-                                       // option or optgroup
-                                       !tags.indexOf("<opt") &&
-                                       [ 1, "<select multiple='multiple'>", "</select>" ] ||
+function evalScript( i, elem ) {
+       if ( elem.src ) {
+               jQuery.ajax({
+                       url: elem.src,
+                       async: false,
+                       dataType: "script"
+               });
+       } else {
+               jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+       }
 
-                                       !tags.indexOf("<leg") &&
-                                       [ 1, "<fieldset>", "</fieldset>" ] ||
+       if ( elem.parentNode ) {
+               elem.parentNode.removeChild( elem );
+       }
+}
 
-                                       tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
-                                       [ 1, "<table>", "</table>" ] ||
+// Mutifunctional method to get and set values to a collection
+// The value/s can be optionally by executed if its a function
+function access( elems, key, value, exec, fn, pass ) {
+       var length = elems.length;
+       
+       // Setting many attributes
+       if ( typeof key === "object" ) {
+               for ( var k in key ) {
+                       access( elems, k, key[k], exec, fn, value );
+               }
+               return elems;
+       }
+       
+       // Setting one attribute
+       if ( value !== undefined ) {
+               // Optionally, function values get executed if exec is true
+               exec = !pass && exec && jQuery.isFunction(value);
+               
+               for ( var i = 0; i < length; i++ ) {
+                       fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+               }
+               
+               return elems;
+       }
+       
+       // Getting an attribute
+       return length ? fn( elems[0], key ) : undefined;
+}
 
-                                       !tags.indexOf("<tr") &&
-                                       [ 2, "<table><tbody>", "</tbody></table>" ] ||
+function now() {
+       return (new Date).getTime();
+}
+(function() {
 
-                                       // <thead> matched above
-                                       (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
-                                       [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+       jQuery.support = {};
 
-                                       !tags.indexOf("<col") &&
-                                       [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+       var root = document.documentElement,
+               script = document.createElement("script"),
+               div = document.createElement("div"),
+               id = "script" + now();
 
-                                       // IE can't serialize <link> and <script> tags normally
-                                       !jQuery.support.htmlSerialize &&
-                                       [ 1, "div<div>", "</div>" ] ||
+       div.style.display = "none";
+       div.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
 
-                                       [ 0, "", "" ];
+       var all = div.getElementsByTagName("*"),
+               a = div.getElementsByTagName("a")[0];
 
-                               // Go to html and back, then peel off extra wrappers
-                               div.innerHTML = wrap[1] + elem + wrap[2];
+       // Can't get basic test support
+       if ( !all || !all.length || !a ) {
+               return;
+       }
 
-                               // Move to the right depth
-                               while ( wrap[0]-- )
-                                       div = div.lastChild;
+       jQuery.support = {
+               // IE strips leading whitespace when .innerHTML is used
+               leadingWhitespace: div.firstChild.nodeType === 3,
 
-                               // Remove IE's autoinserted <tbody> from table fragments
-                               if ( !jQuery.support.tbody ) {
+               // Make sure that tbody elements aren't automatically inserted
+               // IE will insert them into empty tables
+               tbody: !div.getElementsByTagName("tbody").length,
 
-                                       // String was a <table>, *may* have spurious <tbody>
-                                       var hasBody = /<tbody/i.test(elem),
-                                               tbody = !tags.indexOf("<table") && !hasBody ?
-                                                       div.firstChild && div.firstChild.childNodes :
+               // Make sure that link elements get serialized correctly by innerHTML
+               // This requires a wrapper element in IE
+               htmlSerialize: !!div.getElementsByTagName("link").length,
 
-                                               // String was a bare <thead> or <tfoot>
-                                               wrap[1] == "<table>" && !hasBody ?
-                                                       div.childNodes :
-                                                       [];
+               // Get the style information from getAttribute
+               // (IE uses .cssText insted)
+               style: /red/.test( a.getAttribute("style") ),
 
-                                       for ( var j = tbody.length - 1; j >= 0 ; --j )
-                                               if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
-                                                       tbody[ j ].parentNode.removeChild( tbody[ j ] );
+               // Make sure that URLs aren't manipulated
+               // (IE normalizes it by default)
+               hrefNormalized: a.getAttribute("href") === "/a",
 
-                                       }
+               // Make sure that element opacity exists
+               // (IE uses filter instead)
+               // Use a regex to work around a WebKit issue. See #5145
+               opacity: /^0.55$/.test( a.style.opacity ),
 
-                               // IE completely kills leading whitespace when innerHTML is used
-                               if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
-                                       div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-                               
-                               elem = jQuery.makeArray( div.childNodes );
-                       }
+               // Verify style float existence
+               // (IE uses styleFloat instead of cssFloat)
+               cssFloat: !!a.style.cssFloat,
 
-                       if ( elem.nodeType )
-                               ret.push( elem );
-                       else
-                               ret = jQuery.merge( ret, elem );
+               // Make sure that if no value is specified for a checkbox
+               // that it defaults to "on".
+               // (WebKit defaults to "" instead)
+               checkOn: div.getElementsByTagName("input")[0].value === "on",
 
-               });
+               // Make sure that a selected-by-default option has a working selected property.
+               // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+               optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
 
-               if ( fragment ) {
-                       for ( var i = 0; ret[i]; i++ ) {
-                               if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
-                                       scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-                               } else {
-                                       if ( ret[i].nodeType === 1 )
-                                               ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
-                                       fragment.appendChild( ret[i] );
-                               }
-                       }
-                       
-                       return scripts;
-               }
+               parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
 
-               return ret;
-       },
+               // Will be defined later
+               deleteExpando: true,
+               checkClone: false,
+               scriptEval: false,
+               noCloneEvent: true,
+               boxModel: null
+       };
 
-       attr: function( elem, name, value ) {
-               // don't set attributes on text and comment nodes
-               if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
-                       return undefined;
+       script.type = "text/javascript";
+       try {
+               script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+       } catch(e) {}
 
-               var notxml = !jQuery.isXMLDoc( elem ),
-                       // Whether we are setting (or getting)
-                       set = value !== undefined;
+       root.insertBefore( script, root.firstChild );
 
-               // Try to normalize/fix the name
-               name = notxml && jQuery.props[ name ] || name;
+       // Make sure that the execution of code works by injecting a script
+       // tag with appendChild/createTextNode
+       // (IE doesn't support this, fails, and uses .text instead)
+       if ( window[ id ] ) {
+               jQuery.support.scriptEval = true;
+               delete window[ id ];
+       }
 
-               // Only do all the following if this is a node (faster for style)
-               // IE elem.getAttribute passes even for style
-               if ( elem.tagName ) {
+       // Test to see if it's possible to delete an expando from an element
+       // Fails in Internet Explorer
+       try {
+               delete script.test;
+       
+       } catch(e) {
+               jQuery.support.deleteExpando = false;
+       }
 
-                       // These attributes require special treatment
-                       var special = /href|src|style/.test( name );
+       root.removeChild( script );
 
-                       // Safari mis-reports the default selected property of a hidden option
-                       // Accessing the parent's selectedIndex property fixes it
-                       if ( name == "selected" && elem.parentNode )
-                               elem.parentNode.selectedIndex;
+       if ( div.attachEvent && div.fireEvent ) {
+               div.attachEvent("onclick", function click() {
+                       // Cloning a node shouldn't copy over any
+                       // bound event handlers (IE does this)
+                       jQuery.support.noCloneEvent = false;
+                       div.detachEvent("onclick", click);
+               });
+               div.cloneNode(true).fireEvent("onclick");
+       }
 
-                       // If applicable, access the attribute via the DOM 0 way
-                       if ( name in elem && notxml && !special ) {
-                               if ( set ){
-                                       // We can't allow the type property to be changed (since it causes problems in IE)
-                                       if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
-                                               throw "type property can't be changed";
+       div = document.createElement("div");
+       div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
 
-                                       elem[ name ] = value;
-                               }
+       var fragment = document.createDocumentFragment();
+       fragment.appendChild( div.firstChild );
 
-                               // browsers index elements by id/name on forms, give priority to attributes.
-                               if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
-                                       return elem.getAttributeNode( name ).nodeValue;
+       // WebKit doesn't clone checked state correctly in fragments
+       jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
 
-                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-                               if ( name == "tabIndex" ) {
-                                       var attributeNode = elem.getAttributeNode( "tabIndex" );
-                                       return attributeNode && attributeNode.specified
-                                               ? attributeNode.value
-                                               : elem.nodeName.match(/(button|input|object|select|textarea)/i)
-                                                       ? 0
-                                                       : elem.nodeName.match(/^(a|area)$/i) && elem.href
-                                                               ? 0
-                                                               : undefined;
-                               }
+       // Figure out if the W3C box model works as expected
+       // document.body must exist before we can do this
+       jQuery(function() {
+               var div = document.createElement("div");
+               div.style.width = div.style.paddingLeft = "1px";
 
-                               return elem[ name ];
-                       }
+               document.body.appendChild( div );
+               jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+               document.body.removeChild( div ).style.display = 'none';
 
-                       if ( !jQuery.support.style && notxml &&  name == "style" )
-                               return jQuery.attr( elem.style, "cssText", value );
+               div = null;
+       });
 
-                       if ( set )
-                               // convert the value to a string (all browsers do this but IE) see #1070
-                               elem.setAttribute( name, "" + value );
+       // Technique from Juriy Zaytsev
+       // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+       var eventSupported = function( eventName ) { 
+               var el = document.createElement("div"); 
+               eventName = "on" + eventName; 
 
-                       var attr = !jQuery.support.hrefNormalized && notxml && special
-                                       // Some attributes require a special call on IE
-                                       ? elem.getAttribute( name, 2 )
-                                       : elem.getAttribute( name );
+               var isSupported = (eventName in el); 
+               if ( !isSupported ) { 
+                       el.setAttribute(eventName, "return;"); 
+                       isSupported = typeof el[eventName] === "function"; 
+               } 
+               el = null; 
 
-                       // Non-existent attributes return null, we normalize to undefined
-                       return attr === null ? undefined : attr;
-               }
+               return isSupported; 
+       };
+       
+       jQuery.support.submitBubbles = eventSupported("submit");
+       jQuery.support.changeBubbles = eventSupported("change");
 
-               // elem is actually elem.style ... set the style
+       // release memory in IE
+       root = script = div = all = a = null;
+})();
 
-               // IE uses filters for opacity
-               if ( !jQuery.support.opacity && name == "opacity" ) {
-                       if ( set ) {
-                               // IE has trouble with opacity if it does not have layout
-                               // Force it by setting the zoom level
-                               elem.zoom = 1;
+jQuery.props = {
+       "for": "htmlFor",
+       "class": "className",
+       readonly: "readOnly",
+       maxlength: "maxLength",
+       cellspacing: "cellSpacing",
+       rowspan: "rowSpan",
+       colspan: "colSpan",
+       tabindex: "tabIndex",
+       usemap: "useMap",
+       frameborder: "frameBorder"
+};
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
 
-                               // Set the alpha filter to set the opacity
-                               elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
-                                       (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
-                       }
+jQuery.extend({
+       cache: {},
+       
+       expando:expando,
+
+       // The following elements throw uncatchable exceptions if you
+       // attempt to add expando properties to them.
+       noData: {
+               "embed": true,
+               "object": true,
+               "applet": true
+       },
 
-                       return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
-                               (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
-                               "";
+       data: function( elem, name, data ) {
+               if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+                       return;
                }
 
-               name = name.replace(/-([a-z])/ig, function(all, letter){
-                       return letter.toUpperCase();
-               });
+               elem = elem == window ?
+                       windowData :
+                       elem;
 
-               if ( set )
-                       elem[ name ] = value;
+               var id = elem[ expando ], cache = jQuery.cache, thisCache;
 
-               return elem[ name ];
-       },
+               if ( !id && typeof name === "string" && data === undefined ) {
+                       return null;
+               }
 
-       trim: function( text ) {
-               return (text || "").replace( /^\s+|\s+$/g, "" );
-       },
+               // Compute a unique ID for the element
+               if ( !id ) { 
+                       id = ++uuid;
+               }
 
-       makeArray: function( array ) {
-               var ret = [];
+               // Avoid generating a new cache unless none exists and we
+               // want to manipulate it.
+               if ( typeof name === "object" ) {
+                       elem[ expando ] = id;
+                       thisCache = cache[ id ] = jQuery.extend(true, {}, name);
 
-               if( array != null ){
-                       var i = array.length;
-                       // The window, strings (and functions) also have 'length'
-                       if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
-                               ret[0] = array;
-                       else
-                               while( i )
-                                       ret[--i] = array[i];
+               } else if ( !cache[ id ] ) {
+                       elem[ expando ] = id;
+                       cache[ id ] = {};
                }
 
-               return ret;
-       },
+               thisCache = cache[ id ];
 
-       inArray: function( elem, array ) {
-               for ( var i = 0, length = array.length; i < length; i++ )
-               // Use === because on IE, window == document
-                       if ( array[ i ] === elem )
-                               return i;
+               // Prevent overriding the named cache with undefined values
+               if ( data !== undefined ) {
+                       thisCache[ name ] = data;
+               }
 
-               return -1;
+               return typeof name === "string" ? thisCache[ name ] : thisCache;
        },
 
-       merge: function( first, second ) {
-               // We have to loop this way because IE & Opera overwrite the length
-               // expando of getElementsByTagName
-               var i = 0, elem, pos = first.length;
-               // Also, we need to make sure that the correct elements are being returned
-               // (IE returns comment nodes in a '*' query)
-               if ( !jQuery.support.getAll ) {
-                       while ( (elem = second[ i++ ]) != null )
-                               if ( elem.nodeType != 8 )
-                                       first[ pos++ ] = elem;
-
-               } else
-                       while ( (elem = second[ i++ ]) != null )
-                               first[ pos++ ] = elem;
-
-               return first;
-       },
+       removeData: function( elem, name ) {
+               if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+                       return;
+               }
 
-       unique: function( array ) {
-               var ret = [], done = {};
+               elem = elem == window ?
+                       windowData :
+                       elem;
 
-               try {
+               var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
 
-                       for ( var i = 0, length = array.length; i < length; i++ ) {
-                               var id = jQuery.data( array[ i ] );
+               // If we want to remove a specific section of the element's data
+               if ( name ) {
+                       if ( thisCache ) {
+                               // Remove the section of cache data
+                               delete thisCache[ name ];
 
-                               if ( !done[ id ] ) {
-                                       done[ id ] = true;
-                                       ret.push( array[ i ] );
+                               // If we've removed all the data, remove the element's cache
+                               if ( jQuery.isEmptyObject(thisCache) ) {
+                                       jQuery.removeData( elem );
                                }
                        }
 
-               } catch( e ) {
-                       ret = array;
-               }
+               // Otherwise, we want to remove all of the element's data
+               } else {
+                       if ( jQuery.support.deleteExpando ) {
+                               delete elem[ jQuery.expando ];
 
-               return ret;
-       },
+                       } else if ( elem.removeAttribute ) {
+                               elem.removeAttribute( jQuery.expando );
+                       }
 
-       grep: function( elems, callback, inv ) {
-               var ret = [];
+                       // Completely remove the data cache
+                       delete cache[ id ];
+               }
+       }
+});
 
-               // Go through the array, only saving the items
-               // that pass the validator function
-               for ( var i = 0, length = elems.length; i < length; i++ )
-                       if ( !inv != !callback( elems[ i ], i ) )
-                               ret.push( elems[ i ] );
+jQuery.fn.extend({
+       data: function( key, value ) {
+               if ( typeof key === "undefined" && this.length ) {
+                       return jQuery.data( this[0] );
 
-               return ret;
-       },
+               } else if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               jQuery.data( this, key );
+                       });
+               }
 
-       map: function( elems, callback ) {
-               var ret = [];
+               var parts = key.split(".");
+               parts[1] = parts[1] ? "." + parts[1] : "";
 
-               // Go through the array, translating each of the items to their
-               // new value (or values).
-               for ( var i = 0, length = elems.length; i < length; i++ ) {
-                       var value = callback( elems[ i ], i );
+               if ( value === undefined ) {
+                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
 
-                       if ( value != null )
-                               ret[ ret.length ] = value;
+                       if ( data === undefined && this.length ) {
+                               data = jQuery.data( this[0], key );
+                       }
+                       return data === undefined && parts[1] ?
+                               this.data( parts[0] ) :
+                               data;
+               } else {
+                       return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
+                               jQuery.data( this, key, value );
+                       });
                }
+       },
 
-               return ret.concat.apply( [], ret );
+       removeData: function( key ) {
+               return this.each(function() {
+                       jQuery.removeData( this, key );
+               });
        }
 });
+jQuery.extend({
+       queue: function( elem, type, data ) {
+               if ( !elem ) {
+                       return;
+               }
 
-// Use of jQuery.browser is deprecated.
-// It's included for backwards compatibility and plugins,
-// although they should work to migrate away.
-
-var userAgent = navigator.userAgent.toLowerCase();
-
-// Figure out what browser is being used
-jQuery.browser = {
-       version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
-       safari: /webkit/.test( userAgent ),
-       opera: /opera/.test( userAgent ),
-       msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
-       mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
-};
-
-jQuery.each({
-       parent: function(elem){return elem.parentNode;},
-       parents: function(elem){return jQuery.dir(elem,"parentNode");},
-       next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
-       prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
-       nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
-       prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
-       siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
-       children: function(elem){return jQuery.sibling(elem.firstChild);},
-       contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
-}, function(name, fn){
-       jQuery.fn[ name ] = function( selector ) {
-               var ret = jQuery.map( this, fn );
-
-               if ( selector && typeof selector == "string" )
-                       ret = jQuery.multiFilter( selector, ret );
-
-               return this.pushStack( jQuery.unique( ret ), name, selector );
-       };
-});
-
-jQuery.each({
-       appendTo: "append",
-       prependTo: "prepend",
-       insertBefore: "before",
-       insertAfter: "after",
-       replaceAll: "replaceWith"
-}, function(name, original){
-       jQuery.fn[ name ] = function( selector ) {
-               var ret = [], insert = jQuery( selector );
+               type = (type || "fx") + "queue";
+               var q = jQuery.data( elem, type );
 
-               for ( var i = 0, l = insert.length; i < l; i++ ) {
-                       var elems = (i > 0 ? this.clone(true) : this).get();
-                       jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
-                       ret = ret.concat( elems );
+               // Speed up dequeue by getting out quickly if this is just a lookup
+               if ( !data ) {
+                       return q || [];
                }
 
-               return this.pushStack( ret, name, selector );
-       };
-});
+               if ( !q || jQuery.isArray(data) ) {
+                       q = jQuery.data( elem, type, jQuery.makeArray(data) );
 
-jQuery.each({
-       removeAttr: function( name ) {
-               jQuery.attr( this, name, "" );
-               if (this.nodeType == 1)
-                       this.removeAttribute( name );
-       },
+               } else {
+                       q.push( data );
+               }
 
-       addClass: function( classNames ) {
-               jQuery.className.add( this, classNames );
+               return q;
        },
 
-       removeClass: function( classNames ) {
-               jQuery.className.remove( this, classNames );
-       },
+       dequeue: function( elem, type ) {
+               type = type || "fx";
 
-       toggleClass: function( classNames, state ) {
-               if( typeof state !== "boolean" )
-                       state = !jQuery.className.has( this, classNames );
-               jQuery.className[ state ? "add" : "remove" ]( this, classNames );
-       },
+               var queue = jQuery.queue( elem, type ), fn = queue.shift();
 
-       remove: function( selector ) {
-               if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
-                       // Prevent memory leaks
-                       jQuery( "*", this ).add([this]).each(function(){
-                               jQuery.event.remove(this);
-                               jQuery.removeData(this);
-                       });
-                       if (this.parentNode)
-                               this.parentNode.removeChild( this );
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
                }
-       },
 
-       empty: function() {
-               // Remove element nodes and prevent memory leaks
-               jQuery(this).children().remove();
+               if ( fn ) {
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift("inprogress");
+                       }
 
-               // Remove any remaining nodes
-               while ( this.firstChild )
-                       this.removeChild( this.firstChild );
+                       fn.call(elem, function() {
+                               jQuery.dequeue(elem, type);
+                       });
+               }
        }
-}, function(name, fn){
-       jQuery.fn[ name ] = function(){
-               return this.each( fn, arguments );
-       };
 });
 
-// Helper function used by the dimensions and offset modules
-function num(elem, prop) {
-       return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
-}
-var expando = "jQuery" + now(), uuid = 0, windowData = {};\r
-\r
-jQuery.extend({\r
-       cache: {},\r
-\r
-       data: function( elem, name, data ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ];\r
-\r
-               // Compute a unique ID for the element\r
-               if ( !id )\r
-                       id = elem[ expando ] = ++uuid;\r
-\r
-               // Only generate the data cache if we're\r
-               // trying to access or manipulate it\r
-               if ( name && !jQuery.cache[ id ] )\r
-                       jQuery.cache[ id ] = {};\r
-\r
-               // Prevent overriding the named cache with undefined values\r
-               if ( data !== undefined )\r
-                       jQuery.cache[ id ][ name ] = data;\r
-\r
-               // Return the named cache data, or the ID for the element\r
-               return name ?\r
-                       jQuery.cache[ id ][ name ] :\r
-                       id;\r
-       },\r
-\r
-       removeData: function( elem, name ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ];\r
-\r
-               // If we want to remove a specific section of the element's data\r
-               if ( name ) {\r
-                       if ( jQuery.cache[ id ] ) {\r
-                               // Remove the section of cache data\r
-                               delete jQuery.cache[ id ][ name ];\r
-\r
-                               // If we've removed all the data, remove the element's cache\r
-                               name = "";\r
-\r
-                               for ( name in jQuery.cache[ id ] )\r
-                                       break;\r
-\r
-                               if ( !name )\r
-                                       jQuery.removeData( elem );\r
-                       }\r
-\r
-               // Otherwise, we want to remove all of the element's data\r
-               } else {\r
-                       // Clean up the element expando\r
-                       try {\r
-                               delete elem[ expando ];\r
-                       } catch(e){\r
-                               // IE has trouble directly removing the expando\r
-                               // but it's ok with using removeAttribute\r
-                               if ( elem.removeAttribute )\r
-                                       elem.removeAttribute( expando );\r
-                       }\r
-\r
-                       // Completely remove the data cache\r
-                       delete jQuery.cache[ id ];\r
-               }\r
-       },\r
-       queue: function( elem, type, data ) {\r
-               if ( elem ){\r
-       \r
-                       type = (type || "fx") + "queue";\r
-       \r
-                       var q = jQuery.data( elem, type );\r
-       \r
-                       if ( !q || jQuery.isArray(data) )\r
-                               q = jQuery.data( elem, type, jQuery.makeArray(data) );\r
-                       else if( data )\r
-                               q.push( data );\r
-       \r
-               }\r
-               return q;\r
-       },\r
-\r
-       dequeue: function( elem, type ){\r
-               var queue = jQuery.queue( elem, type ),\r
-                       fn = queue.shift();\r
-               \r
-               if( !type || type === "fx" )\r
-                       fn = queue[0];\r
-                       \r
-               if( fn !== undefined )\r
-                       fn.call(elem);\r
-       }\r
-});\r
-\r
-jQuery.fn.extend({\r
-       data: function( key, value ){\r
-               var parts = key.split(".");\r
-               parts[1] = parts[1] ? "." + parts[1] : "";\r
-\r
-               if ( value === undefined ) {\r
-                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);\r
-\r
-                       if ( data === undefined && this.length )\r
-                               data = jQuery.data( this[0], key );\r
-\r
-                       return data === undefined && parts[1] ?\r
-                               this.data( parts[0] ) :\r
-                               data;\r
-               } else\r
-                       return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){\r
-                               jQuery.data( this, key, value );\r
-                       });\r
-       },\r
-\r
-       removeData: function( key ){\r
-               return this.each(function(){\r
-                       jQuery.removeData( this, key );\r
-               });\r
-       },\r
-       queue: function(type, data){\r
-               if ( typeof type !== "string" ) {\r
-                       data = type;\r
-                       type = "fx";\r
-               }\r
-\r
-               if ( data === undefined )\r
-                       return jQuery.queue( this[0], type );\r
-\r
-               return this.each(function(){\r
-                       var queue = jQuery.queue( this, type, data );\r
-                       \r
-                        if( type == "fx" && queue.length == 1 )\r
-                               queue[0].call(this);\r
-               });\r
-       },\r
-       dequeue: function(type){\r
-               return this.each(function(){\r
-                       jQuery.dequeue( this, type );\r
-               });\r
-       }\r
-});/*!
- * Sizzle CSS Selector Engine - v0.9.3
- *  Copyright 2009, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+               }
 
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
-       done = 0,
-       toString = Object.prototype.toString;
+               if ( data === undefined ) {
+                       return jQuery.queue( this[0], type );
+               }
+               return this.each(function( i, elem ) {
+                       var queue = jQuery.queue( this, type, data );
 
-var Sizzle = function(selector, context, results, seed) {
-       results = results || [];
-       context = context || document;
+                       if ( type === "fx" && queue[0] !== "inprogress" ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
 
-       if ( context.nodeType !== 1 && context.nodeType !== 9 )
-               return [];
-       
-       if ( !selector || typeof selector !== "string" ) {
-               return results;
-       }
+       // Based off of the plugin by Clint Helfers, with permission.
+       // http://blindsignals.com/index.php/2009/07/jquery-delay/
+       delay: function( time, type ) {
+               time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+               type = type || "fx";
+
+               return this.queue( type, function() {
+                       var elem = this;
+                       setTimeout(function() {
+                               jQuery.dequeue( elem, type );
+                       }, time );
+               });
+       },
 
-       var parts = [], m, set, checkSet, check, mode, extra, prune = true;
-       
-       // Reset the position of the chunker regexp (start from head)
-       chunker.lastIndex = 0;
-       
-       while ( (m = chunker.exec(selector)) !== null ) {
-               parts.push( m[1] );
-               
-               if ( m[2] ) {
-                       extra = RegExp.rightContext;
-                       break;
-               }
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
        }
+});
+var rclass = /[\n\t]/g,
+       rspace = /\s+/,
+       rreturn = /\r/g,
+       rspecialurl = /href|src|style/,
+       rtype = /(button|input)/i,
+       rfocusable = /(button|input|object|select|textarea)/i,
+       rclickable = /^(a|area)$/i,
+       rradiocheck = /radio|checkbox/;
 
-       if ( parts.length > 1 && origPOS.exec( selector ) ) {
-               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
-                       set = posProcess( parts[0] + parts[1], context );
-               } else {
-                       set = Expr.relative[ parts[0] ] ?
-                               [ context ] :
-                               Sizzle( parts.shift(), context );
-
-                       while ( parts.length ) {
-                               selector = parts.shift();
-
-                               if ( Expr.relative[ selector ] )
-                                       selector += parts.shift();
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return access( this, name, value, true, jQuery.attr );
+       },
 
-                               set = posProcess( selector, set );
+       removeAttr: function( name, fn ) {
+               return this.each(function(){
+                       jQuery.attr( this, name, "" );
+                       if ( this.nodeType === 1 ) {
+                               this.removeAttribute( name );
                        }
-               }
-       } else {
-               var ret = seed ?
-                       { expr: parts.pop(), set: makeArray(seed) } :
-                       Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
-               set = Sizzle.filter( ret.expr, ret.set );
+               });
+       },
 
-               if ( parts.length > 0 ) {
-                       checkSet = makeArray(set);
-               } else {
-                       prune = false;
+       addClass: function( value ) {
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.addClass( value.call(this, i, self.attr("class")) );
+                       });
                }
 
-               while ( parts.length ) {
-                       var cur = parts.pop(), pop = cur;
+               if ( value && typeof value === "string" ) {
+                       var classNames = (value || "").split( rspace );
 
-                       if ( !Expr.relative[ cur ] ) {
-                               cur = "";
-                       } else {
-                               pop = parts.pop();
-                       }
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               var elem = this[i];
 
-                       if ( pop == null ) {
-                               pop = context;
-                       }
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !elem.className ) {
+                                               elem.className = value;
 
-                       Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+                                       } else {
+                                               var className = " " + elem.className + " ", setClass = elem.className;
+                                               for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+                                                               setClass += " " + classNames[c];
+                                                       }
+                                               }
+                                               elem.className = jQuery.trim( setClass );
+                                       }
+                               }
+                       }
                }
-       }
-
-       if ( !checkSet ) {
-               checkSet = set;
-       }
 
-       if ( !checkSet ) {
-               throw "Syntax error, unrecognized expression: " + (cur || selector);
-       }
+               return this;
+       },
 
-       if ( toString.call(checkSet) === "[object Array]" ) {
-               if ( !prune ) {
-                       results.push.apply( results, checkSet );
-               } else if ( context.nodeType === 1 ) {
-                       for ( var i = 0; checkSet[i] != null; i++ ) {
-                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
-                                       results.push( set[i] );
-                               }
-                       }
-               } else {
-                       for ( var i = 0; checkSet[i] != null; i++ ) {
-                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
-                                       results.push( set[i] );
-                               }
-                       }
+       removeClass: function( value ) {
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.removeClass( value.call(this, i, self.attr("class")) );
+                       });
                }
-       } else {
-               makeArray( checkSet, results );
-       }
 
-       if ( extra ) {
-               Sizzle( extra, context, results, seed );
+               if ( (value && typeof value === "string") || value === undefined ) {
+                       var classNames = (value || "").split(rspace);
+
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               var elem = this[i];
 
-               if ( sortOrder ) {
-                       hasDuplicate = false;
-                       results.sort(sortOrder);
+                               if ( elem.nodeType === 1 && elem.className ) {
+                                       if ( value ) {
+                                               var className = (" " + elem.className + " ").replace(rclass, " ");
+                                               for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       className = className.replace(" " + classNames[c] + " ", " ");
+                                               }
+                                               elem.className = jQuery.trim( className );
 
-                       if ( hasDuplicate ) {
-                               for ( var i = 1; i < results.length; i++ ) {
-                                       if ( results[i] === results[i-1] ) {
-                                               results.splice(i--, 1);
+                                       } else {
+                                               elem.className = "";
                                        }
                                }
                        }
                }
-       }
-
-       return results;
-};
 
-Sizzle.matches = function(expr, set){
-       return Sizzle(expr, null, null, set);
-};
+               return this;
+       },
 
-Sizzle.find = function(expr, context, isXML){
-       var set, match;
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value, isBool = typeof stateVal === "boolean";
 
-       if ( !expr ) {
-               return [];
-       }
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+                       });
+               }
 
-       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
-               var type = Expr.order[i], match;
-               
-               if ( (match = Expr.match[ type ].exec( expr )) ) {
-                       var left = RegExp.leftContext;
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // toggle individual class names
+                               var className, i = 0, self = jQuery(this),
+                                       state = stateVal,
+                                       classNames = value.split( rspace );
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // check each className given, space seperated list
+                                       state = isBool ? state : !self.hasClass( className );
+                                       self[ state ? "addClass" : "removeClass" ]( className );
+                               }
 
-                       if ( left.substr( left.length - 1 ) !== "\\" ) {
-                               match[1] = (match[1] || "").replace(/\\/g, "");
-                               set = Expr.find[ type ]( match, context, isXML );
-                               if ( set != null ) {
-                                       expr = expr.replace( Expr.match[ type ], "" );
-                                       break;
+                       } else if ( type === "undefined" || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       jQuery.data( this, "__className__", this.className );
                                }
-                       }
-               }
-       }
 
-       if ( !set ) {
-               set = context.getElementsByTagName("*");
-       }
+                               // toggle whole className
+                               this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+                       }
+               });
+       },
 
-       return {set: set, expr: expr};
-};
+       hasClass: function( selector ) {
+               var className = " " + selector + " ";
+               for ( var i = 0, l = this.length; i < l; i++ ) {
+                       if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+                               return true;
+                       }
+               }
 
-Sizzle.filter = function(expr, set, inplace, not){
-       var old = expr, result = [], curLoop = set, match, anyFound,
-               isXMLFilter = set && set[0] && isXML(set[0]);
+               return false;
+       },
 
-       while ( expr && set.length ) {
-               for ( var type in Expr.filter ) {
-                       if ( (match = Expr.match[ type ].exec( expr )) != null ) {
-                               var filter = Expr.filter[ type ], found, item;
-                               anyFound = false;
+       val: function( value ) {
+               if ( value === undefined ) {
+                       var elem = this[0];
 
-                               if ( curLoop == result ) {
-                                       result = [];
+                       if ( elem ) {
+                               if ( jQuery.nodeName( elem, "option" ) ) {
+                                       return (elem.attributes.value || {}).specified ? elem.value : elem.text;
                                }
 
-                               if ( Expr.preFilter[ type ] ) {
-                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+                               // We need to handle select boxes special
+                               if ( jQuery.nodeName( elem, "select" ) ) {
+                                       var index = elem.selectedIndex,
+                                               values = [],
+                                               options = elem.options,
+                                               one = elem.type === "select-one";
 
-                                       if ( !match ) {
-                                               anyFound = found = true;
-                                       } else if ( match === true ) {
-                                               continue;
+                                       // Nothing was selected
+                                       if ( index < 0 ) {
+                                               return null;
                                        }
-                               }
 
-                               if ( match ) {
-                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
-                                               if ( item ) {
-                                                       found = filter( item, match, i, curLoop );
-                                                       var pass = not ^ !!found;
+                                       // Loop through all the selected options
+                                       for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+                                               var option = options[ i ];
 
-                                                       if ( inplace && found != null ) {
-                                                               if ( pass ) {
-                                                                       anyFound = true;
-                                                               } else {
-                                                                       curLoop[i] = false;
-                                                               }
-                                                       } else if ( pass ) {
-                                                               result.push( item );
-                                                               anyFound = true;
+                                               if ( option.selected ) {
+                                                       // Get the specifc value for the option
+                                                       value = jQuery(option).val();
+
+                                                       // We don't need an array for one selects
+                                                       if ( one ) {
+                                                               return value;
                                                        }
+
+                                                       // Multi-Selects return an array
+                                                       values.push( value );
                                                }
                                        }
-                               }
 
-                               if ( found !== undefined ) {
-                                       if ( !inplace ) {
-                                               curLoop = result;
-                                       }
+                                       return values;
+                               }
 
-                                       expr = expr.replace( Expr.match[ type ], "" );
+                               // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+                               if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+                                       return elem.getAttribute("value") === null ? "on" : elem.value;
+                               }
+                               
 
-                                       if ( !anyFound ) {
-                                               return [];
-                                       }
+                               // Everything else, we just grab the value
+                               return (elem.value || "").replace(rreturn, "");
 
-                                       break;
-                               }
                        }
+
+                       return undefined;
                }
 
-               // Improper expression
-               if ( expr == old ) {
-                       if ( anyFound == null ) {
-                               throw "Syntax error, unrecognized expression: " + expr;
-                       } else {
-                               break;
+               var isFunction = jQuery.isFunction(value);
+
+               return this.each(function(i) {
+                       var self = jQuery(this), val = value;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
                        }
-               }
 
-               old = expr;
-       }
+                       if ( isFunction ) {
+                               val = value.call(this, i, self.val());
+                       }
 
-       return curLoop;
-};
+                       // Typecast each time if the value is a Function and the appended
+                       // value is therefore different each time.
+                       if ( typeof val === "number" ) {
+                               val += "";
+                       }
 
-var Expr = Sizzle.selectors = {
+                       if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+                               this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+                       } else if ( jQuery.nodeName( this, "select" ) ) {
+                               var values = jQuery.makeArray(val);
+
+                               jQuery( "option", this ).each(function() {
+                                       this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+                               });
+
+                               if ( !values.length ) {
+                                       this.selectedIndex = -1;
+                               }
+
+                       } else {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       attrFn: {
+               val: true,
+               css: true,
+               html: true,
+               text: true,
+               data: true,
+               width: true,
+               height: true,
+               offset: true
+       },
+               
+       attr: function( elem, name, value, pass ) {
+               // don't set attributes on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return undefined;
+               }
+
+               if ( pass && name in jQuery.attrFn ) {
+                       return jQuery(elem)[name](value);
+               }
+
+               var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+                       // Whether we are setting (or getting)
+                       set = value !== undefined;
+
+               // Try to normalize/fix the name
+               name = notxml && jQuery.props[ name ] || name;
+
+               // Only do all the following if this is a node (faster for style)
+               if ( elem.nodeType === 1 ) {
+                       // These attributes require special treatment
+                       var special = rspecialurl.test( name );
+
+                       // Safari mis-reports the default selected property of an option
+                       // Accessing the parent's selectedIndex property fixes it
+                       if ( name === "selected" && !jQuery.support.optSelected ) {
+                               var parent = elem.parentNode;
+                               if ( parent ) {
+                                       parent.selectedIndex;
+       
+                                       // Make sure that it also works with optgroups, see #5701
+                                       if ( parent.parentNode ) {
+                                               parent.parentNode.selectedIndex;
+                                       }
+                               }
+                       }
+
+                       // If applicable, access the attribute via the DOM 0 way
+                       if ( name in elem && notxml && !special ) {
+                               if ( set ) {
+                                       // We can't allow the type property to be changed (since it causes problems in IE)
+                                       if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+                                               jQuery.error( "type property can't be changed" );
+                                       }
+
+                                       elem[ name ] = value;
+                               }
+
+                               // browsers index elements by id/name on forms, give priority to attributes.
+                               if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+                                       return elem.getAttributeNode( name ).nodeValue;
+                               }
+
+                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               if ( name === "tabIndex" ) {
+                                       var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+                                       return attributeNode && attributeNode.specified ?
+                                               attributeNode.value :
+                                               rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+                                                       0 :
+                                                       undefined;
+                               }
+
+                               return elem[ name ];
+                       }
+
+                       if ( !jQuery.support.style && notxml && name === "style" ) {
+                               if ( set ) {
+                                       elem.style.cssText = "" + value;
+                               }
+
+                               return elem.style.cssText;
+                       }
+
+                       if ( set ) {
+                               // convert the value to a string (all browsers do this but IE) see #1070
+                               elem.setAttribute( name, "" + value );
+                       }
+
+                       var attr = !jQuery.support.hrefNormalized && notxml && special ?
+                                       // Some attributes require a special call on IE
+                                       elem.getAttribute( name, 2 ) :
+                                       elem.getAttribute( name );
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return attr === null ? undefined : attr;
+               }
+
+               // elem is actually elem.style ... set the style
+               // Using attr for specific style information is now deprecated. Use style instead.
+               return jQuery.style( elem, name, value );
+       }
+});
+var rnamespaces = /\.(.*)$/,
+       fcleanup = function( nm ) {
+               return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
+                       return "\\" + ch;
+               });
+       };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+       // Bind an event to an element
+       // Original by Dean Edwards
+       add: function( elem, types, handler, data ) {
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // For whatever reason, IE has trouble passing the window object
+               // around, causing it to be cloned in the process
+               if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
+                       elem = window;
+               }
+
+               var handleObjIn, handleObj;
+
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+               }
+
+               // Make sure that the function being executed has a unique ID
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure
+               var elemData = jQuery.data( elem );
+
+               // If no elemData is found then we must be trying to bind to one of the
+               // banned noData elements
+               if ( !elemData ) {
+                       return;
+               }
+
+               var events = elemData.events = elemData.events || {},
+                       eventHandle = elemData.handle, eventHandle;
+
+               if ( !eventHandle ) {
+                       elemData.handle = eventHandle = function() {
+                               // Handle the second event of a trigger and when
+                               // an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+                                       jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+                                       undefined;
+                       };
+               }
+
+               // Add elem as a property of the handle function
+               // This is to prevent a memory leak with non-native events in IE.
+               eventHandle.elem = elem;
+
+               // Handle multiple events separated by a space
+               // jQuery(...).bind("mouseover mouseout", fn);
+               types = types.split(" ");
+
+               var type, i = 0, namespaces;
+
+               while ( (type = types[ i++ ]) ) {
+                       handleObj = handleObjIn ?
+                               jQuery.extend({}, handleObjIn) :
+                               { handler: handler, data: data };
+
+                       // Namespaced event handlers
+                       if ( type.indexOf(".") > -1 ) {
+                               namespaces = type.split(".");
+                               type = namespaces.shift();
+                               handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+                       } else {
+                               namespaces = [];
+                               handleObj.namespace = "";
+                       }
+
+                       handleObj.type = type;
+                       handleObj.guid = handler.guid;
+
+                       // Get the current list of functions bound to this event
+                       var handlers = events[ type ],
+                               special = jQuery.event.special[ type ] || {};
+
+                       // Init the event handler queue
+                       if ( !handlers ) {
+                               handlers = events[ type ] = [];
+
+                               // Check for a special event handler
+                               // Only use addEventListener/attachEvent if the special
+                               // events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       // Bind the global event handler to the element
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+
+                                       } else if ( elem.attachEvent ) {
+                                               elem.attachEvent( "on" + type, eventHandle );
+                                       }
+                               }
+                       }
+                       
+                       if ( special.add ) { 
+                               special.add.call( elem, handleObj ); 
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add the function to the element's handler list
+                       handlers.push( handleObj );
+
+                       // Keep track of which events have been used, for global triggering
+                       jQuery.event.global[ type ] = true;
+               }
+
+               // Nullify elem to prevent memory leaks in IE
+               elem = null;
+       },
+
+       global: {},
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, pos ) {
+               // don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+                       elemData = jQuery.data( elem ),
+                       events = elemData && elemData.events;
+
+               if ( !elemData || !events ) {
+                       return;
+               }
+
+               // types is actually an event object here
+               if ( types && types.type ) {
+                       handler = types.handler;
+                       types = types.type;
+               }
+
+               // Unbind all events for the element
+               if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+                       types = types || "";
+
+                       for ( type in events ) {
+                               jQuery.event.remove( elem, type + types );
+                       }
+
+                       return;
+               }
+
+               // Handle multiple events separated by a space
+               // jQuery(...).unbind("mouseover mouseout", fn);
+               types = types.split(" ");
+
+               while ( (type = types[ i++ ]) ) {
+                       origType = type;
+                       handleObj = null;
+                       all = type.indexOf(".") < 0;
+                       namespaces = [];
+
+                       if ( !all ) {
+                               // Namespaced event handlers
+                               namespaces = type.split(".");
+                               type = namespaces.shift();
+
+                               namespace = new RegExp("(^|\\.)" + 
+                                       jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
+                       }
+
+                       eventType = events[ type ];
+
+                       if ( !eventType ) {
+                               continue;
+                       }
+
+                       if ( !handler ) {
+                               for ( var j = 0; j < eventType.length; j++ ) {
+                                       handleObj = eventType[ j ];
+
+                                       if ( all || namespace.test( handleObj.namespace ) ) {
+                                               jQuery.event.remove( elem, origType, handleObj.handler, j );
+                                               eventType.splice( j--, 1 );
+                                       }
+                               }
+
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+
+                       for ( var j = pos || 0; j < eventType.length; j++ ) {
+                               handleObj = eventType[ j ];
+
+                               if ( handler.guid === handleObj.guid ) {
+                                       // remove the given handler for the given type
+                                       if ( all || namespace.test( handleObj.namespace ) ) {
+                                               if ( pos == null ) {
+                                                       eventType.splice( j--, 1 );
+                                               }
+
+                                               if ( special.remove ) {
+                                                       special.remove.call( elem, handleObj );
+                                               }
+                                       }
+
+                                       if ( pos != null ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+                       // remove generic event handler if no more handlers exist
+                       if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+                                       removeEvent( elem, type, elemData.handle );
+                               }
+
+                               ret = null;
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       var handle = elemData.handle;
+                       if ( handle ) {
+                               handle.elem = null;
+                       }
+
+                       delete elemData.events;
+                       delete elemData.handle;
+
+                       if ( jQuery.isEmptyObject( elemData ) ) {
+                               jQuery.removeData( elem );
+                       }
+               }
+       },
+
+       // bubbling is internal
+       trigger: function( event, data, elem /*, bubbling */ ) {
+               // Event object or event type
+               var type = event.type || event,
+                       bubbling = arguments[3];
+
+               if ( !bubbling ) {
+                       event = typeof event === "object" ?
+                               // jQuery.Event object
+                               event[expando] ? event :
+                               // Object literal
+                               jQuery.extend( jQuery.Event(type), event ) :
+                               // Just the event type (string)
+                               jQuery.Event(type);
+
+                       if ( type.indexOf("!") >= 0 ) {
+                               event.type = type = type.slice(0, -1);
+                               event.exclusive = true;
+                       }
+
+                       // Handle a global trigger
+                       if ( !elem ) {
+                               // Don't bubble custom events when global (to avoid too much overhead)
+                               event.stopPropagation();
+
+                               // Only trigger if we've ever bound an event for it
+                               if ( jQuery.event.global[ type ] ) {
+                                       jQuery.each( jQuery.cache, function() {
+                                               if ( this.events && this.events[type] ) {
+                                                       jQuery.event.trigger( event, data, this.handle.elem );
+                                               }
+                                       });
+                               }
+                       }
+
+                       // Handle triggering a single element
+
+                       // don't do events on text and comment nodes
+                       if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+                               return undefined;
+                       }
+
+                       // Clean up in case it is reused
+                       event.result = undefined;
+                       event.target = elem;
+
+                       // Clone the incoming data, if any
+                       data = jQuery.makeArray( data );
+                       data.unshift( event );
+               }
+
+               event.currentTarget = elem;
+
+               // Trigger the event, it is assumed that "handle" is a function
+               var handle = jQuery.data( elem, "handle" );
+               if ( handle ) {
+                       handle.apply( elem, data );
+               }
+
+               var parent = elem.parentNode || elem.ownerDocument;
+
+               // Trigger an inline bound script
+               try {
+                       if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+                               if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+                                       event.result = false;
+                               }
+                       }
+
+               // prevent IE from throwing an error for some elements with some event types, see #3533
+               } catch (e) {}
+
+               if ( !event.isPropagationStopped() && parent ) {
+                       jQuery.event.trigger( event, data, parent, true );
+
+               } else if ( !event.isDefaultPrevented() ) {
+                       var target = event.target, old,
+                               isClick = jQuery.nodeName(target, "a") && type === "click",
+                               special = jQuery.event.special[ type ] || {};
+
+                       if ( (!special._default || special._default.call( elem, event ) === false) && 
+                               !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+                               try {
+                                       if ( target[ type ] ) {
+                                               // Make sure that we don't accidentally re-trigger the onFOO events
+                                               old = target[ "on" + type ];
+
+                                               if ( old ) {
+                                                       target[ "on" + type ] = null;
+                                               }
+
+                                               jQuery.event.triggered = true;
+                                               target[ type ]();
+                                       }
+
+                               // prevent IE from throwing an error for some elements with some event types, see #3533
+                               } catch (e) {}
+
+                               if ( old ) {
+                                       target[ "on" + type ] = old;
+                               }
+
+                               jQuery.event.triggered = false;
+                       }
+               }
+       },
+
+       handle: function( event ) {
+               var all, handlers, namespaces, namespace, events;
+
+               event = arguments[0] = jQuery.event.fix( event || window.event );
+               event.currentTarget = this;
+
+               // Namespaced event handlers
+               all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+               if ( !all ) {
+                       namespaces = event.type.split(".");
+                       event.type = namespaces.shift();
+                       namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
+               }
+
+               var events = jQuery.data(this, "events"), handlers = events[ event.type ];
+
+               if ( events && handlers ) {
+                       // Clone the handlers to prevent manipulation
+                       handlers = handlers.slice(0);
+
+                       for ( var j = 0, l = handlers.length; j < l; j++ ) {
+                               var handleObj = handlers[ j ];
+
+                               // Filter the functions by class
+                               if ( all || namespace.test( handleObj.namespace ) ) {
+                                       // Pass in a reference to the handler function itself
+                                       // So that we can later remove it
+                                       event.handler = handleObj.handler;
+                                       event.data = handleObj.data;
+                                       event.handleObj = handleObj;
+       
+                                       var ret = handleObj.handler.apply( this, arguments );
+
+                                       if ( ret !== undefined ) {
+                                               event.result = ret;
+                                               if ( ret === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+
+                                       if ( event.isImmediatePropagationStopped() ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+       fix: function( event ) {
+               if ( event[ expando ] ) {
+                       return event;
+               }
+
+               // store a copy of the original event object
+               // and "clone" to set read-only properties
+               var originalEvent = event;
+               event = jQuery.Event( originalEvent );
+
+               for ( var i = this.props.length, prop; i; ) {
+                       prop = this.props[ --i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Fix target property, if necessary
+               if ( !event.target ) {
+                       event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+               }
+
+               // check if target is a textnode (safari)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               // Add relatedTarget, if necessary
+               if ( !event.relatedTarget && event.fromElement ) {
+                       event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+               }
+
+               // Calculate pageX/Y if missing and clientX/Y available
+               if ( event.pageX == null && event.clientX != null ) {
+                       var doc = document.documentElement, body = document.body;
+                       event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+                       event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
+               }
+
+               // Add which for key events
+               if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
+                       event.which = event.charCode || event.keyCode;
+               }
+
+               // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+               if ( !event.metaKey && event.ctrlKey ) {
+                       event.metaKey = event.ctrlKey;
+               }
+
+               // Add which for click: 1 === left; 2 === middle; 3 === right
+               // Note: button is not normalized, so don't use it
+               if ( !event.which && event.button !== undefined ) {
+                       event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+               }
+
+               return event;
+       },
+
+       // Deprecated, use jQuery.guid instead
+       guid: 1E8,
+
+       // Deprecated, use jQuery.proxy instead
+       proxy: jQuery.proxy,
+
+       special: {
+               ready: {
+                       // Make sure the ready event is setup
+                       setup: jQuery.bindReady,
+                       teardown: jQuery.noop
+               },
+
+               live: {
+                       add: function( handleObj ) {
+                               jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); 
+                       },
+
+                       remove: function( handleObj ) {
+                               var remove = true,
+                                       type = handleObj.origType.replace(rnamespaces, "");
+                               
+                               jQuery.each( jQuery.data(this, "events").live || [], function() {
+                                       if ( type === this.origType.replace(rnamespaces, "") ) {
+                                               remove = false;
+                                               return false;
+                                       }
+                               });
+
+                               if ( remove ) {
+                                       jQuery.event.remove( this, handleObj.origType, liveHandler );
+                               }
+                       }
+
+               },
+
+               beforeunload: {
+                       setup: function( data, namespaces, eventHandle ) {
+                               // We only want to do this special case on windows
+                               if ( this.setInterval ) {
+                                       this.onbeforeunload = eventHandle;
+                               }
+
+                               return false;
+                       },
+                       teardown: function( namespaces, eventHandle ) {
+                               if ( this.onbeforeunload === eventHandle ) {
+                                       this.onbeforeunload = null;
+                               }
+                       }
+               }
+       }
+};
+
+var removeEvent = document.removeEventListener ?
+       function( elem, type, handle ) {
+               elem.removeEventListener( type, handle, false );
+       } : 
+       function( elem, type, handle ) {
+               elem.detachEvent( "on" + type, handle );
+       };
+
+jQuery.Event = function( src ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !this.preventDefault ) {
+               return new jQuery.Event( src );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // timeStamp is buggy for some events on Firefox(#3843)
+       // So we won't rely on the native value
+       this.timeStamp = now();
+
+       // Mark it as fixed
+       this[ expando ] = true;
+};
+
+function returnFalse() {
+       return false;
+}
+function returnTrue() {
+       return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       preventDefault: function() {
+               this.isDefaultPrevented = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+               
+               // if preventDefault exists run it on the original event
+               if ( e.preventDefault ) {
+                       e.preventDefault();
+               }
+               // otherwise set the returnValue property of the original event to false (IE)
+               e.returnValue = false;
+       },
+       stopPropagation: function() {
+               this.isPropagationStopped = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+               // if stopPropagation exists run it on the original event
+               if ( e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+               // otherwise set the cancelBubble property of the original event to true (IE)
+               e.cancelBubble = true;
+       },
+       stopImmediatePropagation: function() {
+               this.isImmediatePropagationStopped = returnTrue;
+               this.stopPropagation();
+       },
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+       // Check if mouse(over|out) are still within the same parent element
+       var parent = event.relatedTarget;
+
+       // Firefox sometimes assigns relatedTarget a XUL element
+       // which we cannot access the parentNode property of
+       try {
+               // Traverse up the tree
+               while ( parent && parent !== this ) {
+                       parent = parent.parentNode;
+               }
+
+               if ( parent !== this ) {
+                       // set the correct event type
+                       event.type = event.data;
+
+                       // handle event if we actually just moused on to a non sub-element
+                       jQuery.event.handle.apply( this, arguments );
+               }
+
+       // assuming we've left the element since we most likely mousedover a xul element
+       } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+       event.type = event.data;
+       jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               setup: function( data ) {
+                       jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+               },
+               teardown: function( data ) {
+                       jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+               }
+       };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+       jQuery.event.special.submit = {
+               setup: function( data, namespaces ) {
+                       if ( this.nodeName.toLowerCase() !== "form" ) {
+                               jQuery.event.add(this, "click.specialSubmit", function( e ) {
+                                       var elem = e.target, type = elem.type;
+
+                                       if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+                                               return trigger( "submit", this, arguments );
+                                       }
+                               });
+        
+                               jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+                                       var elem = e.target, type = elem.type;
+
+                                       if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+                                               return trigger( "submit", this, arguments );
+                                       }
+                               });
+
+                       } else {
+                               return false;
+                       }
+               },
+
+               teardown: function( namespaces ) {
+                       jQuery.event.remove( this, ".specialSubmit" );
+               }
+       };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+       var formElems = /textarea|input|select/i,
+
+       changeFilters,
+
+       getVal = function( elem ) {
+               var type = elem.type, val = elem.value;
+
+               if ( type === "radio" || type === "checkbox" ) {
+                       val = elem.checked;
+
+               } else if ( type === "select-multiple" ) {
+                       val = elem.selectedIndex > -1 ?
+                               jQuery.map( elem.options, function( elem ) {
+                                       return elem.selected;
+                               }).join("-") :
+                               "";
+
+               } else if ( elem.nodeName.toLowerCase() === "select" ) {
+                       val = elem.selectedIndex;
+               }
+
+               return val;
+       },
+
+       testChange = function testChange( e ) {
+               var elem = e.target, data, val;
+
+               if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
+                       return;
+               }
+
+               data = jQuery.data( elem, "_change_data" );
+               val = getVal(elem);
+
+               // the current data will be also retrieved by beforeactivate
+               if ( e.type !== "focusout" || elem.type !== "radio" ) {
+                       jQuery.data( elem, "_change_data", val );
+               }
+               
+               if ( data === undefined || val === data ) {
+                       return;
+               }
+
+               if ( data != null || val ) {
+                       e.type = "change";
+                       return jQuery.event.trigger( e, arguments[1], elem );
+               }
+       };
+
+       jQuery.event.special.change = {
+               filters: {
+                       focusout: testChange, 
+
+                       click: function( e ) {
+                               var elem = e.target, type = elem.type;
+
+                               if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+                                       return testChange.call( this, e );
+                               }
+                       },
+
+                       // Change has to be called before submit
+                       // Keydown will be called before keypress, which is used in submit-event delegation
+                       keydown: function( e ) {
+                               var elem = e.target, type = elem.type;
+
+                               if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+                                       (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+                                       type === "select-multiple" ) {
+                                       return testChange.call( this, e );
+                               }
+                       },
+
+                       // Beforeactivate happens also before the previous element is blurred
+                       // with this event you can't trigger a change event, but you can store
+                       // information/focus[in] is not needed anymore
+                       beforeactivate: function( e ) {
+                               var elem = e.target;
+                               jQuery.data( elem, "_change_data", getVal(elem) );
+                       }
+               },
+
+               setup: function( data, namespaces ) {
+                       if ( this.type === "file" ) {
+                               return false;
+                       }
+
+                       for ( var type in changeFilters ) {
+                               jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+                       }
+
+                       return formElems.test( this.nodeName );
+               },
+
+               teardown: function( namespaces ) {
+                       jQuery.event.remove( this, ".specialChange" );
+
+                       return formElems.test( this.nodeName );
+               }
+       };
+
+       changeFilters = jQuery.event.special.change.filters;
+}
+
+function trigger( type, elem, args ) {
+       args[0].type = type;
+       return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               this.addEventListener( orig, handler, true );
+                       }, 
+                       teardown: function() { 
+                               this.removeEventListener( orig, handler, true );
+                       }
+               };
+
+               function handler( e ) { 
+                       e = jQuery.event.fix( e );
+                       e.type = fix;
+                       return jQuery.event.handle.call( this, e );
+               }
+       });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+       jQuery.fn[ name ] = function( type, data, fn ) {
+               // Handle object literals
+               if ( typeof type === "object" ) {
+                       for ( var key in type ) {
+                               this[ name ](key, data, type[key], fn);
+                       }
+                       return this;
+               }
+               
+               if ( jQuery.isFunction( data ) ) {
+                       fn = data;
+                       data = undefined;
+               }
+
+               var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+                       jQuery( this ).unbind( event, handler );
+                       return fn.apply( this, arguments );
+               }) : fn;
+
+               if ( type === "unload" && name !== "one" ) {
+                       this.one( type, data, fn );
+
+               } else {
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               jQuery.event.add( this[i], type, handler, data );
+                       }
+               }
+
+               return this;
+       };
+});
+
+jQuery.fn.extend({
+       unbind: function( type, fn ) {
+               // Handle object literals
+               if ( typeof type === "object" && !type.preventDefault ) {
+                       for ( var key in type ) {
+                               this.unbind(key, type[key]);
+                       }
+
+               } else {
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               jQuery.event.remove( this[i], type, fn );
+                       }
+               }
+
+               return this;
+       },
+       
+       delegate: function( selector, types, data, fn ) {
+               return this.live( types, data, fn, selector );
+       },
+       
+       undelegate: function( selector, types, fn ) {
+               if ( arguments.length === 0 ) {
+                               return this.unbind( "live" );
+               
+               } else {
+                       return this.die( types, null, fn, selector );
+               }
+       },
+       
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+
+       triggerHandler: function( type, data ) {
+               if ( this[0] ) {
+                       var event = jQuery.Event( type );
+                       event.preventDefault();
+                       event.stopPropagation();
+                       jQuery.event.trigger( event, data, this[0] );
+                       return event.result;
+               }
+       },
+
+       toggle: function( fn ) {
+               // Save reference to arguments for access in closure
+               var args = arguments, i = 1;
+
+               // link all the functions, so any of them can unbind this click handler
+               while ( i < args.length ) {
+                       jQuery.proxy( fn, args[ i++ ] );
+               }
+
+               return this.click( jQuery.proxy( fn, function( event ) {
+                       // Figure out which function to execute
+                       var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+                       jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+                       // Make sure that clicks stop
+                       event.preventDefault();
+
+                       // and execute the function
+                       return args[ lastToggle ].apply( this, arguments ) || false;
+               }));
+       },
+
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+});
+
+var liveMap = {
+       focus: "focusin",
+       blur: "focusout",
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+       jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+               var type, i = 0, match, namespaces, preType,
+                       selector = origSelector || this.selector,
+                       context = origSelector ? this : jQuery( this.context );
+
+               if ( jQuery.isFunction( data ) ) {
+                       fn = data;
+                       data = undefined;
+               }
+
+               types = (types || "").split(" ");
+
+               while ( (type = types[ i++ ]) != null ) {
+                       match = rnamespaces.exec( type );
+                       namespaces = "";
+
+                       if ( match )  {
+                               namespaces = match[0];
+                               type = type.replace( rnamespaces, "" );
+                       }
+
+                       if ( type === "hover" ) {
+                               types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+                               continue;
+                       }
+
+                       preType = type;
+
+                       if ( type === "focus" || type === "blur" ) {
+                               types.push( liveMap[ type ] + namespaces );
+                               type = type + namespaces;
+
+                       } else {
+                               type = (liveMap[ type ] || type) + namespaces;
+                       }
+
+                       if ( name === "live" ) {
+                               // bind live handler
+                               context.each(function(){
+                                       jQuery.event.add( this, liveConvert( type, selector ),
+                                               { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+                               });
+
+                       } else {
+                               // unbind live handler
+                               context.unbind( liveConvert( type, selector ), fn );
+                       }
+               }
+               
+               return this;
+       }
+});
+
+function liveHandler( event ) {
+       var stop, elems = [], selectors = [], args = arguments,
+               related, match, handleObj, elem, j, i, l, data,
+               events = jQuery.data( this, "events" );
+
+       // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+       if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+               return;
+       }
+
+       event.liveFired = this;
+
+       var live = events.live.slice(0);
+
+       for ( j = 0; j < live.length; j++ ) {
+               handleObj = live[j];
+
+               if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+                       selectors.push( handleObj.selector );
+
+               } else {
+                       live.splice( j--, 1 );
+               }
+       }
+
+       match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+       for ( i = 0, l = match.length; i < l; i++ ) {
+               for ( j = 0; j < live.length; j++ ) {
+                       handleObj = live[j];
+
+                       if ( match[i].selector === handleObj.selector ) {
+                               elem = match[i].elem;
+                               related = null;
+
+                               // Those two events require additional checking
+                               if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+                                       related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+                               }
+
+                               if ( !related || related !== elem ) {
+                                       elems.push({ elem: elem, handleObj: handleObj });
+                               }
+                       }
+               }
+       }
+
+       for ( i = 0, l = elems.length; i < l; i++ ) {
+               match = elems[i];
+               event.currentTarget = match.elem;
+               event.data = match.handleObj.data;
+               event.handleObj = match.handleObj;
+
+               if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
+                       stop = false;
+                       break;
+               }
+       }
+
+       return stop;
+}
+
+function liveConvert( type, selector ) {
+       return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( fn ) {
+               return fn ? this.bind( name, fn ) : this.trigger( name );
+       };
+
+       if ( jQuery.attrFn ) {
+               jQuery.attrFn[ name ] = true;
+       }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+       window.attachEvent("onunload", function() {
+               for ( var id in jQuery.cache ) {
+                       if ( jQuery.cache[ id ].handle ) {
+                               // Try/Catch is to handle iframes being unloaded, see #4280
+                               try {
+                                       jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+                               } catch(e) {}
+                       }
+               }
+       });
+}
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+       done = 0,
+       toString = Object.prototype.toString,
+       hasDuplicate = false,
+       baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+//   Thus far that includes Google Chrome.
+[0, 0].sort(function(){
+       baseHasDuplicate = false;
+       return 0;
+});
+
+var Sizzle = function(selector, context, results, seed) {
+       results = results || [];
+       var origContext = context = context || document;
+
+       if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+               return [];
+       }
+       
+       if ( !selector || typeof selector !== "string" ) {
+               return results;
+       }
+
+       var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
+               soFar = selector;
+       
+       // Reset the position of the chunker regexp (start from head)
+       while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
+               soFar = m[3];
+               
+               parts.push( m[1] );
+               
+               if ( m[2] ) {
+                       extra = m[3];
+                       break;
+               }
+       }
+
+       if ( parts.length > 1 && origPOS.exec( selector ) ) {
+               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+                       set = posProcess( parts[0] + parts[1], context );
+               } else {
+                       set = Expr.relative[ parts[0] ] ?
+                               [ context ] :
+                               Sizzle( parts.shift(), context );
+
+                       while ( parts.length ) {
+                               selector = parts.shift();
+
+                               if ( Expr.relative[ selector ] ) {
+                                       selector += parts.shift();
+                               }
+                               
+                               set = posProcess( selector, set );
+                       }
+               }
+       } else {
+               // Take a shortcut and set the context if the root selector is an ID
+               // (but not if it'll be faster if the inner selector is an ID)
+               if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+                               Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+                       var ret = Sizzle.find( parts.shift(), context, contextXML );
+                       context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+               }
+
+               if ( context ) {
+                       var ret = seed ?
+                               { expr: parts.pop(), set: makeArray(seed) } :
+                               Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+                       set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+                       if ( parts.length > 0 ) {
+                               checkSet = makeArray(set);
+                       } else {
+                               prune = false;
+                       }
+
+                       while ( parts.length ) {
+                               var cur = parts.pop(), pop = cur;
+
+                               if ( !Expr.relative[ cur ] ) {
+                                       cur = "";
+                               } else {
+                                       pop = parts.pop();
+                               }
+
+                               if ( pop == null ) {
+                                       pop = context;
+                               }
+
+                               Expr.relative[ cur ]( checkSet, pop, contextXML );
+                       }
+               } else {
+                       checkSet = parts = [];
+               }
+       }
+
+       if ( !checkSet ) {
+               checkSet = set;
+       }
+
+       if ( !checkSet ) {
+               Sizzle.error( cur || selector );
+       }
+
+       if ( toString.call(checkSet) === "[object Array]" ) {
+               if ( !prune ) {
+                       results.push.apply( results, checkSet );
+               } else if ( context && context.nodeType === 1 ) {
+                       for ( var i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               } else {
+                       for ( var i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               }
+       } else {
+               makeArray( checkSet, results );
+       }
+
+       if ( extra ) {
+               Sizzle( extra, origContext, results, seed );
+               Sizzle.uniqueSort( results );
+       }
+
+       return results;
+};
+
+Sizzle.uniqueSort = function(results){
+       if ( sortOrder ) {
+               hasDuplicate = baseHasDuplicate;
+               results.sort(sortOrder);
+
+               if ( hasDuplicate ) {
+                       for ( var i = 1; i < results.length; i++ ) {
+                               if ( results[i] === results[i-1] ) {
+                                       results.splice(i--, 1);
+                               }
+                       }
+               }
+       }
+
+       return results;
+};
+
+Sizzle.matches = function(expr, set){
+       return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+       var set, match;
+
+       if ( !expr ) {
+               return [];
+       }
+
+       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+               var type = Expr.order[i], match;
+               
+               if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+                       var left = match[1];
+                       match.splice(1,1);
+
+                       if ( left.substr( left.length - 1 ) !== "\\" ) {
+                               match[1] = (match[1] || "").replace(/\\/g, "");
+                               set = Expr.find[ type ]( match, context, isXML );
+                               if ( set != null ) {
+                                       expr = expr.replace( Expr.match[ type ], "" );
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       if ( !set ) {
+               set = context.getElementsByTagName("*");
+       }
+
+       return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+       var old = expr, result = [], curLoop = set, match, anyFound,
+               isXMLFilter = set && set[0] && isXML(set[0]);
+
+       while ( expr && set.length ) {
+               for ( var type in Expr.filter ) {
+                       if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+                               var filter = Expr.filter[ type ], found, item, left = match[1];
+                               anyFound = false;
+
+                               match.splice(1,1);
+
+                               if ( left.substr( left.length - 1 ) === "\\" ) {
+                                       continue;
+                               }
+
+                               if ( curLoop === result ) {
+                                       result = [];
+                               }
+
+                               if ( Expr.preFilter[ type ] ) {
+                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+                                       if ( !match ) {
+                                               anyFound = found = true;
+                                       } else if ( match === true ) {
+                                               continue;
+                                       }
+                               }
+
+                               if ( match ) {
+                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+                                               if ( item ) {
+                                                       found = filter( item, match, i, curLoop );
+                                                       var pass = not ^ !!found;
+
+                                                       if ( inplace && found != null ) {
+                                                               if ( pass ) {
+                                                                       anyFound = true;
+                                                               } else {
+                                                                       curLoop[i] = false;
+                                                               }
+                                                       } else if ( pass ) {
+                                                               result.push( item );
+                                                               anyFound = true;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if ( found !== undefined ) {
+                                       if ( !inplace ) {
+                                               curLoop = result;
+                                       }
+
+                                       expr = expr.replace( Expr.match[ type ], "" );
+
+                                       if ( !anyFound ) {
+                                               return [];
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+
+               // Improper expression
+               if ( expr === old ) {
+                       if ( anyFound == null ) {
+                               Sizzle.error( expr );
+                       } else {
+                               break;
+                       }
+               }
+
+               old = expr;
+       }
+
+       return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+       throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
        order: [ "ID", "NAME", "TAG" ],
        match: {
-               ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-               CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
-               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
-               TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+               ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+               CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+               TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
-               PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+               PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
        },
+       leftMatch: {},
        attrMap: {
                "class": "className",
                "for": "htmlFor"
@@ -1673,20 +2927,20 @@ var Expr = Sizzle.selectors = {
                }
        },
        relative: {
-               "+": function(checkSet, part, isXML){
+               "+": function(checkSet, part){
                        var isPartStr = typeof part === "string",
                                isTag = isPartStr && !/\W/.test(part),
                                isPartStrNotTag = isPartStr && !isTag;
 
-                       if ( isTag && !isXML ) {
-                               part = part.toUpperCase();
+                       if ( isTag ) {
+                               part = part.toLowerCase();
                        }
 
                        for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                if ( (elem = checkSet[i]) ) {
                                        while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
 
-                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
                                                elem || false :
                                                elem === part;
                                }
@@ -1696,17 +2950,17 @@ var Expr = Sizzle.selectors = {
                                Sizzle.filter( part, checkSet, true );
                        }
                },
-               ">": function(checkSet, part, isXML){
+               ">": function(checkSet, part){
                        var isPartStr = typeof part === "string";
 
                        if ( isPartStr && !/\W/.test(part) ) {
-                               part = isXML ? part : part.toUpperCase();
+                               part = part.toLowerCase();
 
                                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                        var elem = checkSet[i];
                                        if ( elem ) {
                                                var parent = elem.parentNode;
-                                               checkSet[i] = parent.nodeName === part ? parent : false;
+                                               checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
                                        }
                                }
                        } else {
@@ -1727,8 +2981,8 @@ var Expr = Sizzle.selectors = {
                "": function(checkSet, part, isXML){
                        var doneName = done++, checkFn = dirCheck;
 
-                       if ( !part.match(/\W/) ) {
-                               var nodeCheck = part = isXML ? part : part.toUpperCase();
+                       if ( typeof part === "string" && !/\W/.test(part) ) {
+                               var nodeCheck = part = part.toLowerCase();
                                checkFn = dirNodeCheck;
                        }
 
@@ -1737,8 +2991,8 @@ var Expr = Sizzle.selectors = {
                "~": function(checkSet, part, isXML){
                        var doneName = done++, checkFn = dirCheck;
 
-                       if ( typeof part === "string" && !part.match(/\W/) ) {
-                               var nodeCheck = part = isXML ? part : part.toUpperCase();
+                       if ( typeof part === "string" && !/\W/.test(part) ) {
+                               var nodeCheck = part = part.toLowerCase();
                                checkFn = dirNodeCheck;
                        }
 
@@ -1752,7 +3006,7 @@ var Expr = Sizzle.selectors = {
                                return m ? [m] : [];
                        }
                },
-               NAME: function(match, context, isXML){
+               NAME: function(match, context){
                        if ( typeof context.getElementsByName !== "undefined" ) {
                                var ret = [], results = context.getElementsByName(match[1]);
 
@@ -1779,9 +3033,10 @@ var Expr = Sizzle.selectors = {
 
                        for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                if ( elem ) {
-                                       if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
-                                               if ( !inplace )
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+                                               if ( !inplace ) {
                                                        result.push( elem );
+                                               }
                                        } else if ( inplace ) {
                                                curLoop[i] = false;
                                        }
@@ -1794,14 +3049,13 @@ var Expr = Sizzle.selectors = {
                        return match[1].replace(/\\/g, "");
                },
                TAG: function(match, curLoop){
-                       for ( var i = 0; curLoop[i] === false; i++ ){}
-                       return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+                       return match[1].toLowerCase();
                },
                CHILD: function(match){
-                       if ( match[1] == "nth" ) {
+                       if ( match[1] === "nth" ) {
                                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
-                                       match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+                                       match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
                                        !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
 
                                // calculate the numbers (first)n+(last) including if they are negative
@@ -1830,7 +3084,7 @@ var Expr = Sizzle.selectors = {
                PSEUDO: function(match, curLoop, inplace, result, not){
                        if ( match[1] === "not" ) {
                                // If we're dealing with a complex expression, or a simple one
-                               if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+                               if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                        match[3] = Sizzle(match[3], null, null, curLoop);
                                } else {
                                        var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
@@ -1903,7 +3157,7 @@ var Expr = Sizzle.selectors = {
                        return "reset" === elem.type;
                },
                button: function(elem){
-                       return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+                       return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
                },
                input: function(elem){
                        return /input|select|textarea|button/i.test(elem.nodeName);
@@ -1929,10 +3183,10 @@ var Expr = Sizzle.selectors = {
                        return i > match[3] - 0;
                },
                nth: function(elem, i, match){
-                       return match[3] - 0 == i;
+                       return match[3] - 0 === i;
                },
                eq: function(elem, i, match){
-                       return match[3] - 0 == i;
+                       return match[3] - 0 === i;
                }
        },
        filter: {
@@ -1942,7 +3196,7 @@ var Expr = Sizzle.selectors = {
                        if ( filter ) {
                                return filter( elem, i, match, array );
                        } else if ( name === "contains" ) {
-                               return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+                               return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
                        } else if ( name === "not" ) {
                                var not = match[3];
 
@@ -1953,6 +3207,8 @@ var Expr = Sizzle.selectors = {
                                }
 
                                return true;
+                       } else {
+                               Sizzle.error( "Syntax error, unrecognized expression: " + name );
                        }
                },
                CHILD: function(elem, match){
@@ -1960,20 +3216,26 @@ var Expr = Sizzle.selectors = {
                        switch (type) {
                                case 'only':
                                case 'first':
-                                       while (node = node.previousSibling)  {
-                                               if ( node.nodeType === 1 ) return false;
+                                       while ( (node = node.previousSibling) )  {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+                                       if ( type === "first" ) { 
+                                               return true; 
                                        }
-                                       if ( type == 'first') return true;
                                        node = elem;
                                case 'last':
-                                       while (node = node.nextSibling)  {
-                                               if ( node.nodeType === 1 ) return false;
+                                       while ( (node = node.nextSibling) )      {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
                                        }
                                        return true;
                                case 'nth':
                                        var first = match[2], last = match[3];
 
-                                       if ( first == 1 && last == 0 ) {
+                                       if ( first === 1 && last === 0 ) {
                                                return true;
                                        }
                                        
@@ -1991,10 +3253,10 @@ var Expr = Sizzle.selectors = {
                                        }
                                        
                                        var diff = elem.nodeIndex - last;
-                                       if ( first == 0 ) {
-                                               return diff == 0;
+                                       if ( first === 0 ) {
+                                               return diff === 0;
                                        } else {
-                                               return ( diff % first == 0 && diff / first >= 0 );
+                                               return ( diff % first === 0 && diff / first >= 0 );
                                        }
                        }
                },
@@ -2002,7 +3264,7 @@ var Expr = Sizzle.selectors = {
                        return elem.nodeType === 1 && elem.getAttribute("id") === match;
                },
                TAG: function(elem, match){
-                       return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+                       return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
                },
                CLASS: function(elem, match){
                        return (" " + (elem.className || elem.getAttribute("class")) + " ")
@@ -2030,7 +3292,7 @@ var Expr = Sizzle.selectors = {
                                !check ?
                                value && result !== false :
                                type === "!=" ?
-                               value != check :
+                               value !== check :
                                type === "^=" ?
                                value.indexOf(check) === 0 :
                                type === "$=" ?
@@ -2052,11 +3314,14 @@ var Expr = Sizzle.selectors = {
 var origPOS = Expr.match.POS;
 
 for ( var type in Expr.match ) {
-       Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+       Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+       Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
+               return "\\" + (num - 0 + 1);
+       }));
 }
 
 var makeArray = function(array, results) {
-       array = Array.prototype.slice.call( array );
+       array = Array.prototype.slice.call( array, 0 );
 
        if ( results ) {
                results.push.apply( results, array );
@@ -2068,8 +3333,10 @@ var makeArray = function(array, results) {
 
 // Perform a simple check to determine if the browser is capable of
 // converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
 try {
-       Array.prototype.slice.call( document.documentElement.childNodes );
+       Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
 
 // Provide a fallback method if it does not work
 } catch(e){
@@ -2098,6 +3365,13 @@ var sortOrder;
 
 if ( document.documentElement.compareDocumentPosition ) {
        sortOrder = function( a, b ) {
+               if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+                       if ( a == b ) {
+                               hasDuplicate = true;
+                       }
+                       return a.compareDocumentPosition ? -1 : 1;
+               }
+
                var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                if ( ret === 0 ) {
                        hasDuplicate = true;
@@ -2106,6 +3380,13 @@ if ( document.documentElement.compareDocumentPosition ) {
        };
 } else if ( "sourceIndex" in document.documentElement ) {
        sortOrder = function( a, b ) {
+               if ( !a.sourceIndex || !b.sourceIndex ) {
+                       if ( a == b ) {
+                               hasDuplicate = true;
+                       }
+                       return a.sourceIndex ? -1 : 1;
+               }
+
                var ret = a.sourceIndex - b.sourceIndex;
                if ( ret === 0 ) {
                        hasDuplicate = true;
@@ -2114,11 +3395,18 @@ if ( document.documentElement.compareDocumentPosition ) {
        };
 } else if ( document.createRange ) {
        sortOrder = function( a, b ) {
+               if ( !a.ownerDocument || !b.ownerDocument ) {
+                       if ( a == b ) {
+                               hasDuplicate = true;
+                       }
+                       return a.ownerDocument ? -1 : 1;
+               }
+
                var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
-               aRange.selectNode(a);
-               aRange.collapse(true);
-               bRange.selectNode(b);
-               bRange.collapse(true);
+               aRange.setStart(a, 0);
+               aRange.setEnd(a, 0);
+               bRange.setStart(b, 0);
+               bRange.setEnd(b, 0);
                var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                if ( ret === 0 ) {
                        hasDuplicate = true;
@@ -2127,13 +3415,33 @@ if ( document.documentElement.compareDocumentPosition ) {
        };
 }
 
+// Utility function for retreiving the text value of an array of DOM nodes
+function getText( elems ) {
+       var ret = "", elem;
+
+       for ( var i = 0; elems[i]; i++ ) {
+               elem = elems[i];
+
+               // Get the text from text nodes and CDATA nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+                       ret += elem.nodeValue;
+
+               // Traverse everything else, except comment nodes
+               } else if ( elem.nodeType !== 8 ) {
+                       ret += getText( elem.childNodes );
+               }
+       }
+
+       return ret;
+}
+
 // Check to see if the browser returns elements by name when
 // querying by getElementById (and provide a workaround)
 (function(){
        // We're going to inject a fake input element with a specified name
-       var form = document.createElement("form"),
+       var form = document.createElement("div"),
                id = "script" + (new Date).getTime();
-       form.innerHTML = "<input name='" + id + "'/>";
+       form.innerHTML = "<a name='" + id + "'/>";
 
        // Inject it into the root element, check its status, and remove it quickly
        var root = document.documentElement;
@@ -2141,7 +3449,7 @@ if ( document.documentElement.compareDocumentPosition ) {
 
        // The workaround has to do additional checks after a getElementById
        // Which slows things down for other browsers (hence the branching)
-       if ( !!document.getElementById( id ) ) {
+       if ( document.getElementById( id ) ) {
                Expr.find.ID = function(match, context, isXML){
                        if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                var m = context.getElementById(match[1]);
@@ -2156,6 +3464,7 @@ if ( document.documentElement.compareDocumentPosition ) {
        }
 
        root.removeChild( form );
+       root = form = null; // release memory in IE
 })();
 
 (function(){
@@ -2196,69 +3505,75 @@ if ( document.documentElement.compareDocumentPosition ) {
                        return elem.getAttribute("href", 2);
                };
        }
+
+       div = null; // release memory in IE
 })();
 
-if ( document.querySelectorAll ) (function(){
-       var oldSizzle = Sizzle, div = document.createElement("div");
-       div.innerHTML = "<p class='TEST'></p>";
+if ( document.querySelectorAll ) {
+       (function(){
+               var oldSizzle = Sizzle, div = document.createElement("div");
+               div.innerHTML = "<p class='TEST'></p>";
 
-       // Safari can't handle uppercase or unicode characters when
-       // in quirks mode.
-       if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
-               return;
-       }
+               // Safari can't handle uppercase or unicode characters when
+               // in quirks mode.
+               if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+                       return;
+               }
        
-       Sizzle = function(query, context, extra, seed){
-               context = context || document;
+               Sizzle = function(query, context, extra, seed){
+                       context = context || document;
+
+                       // Only use querySelectorAll on non-XML documents
+                       // (ID selectors don't work in non-HTML documents)
+                       if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+                               try {
+                                       return makeArray( context.querySelectorAll(query), extra );
+                               } catch(e){}
+                       }
+               
+                       return oldSizzle(query, context, extra, seed);
+               };
 
-               // Only use querySelectorAll on non-XML documents
-               // (ID selectors don't work in non-HTML documents)
-               if ( !seed && context.nodeType === 9 && !isXML(context) ) {
-                       try {
-                               return makeArray( context.querySelectorAll(query), extra );
-                       } catch(e){}
+               for ( var prop in oldSizzle ) {
+                       Sizzle[ prop ] = oldSizzle[ prop ];
                }
-               
-               return oldSizzle(query, context, extra, seed);
-       };
 
-       Sizzle.find = oldSizzle.find;
-       Sizzle.filter = oldSizzle.filter;
-       Sizzle.selectors = oldSizzle.selectors;
-       Sizzle.matches = oldSizzle.matches;
-})();
+               div = null; // release memory in IE
+       })();
+}
 
-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+(function(){
        var div = document.createElement("div");
+
        div.innerHTML = "<div class='test e'></div><div class='test'></div>";
 
        // Opera can't find a second classname (in 9.6)
-       if ( div.getElementsByClassName("e").length === 0 )
+       // Also, make sure that getElementsByClassName actually exists
+       if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
                return;
+       }
 
        // Safari caches class attributes, doesn't catch changes (in 3.2)
        div.lastChild.className = "e";
 
-       if ( div.getElementsByClassName("e").length === 1 )
+       if ( div.getElementsByClassName("e").length === 1 ) {
                return;
-
+       }
+       
        Expr.order.splice(1, 0, "CLASS");
        Expr.find.CLASS = function(match, context, isXML) {
                if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                        return context.getElementsByClassName(match[1]);
                }
        };
+
+       div = null; // release memory in IE
 })();
 
 function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-       var sibDir = dir == "previousSibling" && !isXML;
        for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                var elem = checkSet[i];
                if ( elem ) {
-                       if ( sibDir && elem.nodeType === 1 ){
-                               elem.sizcache = doneName;
-                               elem.sizset = i;
-                       }
                        elem = elem[dir];
                        var match = false;
 
@@ -2273,7 +3588,7 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                        elem.sizset = i;
                                }
 
-                               if ( elem.nodeName === cur ) {
+                               if ( elem.nodeName.toLowerCase() === cur ) {
                                        match = elem;
                                        break;
                                }
@@ -2287,14 +3602,9 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
 }
 
 function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-       var sibDir = dir == "previousSibling" && !isXML;
        for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                var elem = checkSet[i];
                if ( elem ) {
-                       if ( sibDir && elem.nodeType === 1 ) {
-                               elem.sizcache = doneName;
-                               elem.sizset = i;
-                       }
                        elem = elem[dir];
                        var match = false;
 
@@ -2329,905 +3639,1157 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
        }
 }
 
-var contains = document.compareDocumentPosition ?  function(a, b){
-       return a.compareDocumentPosition(b) & 16;
-} : function(a, b){
-       return a !== b && (a.contains ? a.contains(b) : true);
-};
+var contains = document.compareDocumentPosition ? function(a, b){
+       return !!(a.compareDocumentPosition(b) & 16);
+} : function(a, b){
+       return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833) 
+       var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function(selector, context){
+       var tmpSet = [], later = "", match,
+               root = context.nodeType ? [context] : context;
+
+       // Position selectors must be done after the filter
+       // And so must :not(positional) so we move all PSEUDOs to the end
+       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+               later += match[0];
+               selector = selector.replace( Expr.match.PSEUDO, "" );
+       }
+
+       selector = Expr.relative[selector] ? selector + "*" : selector;
+
+       for ( var i = 0, l = root.length; i < l; i++ ) {
+               Sizzle( selector, root[i], tmpSet );
+       }
+
+       return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = getText;
+jQuery.isXMLDoc = isXML;
+jQuery.contains = contains;
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+var runtil = /Until$/,
+       rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+       // Note: This RegExp should be improved, or likely pulled from Sizzle
+       rmultiselector = /,/,
+       slice = Array.prototype.slice;
+
+// Implement the identical functionality for filter and not
+var winnow = function( elements, qualifier, keep ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       return !!qualifier.call( elem, i, elem ) === keep;
+               });
+
+       } else if ( qualifier.nodeType ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       return (elem === qualifier) === keep;
+               });
+
+       } else if ( typeof qualifier === "string" ) {
+               var filtered = jQuery.grep(elements, function( elem ) {
+                       return elem.nodeType === 1;
+               });
+
+               if ( isSimple.test( qualifier ) ) {
+                       return jQuery.filter(qualifier, filtered, !keep);
+               } else {
+                       qualifier = jQuery.filter( qualifier, filtered );
+               }
+       }
+
+       return jQuery.grep(elements, function( elem, i ) {
+               return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+       });
+};
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var ret = this.pushStack( "", "find", selector ), length = 0;
+
+               for ( var i = 0, l = this.length; i < l; i++ ) {
+                       length = ret.length;
+                       jQuery.find( selector, this[i], ret );
+
+                       if ( i > 0 ) {
+                               // Make sure that the results are unique
+                               for ( var n = length; n < ret.length; n++ ) {
+                                       for ( var r = 0; r < length; r++ ) {
+                                               if ( ret[r] === ret[n] ) {
+                                                       ret.splice(n--, 1);
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return ret;
+       },
+
+       has: function( target ) {
+               var targets = jQuery( target );
+               return this.filter(function() {
+                       for ( var i = 0, l = targets.length; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector, false), "not", selector);
+       },
+
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector, true), "filter", selector );
+       },
+       
+       is: function( selector ) {
+               return !!selector && jQuery.filter( selector, this ).length > 0;
+       },
+
+       closest: function( selectors, context ) {
+               if ( jQuery.isArray( selectors ) ) {
+                       var ret = [], cur = this[0], match, matches = {}, selector;
+
+                       if ( cur && selectors.length ) {
+                               for ( var i = 0, l = selectors.length; i < l; i++ ) {
+                                       selector = selectors[i];
+
+                                       if ( !matches[selector] ) {
+                                               matches[selector] = jQuery.expr.match.POS.test( selector ) ? 
+                                                       jQuery( selector, context || this.context ) :
+                                                       selector;
+                                       }
+                               }
+
+                               while ( cur && cur.ownerDocument && cur !== context ) {
+                                       for ( selector in matches ) {
+                                               match = matches[selector];
+
+                                               if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+                                                       ret.push({ selector: selector, elem: cur });
+                                                       delete matches[selector];
+                                               }
+                                       }
+                                       cur = cur.parentNode;
+                               }
+                       }
+
+                       return ret;
+               }
+
+               var pos = jQuery.expr.match.POS.test( selectors ) ? 
+                       jQuery( selectors, context || this.context ) : null;
+
+               return this.map(function( i, cur ) {
+                       while ( cur && cur.ownerDocument && cur !== context ) {
+                               if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
+                                       return cur;
+                               }
+                               cur = cur.parentNode;
+                       }
+                       return null;
+               });
+       },
+       
+       // Determine the position of an element within
+       // the matched set of elements
+       index: function( elem ) {
+               if ( !elem || typeof elem === "string" ) {
+                       return jQuery.inArray( this[0],
+                               // If it receives a string, the selector is used
+                               // If it receives nothing, the siblings are used
+                               elem ? jQuery( elem ) : this.parent().children() );
+               }
+               // Locate the position of the desired element
+               return jQuery.inArray(
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[0] : elem, this );
+       },
+
+       add: function( selector, context ) {
+               var set = typeof selector === "string" ?
+                               jQuery( selector, context || this.context ) :
+                               jQuery.makeArray( selector ),
+                       all = jQuery.merge( this.get(), set );
+
+               return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+                       all :
+                       jQuery.unique( all ) );
+       },
+
+       andSelf: function() {
+               return this.add( this.prevObject );
+       }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+       return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return jQuery.nth( elem, 2, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return jQuery.nth( elem, 2, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( elem.parentNode.firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return jQuery.nodeName( elem, "iframe" ) ?
+                       elem.contentDocument || elem.contentWindow.document :
+                       jQuery.makeArray( elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var ret = jQuery.map( this, fn, until );
+               
+               if ( !runtil.test( name ) ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       ret = jQuery.filter( selector, ret );
+               }
+
+               ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+               if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+                       ret = ret.reverse();
+               }
+
+               return this.pushStack( ret, name, slice.call(arguments).join(",") );
+       };
+});
+
+jQuery.extend({
+       filter: function( expr, elems, not ) {
+               if ( not ) {
+                       expr = ":not(" + expr + ")";
+               }
+
+               return jQuery.find.matches(expr, elems);
+       },
+       
+       dir: function( elem, dir, until ) {
+               var matched = [], cur = elem[dir];
+               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+                       if ( cur.nodeType === 1 ) {
+                               matched.push( cur );
+                       }
+                       cur = cur[dir];
+               }
+               return matched;
+       },
+
+       nth: function( cur, result, dir, elem ) {
+               result = result || 1;
+               var num = 0;
 
-var isXML = function(elem){
-       return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
-               !!elem.ownerDocument && isXML( elem.ownerDocument );
-};
+               for ( ; cur; cur = cur[dir] ) {
+                       if ( cur.nodeType === 1 && ++num === result ) {
+                               break;
+                       }
+               }
 
-var posProcess = function(selector, context){
-       var tmpSet = [], later = "", match,
-               root = context.nodeType ? [context] : context;
+               return cur;
+       },
 
-       // Position selectors must be done after the filter
-       // And so must :not(positional) so we move all PSEUDOs to the end
-       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
-               later += match[0];
-               selector = selector.replace( Expr.match.PSEUDO, "" );
-       }
+       sibling: function( n, elem ) {
+               var r = [];
 
-       selector = Expr.relative[selector] ? selector + "*" : selector;
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               r.push( n );
+                       }
+               }
 
-       for ( var i = 0, l = root.length; i < l; i++ ) {
-               Sizzle( selector, root[i], tmpSet );
+               return r;
        }
+});
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+       rleadingWhitespace = /^\s+/,
+       rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
+       rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
+       rtagName = /<([\w:]+)/,
+       rtbody = /<tbody/i,
+       rhtml = /<|&#?\w+;/,
+       rnocache = /<script|<object|<embed|<option|<style/i,
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,  // checked="checked" or checked (html5)
+       fcloseTag = function( all, front, tag ) {
+               return rselfClosing.test( tag ) ?
+                       all :
+                       front + "></" + tag + ">";
+       },
+       wrapMap = {
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+               legend: [ 1, "<fieldset>", "</fieldset>" ],
+               thead: [ 1, "<table>", "</table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+               col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+               area: [ 1, "<map>", "</map>" ],
+               _default: [ 0, "", "" ]
+       };
 
-       return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.filter = Sizzle.filter;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-
-Sizzle.selectors.filters.hidden = function(elem){
-       return elem.offsetWidth === 0 || elem.offsetHeight === 0;
-};
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
 
-Sizzle.selectors.filters.visible = function(elem){
-       return elem.offsetWidth > 0 || elem.offsetHeight > 0;
-};
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+       wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
 
-Sizzle.selectors.filters.animated = function(elem){
-       return jQuery.grep(jQuery.timers, function(fn){
-               return elem === fn.elem;
-       }).length;
-};
+jQuery.fn.extend({
+       text: function( text ) {
+               if ( jQuery.isFunction(text) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.text( text.call(this, i, self.text()) );
+                       });
+               }
 
-jQuery.multiFilter = function( expr, elems, not ) {
-       if ( not ) {
-               expr = ":not(" + expr + ")";
-       }
+               if ( typeof text !== "object" && text !== undefined ) {
+                       return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+               }
 
-       return Sizzle.matches(expr, elems);
-};
+               return jQuery.text( this );
+       },
 
-jQuery.dir = function( elem, dir ){
-       var matched = [], cur = elem[dir];
-       while ( cur && cur != document ) {
-               if ( cur.nodeType == 1 )
-                       matched.push( cur );
-               cur = cur[dir];
-       }
-       return matched;
-};
+       wrapAll: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapAll( html.call(this, i) );
+                       });
+               }
 
-jQuery.nth = function(cur, result, dir, elem){
-       result = result || 1;
-       var num = 0;
+               if ( this[0] ) {
+                       // The elements to wrap the target around
+                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
 
-       for ( ; cur; cur = cur[dir] )
-               if ( cur.nodeType == 1 && ++num == result )
-                       break;
+                       if ( this[0].parentNode ) {
+                               wrap.insertBefore( this[0] );
+                       }
 
-       return cur;
-};
+                       wrap.map(function() {
+                               var elem = this;
 
-jQuery.sibling = function(n, elem){
-       var r = [];
+                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+                                       elem = elem.firstChild;
+                               }
 
-       for ( ; n; n = n.nextSibling ) {
-               if ( n.nodeType == 1 && n != elem )
-                       r.push( n );
-       }
+                               return elem;
+                       }).append(this);
+               }
 
-       return r;
-};
+               return this;
+       },
 
-return;
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapInner( html.call(this, i) );
+                       });
+               }
 
-window.Sizzle = Sizzle;
+               return this.each(function() {
+                       var self = jQuery( this ), contents = self.contents();
 
-})();
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
 
-       // Bind an event to an element
-       // Original by Dean Edwards
-       add: function(elem, types, handler, data) {
-               if ( elem.nodeType == 3 || elem.nodeType == 8 )
-                       return;
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
 
-               // For whatever reason, IE has trouble passing the window object
-               // around, causing it to be cloned in the process
-               if ( elem.setInterval && elem != window )
-                       elem = window;
+       wrap: function( html ) {
+               return this.each(function() {
+                       jQuery( this ).wrapAll( html );
+               });
+       },
 
-               // Make sure that the function being executed has a unique ID
-               if ( !handler.guid )
-                       handler.guid = this.guid++;
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       },
 
-               // if data is passed, bind to handler
-               if ( data !== undefined ) {
-                       // Create temporary function pointer to original handler
-                       var fn = handler;
+       append: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.appendChild( elem );
+                       }
+               });
+       },
 
-                       // Create unique handler function, wrapped around original handler
-                       handler = this.proxy( fn );
+       prepend: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.insertBefore( elem, this.firstChild );
+                       }
+               });
+       },
 
-                       // Store data in unique handler
-                       handler.data = data;
+       before: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this );
+                       });
+               } else if ( arguments.length ) {
+                       var set = jQuery(arguments[0]);
+                       set.push.apply( set, this.toArray() );
+                       return this.pushStack( set, "before", arguments );
                }
+       },
 
-               // Init the element's event structure
-               var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
-                       handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
-                               // Handle the second event of a trigger and when
-                               // an event is called after a page has unloaded
-                               return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
-                                       jQuery.event.handle.apply(arguments.callee.elem, arguments) :
-                                       undefined;
+       after: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
                        });
-               // Add elem as a property of the handle function
-               // This is to prevent a memory leak with non-native
-               // event in IE.
-               handle.elem = elem;
-
-               // Handle multiple events separated by a space
-               // jQuery(...).bind("mouseover mouseout", fn);
-               jQuery.each(types.split(/\s+/), function(index, type) {
-                       // Namespaced event handlers
-                       var namespaces = type.split(".");
-                       type = namespaces.shift();
-                       handler.type = namespaces.slice().sort().join(".");
+               } else if ( arguments.length ) {
+                       var set = this.pushStack( this, "after", arguments );
+                       set.push.apply( set, jQuery(arguments[0]).toArray() );
+                       return set;
+               }
+       },
+       
+       // keepData is for internal use only--do not document
+       remove: function( selector, keepData ) {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+                               if ( !keepData && elem.nodeType === 1 ) {
+                                       jQuery.cleanData( elem.getElementsByTagName("*") );
+                                       jQuery.cleanData( [ elem ] );
+                               }
 
-                       // Get the current list of functions bound to this event
-                       var handlers = events[type];
-                       
-                       if ( jQuery.event.specialAll[type] )
-                               jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+                               if ( elem.parentNode ) {
+                                        elem.parentNode.removeChild( elem );
+                               }
+                       }
+               }
+               
+               return this;
+       },
 
-                       // Init the event handler queue
-                       if (!handlers) {
-                               handlers = events[type] = {};
+       empty: function() {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       // Remove element nodes and prevent memory leaks
+                       if ( elem.nodeType === 1 ) {
+                               jQuery.cleanData( elem.getElementsByTagName("*") );
+                       }
 
-                               // Check for a special event handler
-                               // Only use addEventListener/attachEvent if the special
-                               // events handler returns false
-                               if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
-                                       // Bind the global event handler to the element
-                                       if (elem.addEventListener)
-                                               elem.addEventListener(type, handle, false);
-                                       else if (elem.attachEvent)
-                                               elem.attachEvent("on" + type, handle);
-                               }
+                       // Remove any remaining nodes
+                       while ( elem.firstChild ) {
+                               elem.removeChild( elem.firstChild );
                        }
+               }
+               
+               return this;
+       },
 
-                       // Add the function to the element's handler list
-                       handlers[handler.guid] = handler;
+       clone: function( events ) {
+               // Do the clone
+               var ret = this.map(function() {
+                       if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+                               // IE copies events bound via attachEvent when
+                               // using cloneNode. Calling detachEvent on the
+                               // clone will also remove the events from the orignal
+                               // In order to get around this, we use innerHTML.
+                               // Unfortunately, this means some modifications to
+                               // attributes in IE that are actually only stored
+                               // as properties will not be copied (such as the
+                               // the name attribute on an input).
+                               var html = this.outerHTML, ownerDocument = this.ownerDocument;
+                               if ( !html ) {
+                                       var div = ownerDocument.createElement("div");
+                                       div.appendChild( this.cloneNode(true) );
+                                       html = div.innerHTML;
+                               }
 
-                       // Keep track of which events have been used, for global triggering
-                       jQuery.event.global[type] = true;
+                               return jQuery.clean([html.replace(rinlinejQuery, "")
+                                       // Handle the case in IE 8 where action=/test/> self-closes a tag
+                                       .replace(/=([^="'>\s]+\/)>/g, '="$1">')
+                                       .replace(rleadingWhitespace, "")], ownerDocument)[0];
+                       } else {
+                               return this.cloneNode(true);
+                       }
                });
 
-               // Nullify elem to prevent memory leaks in IE
-               elem = null;
+               // Copy the events from the original to the clone
+               if ( events === true ) {
+                       cloneCopyEvent( this, ret );
+                       cloneCopyEvent( this.find("*"), ret.find("*") );
+               }
+
+               // Return the cloned set
+               return ret;
        },
 
-       guid: 1,
-       global: {},
+       html: function( value ) {
+               if ( value === undefined ) {
+                       return this[0] && this[0].nodeType === 1 ?
+                               this[0].innerHTML.replace(rinlinejQuery, "") :
+                               null;
 
-       // Detach an event or set of events from an element
-       remove: function(elem, types, handler) {
-               // don't do events on text and comment nodes
-               if ( elem.nodeType == 3 || elem.nodeType == 8 )
-                       return;
+               // See if we can take a shortcut and just use innerHTML
+               } else if ( typeof value === "string" && !rnocache.test( value ) &&
+                       (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+                       !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
 
-               var events = jQuery.data(elem, "events"), ret, index;
+                       value = value.replace(rxhtmlTag, fcloseTag);
 
-               if ( events ) {
-                       // Unbind all events for the element
-                       if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
-                               for ( var type in events )
-                                       this.remove( elem, type + (types || "") );
-                       else {
-                               // types is actually an event object here
-                               if ( types.type ) {
-                                       handler = types.handler;
-                                       types = types.type;
+                       try {
+                               for ( var i = 0, l = this.length; i < l; i++ ) {
+                                       // Remove element nodes and prevent memory leaks
+                                       if ( this[i].nodeType === 1 ) {
+                                               jQuery.cleanData( this[i].getElementsByTagName("*") );
+                                               this[i].innerHTML = value;
+                                       }
                                }
 
-                               // Handle multiple events seperated by a space
-                               // jQuery(...).unbind("mouseover mouseout", fn);
-                               jQuery.each(types.split(/\s+/), function(index, type){
-                                       // Namespaced event handlers
-                                       var namespaces = type.split(".");
-                                       type = namespaces.shift();
-                                       var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
-                                       if ( events[type] ) {
-                                               // remove the given handler for the given type
-                                               if ( handler )
-                                                       delete events[type][handler.guid];
-
-                                               // remove all handlers for the given type
-                                               else
-                                                       for ( var handle in events[type] )
-                                                               // Handle the removal of namespaced events
-                                                               if ( namespace.test(events[type][handle].type) )
-                                                                       delete events[type][handle];
-                                                                       
-                                               if ( jQuery.event.specialAll[type] )
-                                                       jQuery.event.specialAll[type].teardown.call(elem, namespaces);
-
-                                               // remove generic event handler if no more handlers exist
-                                               for ( ret in events[type] ) break;
-                                               if ( !ret ) {
-                                                       if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
-                                                               if (elem.removeEventListener)
-                                                                       elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
-                                                               else if (elem.detachEvent)
-                                                                       elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
-                                                       }
-                                                       ret = null;
-                                                       delete events[type];
-                                               }
-                                       }
+                       // If using innerHTML throws an exception, use the fallback method
+                       } catch(e) {
+                               this.empty().append( value );
+                       }
+
+               } else if ( jQuery.isFunction( value ) ) {
+                       this.each(function(i){
+                               var self = jQuery(this), old = self.html();
+                               self.empty().append(function(){
+                                       return value.call( this, i, old );
+                               });
+                       });
+
+               } else {
+                       this.empty().append( value );
+               }
+
+               return this;
+       },
+
+       replaceWith: function( value ) {
+               if ( this[0] && this[0].parentNode ) {
+                       // Make sure that the elements are removed from the DOM before they are inserted
+                       // this can help fix replacing a parent with child elements
+                       if ( jQuery.isFunction( value ) ) {
+                               return this.each(function(i) {
+                                       var self = jQuery(this), old = self.html();
+                                       self.replaceWith( value.call( this, i, old ) );
                                });
                        }
 
-                       // Remove the expando if it's no longer used
-                       for ( ret in events ) break;
-                       if ( !ret ) {
-                               var handle = jQuery.data( elem, "handle" );
-                               if ( handle ) handle.elem = null;
-                               jQuery.removeData( elem, "events" );
-                               jQuery.removeData( elem, "handle" );
+                       if ( typeof value !== "string" ) {
+                               value = jQuery(value).detach();
                        }
+
+                       return this.each(function() {
+                               var next = this.nextSibling, parent = this.parentNode;
+
+                               jQuery(this).remove();
+
+                               if ( next ) {
+                                       jQuery(next).before( value );
+                               } else {
+                                       jQuery(parent).append( value );
+                               }
+                       });
+               } else {
+                       return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
                }
        },
 
-       // bubbling is internal
-       trigger: function( event, data, elem, bubbling ) {
-               // Event object or event type
-               var type = event.type || event;
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
 
-               if( !bubbling ){
-                       event = typeof event === "object" ?
-                               // jQuery.Event object
-                               event[expando] ? event :
-                               // Object literal
-                               jQuery.extend( jQuery.Event(type), event ) :
-                               // Just the event type (string)
-                               jQuery.Event(type);
+       domManip: function( args, table, callback ) {
+               var results, first, value = args[0], scripts = [], fragment, parent;
 
-                       if ( type.indexOf("!") >= 0 ) {
-                               event.type = type = type.slice(0, -1);
-                               event.exclusive = true;
-                       }
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+                       return this.each(function() {
+                               jQuery(this).domManip( args, table, callback, true );
+                       });
+               }
 
-                       // Handle a global trigger
-                       if ( !elem ) {
-                               // Don't bubble custom events when global (to avoid too much overhead)
-                               event.stopPropagation();
-                               // Only trigger if we've ever bound an event for it
-                               if ( this.global[type] )
-                                       jQuery.each( jQuery.cache, function(){
-                                               if ( this.events && this.events[type] )
-                                                       jQuery.event.trigger( event, data, this.handle.elem );
-                                       });
-                       }
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               args[0] = value.call(this, i, table ? self.html() : undefined);
+                               self.domManip( args, table, callback );
+                       });
+               }
 
-                       // Handle triggering a single element
+               if ( this[0] ) {
+                       parent = value && value.parentNode;
 
-                       // don't do events on text and comment nodes
-                       if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
-                               return undefined;
+                       // If we're in a fragment, just use that instead of building a new one
+                       if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+                               results = { fragment: parent };
+
+                       } else {
+                               results = buildFragment( args, this, scripts );
+                       }
                        
-                       // Clean up in case it is reused
-                       event.result = undefined;
-                       event.target = elem;
+                       fragment = results.fragment;
                        
-                       // Clone the incoming data, if any
-                       data = jQuery.makeArray(data);
-                       data.unshift( event );
+                       if ( fragment.childNodes.length === 1 ) {
+                               first = fragment = fragment.firstChild;
+                       } else {
+                               first = fragment.firstChild;
+                       }
+
+                       if ( first ) {
+                               table = table && jQuery.nodeName( first, "tr" );
+
+                               for ( var i = 0, l = this.length; i < l; i++ ) {
+                                       callback.call(
+                                               table ?
+                                                       root(this[i], first) :
+                                                       this[i],
+                                               i > 0 || results.cacheable || this.length > 1  ?
+                                                       fragment.cloneNode(true) :
+                                                       fragment
+                                       );
+                               }
+                       }
+
+                       if ( scripts.length ) {
+                               jQuery.each( scripts, evalScript );
+                       }
                }
 
-               event.currentTarget = elem;
+               return this;
 
-               // Trigger the event, it is assumed that "handle" is a function
-               var handle = jQuery.data(elem, "handle");
-               if ( handle )
-                       handle.apply( elem, data );
+               function root( elem, cur ) {
+                       return jQuery.nodeName(elem, "table") ?
+                               (elem.getElementsByTagName("tbody")[0] ||
+                               elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+                               elem;
+               }
+       }
+});
 
-               // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
-               if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
-                       event.result = false;
+function cloneCopyEvent(orig, ret) {
+       var i = 0;
 
-               // Trigger the native events (except for clicks on links)
-               if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
-                       this.triggered = true;
-                       try {
-                               elem[ type ]();
-                       // prevent IE from throwing an error for some hidden elements
-                       } catch (e) {}
+       ret.each(function() {
+               if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+                       return;
                }
 
-               this.triggered = false;
+               var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+
+               if ( events ) {
+                       delete curData.handle;
+                       curData.events = {};
 
-               if ( !event.isPropagationStopped() ) {
-                       var parent = elem.parentNode || elem.ownerDocument;
-                       if ( parent )
-                               jQuery.event.trigger(event, data, parent, true);
+                       for ( var type in events ) {
+                               for ( var handler in events[ type ] ) {
+                                       jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+                               }
+                       }
                }
-       },
+       });
+}
 
-       handle: function(event) {
-               // returned undefined or false
-               var all, handlers;
+function buildFragment( args, nodes, scripts ) {
+       var fragment, cacheable, cacheresults,
+               doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+       // Only cache "small" (1/2 KB) strings that are associated with the main document
+       // Cloning options loses the selected state, so don't cache them
+       // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+       // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+       if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+               !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+               cacheable = true;
+               cacheresults = jQuery.fragments[ args[0] ];
+               if ( cacheresults ) {
+                       if ( cacheresults !== 1 ) {
+                               fragment = cacheresults;
+                       }
+               }
+       }
 
-               event = arguments[0] = jQuery.event.fix( event || window.event );
-               event.currentTarget = this;
-               
-               // Namespaced event handlers
-               var namespaces = event.type.split(".");
-               event.type = namespaces.shift();
+       if ( !fragment ) {
+               fragment = doc.createDocumentFragment();
+               jQuery.clean( args, doc, fragment, scripts );
+       }
 
-               // Cache this now, all = true means, any handler
-               all = !namespaces.length && !event.exclusive;
-               
-               var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+       if ( cacheable ) {
+               jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+       }
 
-               handlers = ( jQuery.data(this, "events") || {} )[event.type];
+       return { fragment: fragment, cacheable: cacheable };
+}
 
-               for ( var j in handlers ) {
-                       var handler = handlers[j];
+jQuery.fragments = {};
 
-                       // Filter the functions by class
-                       if ( all || namespace.test(handler.type) ) {
-                               // Pass in a reference to the handler function itself
-                               // So that we can later remove it
-                               event.handler = handler;
-                               event.data = handler.data;
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var ret = [], insert = jQuery( selector ),
+                       parent = this.length === 1 && this[0].parentNode;
+               
+               if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+                       insert[ original ]( this[0] );
+                       return this;
+                       
+               } else {
+                       for ( var i = 0, l = insert.length; i < l; i++ ) {
+                               var elems = (i > 0 ? this.clone(true) : this).get();
+                               jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+                               ret = ret.concat( elems );
+                       }
+               
+                       return this.pushStack( ret, name, insert.selector );
+               }
+       };
+});
 
-                               var ret = handler.apply(this, arguments);
+jQuery.extend({
+       clean: function( elems, context, fragment, scripts ) {
+               context = context || document;
 
-                               if( ret !== undefined ){
-                                       event.result = ret;
-                                       if ( ret === false ) {
-                                               event.preventDefault();
-                                               event.stopPropagation();
-                                       }
-                               }
+               // !context.createElement fails in IE with an error but returns typeof 'object'
+               if ( typeof context.createElement === "undefined" ) {
+                       context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+               }
 
-                               if( event.isImmediatePropagationStopped() )
-                                       break;
+               var ret = [];
 
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       if ( typeof elem === "number" ) {
+                               elem += "";
                        }
-               }
-       },
 
-       props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+                       if ( !elem ) {
+                               continue;
+                       }
 
-       fix: function(event) {
-               if ( event[expando] )
-                       return event;
+                       // Convert html string into DOM nodes
+                       if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+                               elem = context.createTextNode( elem );
 
-               // store a copy of the original event object
-               // and "clone" to set read-only properties
-               var originalEvent = event;
-               event = jQuery.Event( originalEvent );
+                       } else if ( typeof elem === "string" ) {
+                               // Fix "XHTML"-style tags in all browsers
+                               elem = elem.replace(rxhtmlTag, fcloseTag);
 
-               for ( var i = this.props.length, prop; i; ){
-                       prop = this.props[ --i ];
-                       event[ prop ] = originalEvent[ prop ];
-               }
+                               // Trim whitespace, otherwise indexOf won't work as expected
+                               var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+                                       wrap = wrapMap[ tag ] || wrapMap._default,
+                                       depth = wrap[0],
+                                       div = context.createElement("div");
 
-               // Fix target property, if necessary
-               if ( !event.target )
-                       event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+                               // Go to html and back, then peel off extra wrappers
+                               div.innerHTML = wrap[1] + elem + wrap[2];
 
-               // check if target is a textnode (safari)
-               if ( event.target.nodeType == 3 )
-                       event.target = event.target.parentNode;
+                               // Move to the right depth
+                               while ( depth-- ) {
+                                       div = div.lastChild;
+                               }
 
-               // Add relatedTarget, if necessary
-               if ( !event.relatedTarget && event.fromElement )
-                       event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+                               // Remove IE's autoinserted <tbody> from table fragments
+                               if ( !jQuery.support.tbody ) {
 
-               // Calculate pageX/Y if missing and clientX/Y available
-               if ( event.pageX == null && event.clientX != null ) {
-                       var doc = document.documentElement, body = document.body;
-                       event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
-                       event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
-               }
+                                       // String was a <table>, *may* have spurious <tbody>
+                                       var hasBody = rtbody.test(elem),
+                                               tbody = tag === "table" && !hasBody ?
+                                                       div.firstChild && div.firstChild.childNodes :
 
-               // Add which for key events
-               if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
-                       event.which = event.charCode || event.keyCode;
+                                                       // String was a bare <thead> or <tfoot>
+                                                       wrap[1] === "<table>" && !hasBody ?
+                                                               div.childNodes :
+                                                               [];
 
-               // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
-               if ( !event.metaKey && event.ctrlKey )
-                       event.metaKey = event.ctrlKey;
+                                       for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+                                               if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+                                                       tbody[ j ].parentNode.removeChild( tbody[ j ] );
+                                               }
+                                       }
 
-               // Add which for click: 1 == left; 2 == middle; 3 == right
-               // Note: button is not normalized, so don't use it
-               if ( !event.which && event.button )
-                       event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+                               }
 
-               return event;
-       },
+                               // IE completely kills leading whitespace when innerHTML is used
+                               if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+                                       div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+                               }
 
-       proxy: function( fn, proxy ){
-               proxy = proxy || function(){ return fn.apply(this, arguments); };
-               // Set the guid of unique handler to the same of original handler, so it can be removed
-               proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
-               // So proxy can be declared as an argument
-               return proxy;
-       },
+                               elem = div.childNodes;
+                       }
 
-       special: {
-               ready: {
-                       // Make sure the ready event is setup
-                       setup: bindReady,
-                       teardown: function() {}
+                       if ( elem.nodeType ) {
+                               ret.push( elem );
+                       } else {
+                               ret = jQuery.merge( ret, elem );
+                       }
                }
-       },
-       
-       specialAll: {
-               live: {
-                       setup: function( selector, namespaces ){
-                               jQuery.event.add( this, namespaces[0], liveHandler );
-                       },
-                       teardown:  function( namespaces ){
-                               if ( namespaces.length ) {
-                                       var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
-                                       
-                                       jQuery.each( (jQuery.data(this, "events").live || {}), function(){
-                                               if ( name.test(this.type) )
-                                                       remove++;
-                                       });
-                                       
-                                       if ( remove < 1 )
-                                               jQuery.event.remove( this, namespaces[0], liveHandler );
+
+               if ( fragment ) {
+                       for ( var i = 0; ret[i]; i++ ) {
+                               if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+                                       scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+                               
+                               } else {
+                                       if ( ret[i].nodeType === 1 ) {
+                                               ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+                                       }
+                                       fragment.appendChild( ret[i] );
                                }
                        }
                }
-       }
-};
-
-jQuery.Event = function( src ){
-       // Allow instantiation without the 'new' keyword
-       if( !this.preventDefault )
-               return new jQuery.Event(src);
-       
-       // Event object
-       if( src && src.type ){
-               this.originalEvent = src;
-               this.type = src.type;
-       // Event type
-       }else
-               this.type = src;
 
-       // timeStamp is buggy for some events on Firefox(#3843)
-       // So we won't rely on the native value
-       this.timeStamp = now();
+               return ret;
+       },
        
-       // Mark it as fixed
-       this[expando] = true;
-};
-
-function returnFalse(){
-       return false;
-}
-function returnTrue(){
-       return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-       preventDefault: function() {
-               this.isDefaultPrevented = returnTrue;
+       cleanData: function( elems ) {
+               var data, id, cache = jQuery.cache,
+                       special = jQuery.event.special,
+                       deleteExpando = jQuery.support.deleteExpando;
+               
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       id = elem[ jQuery.expando ];
+                       
+                       if ( id ) {
+                               data = cache[ id ];
+                               
+                               if ( data.events ) {
+                                       for ( var type in data.events ) {
+                                               if ( special[ type ] ) {
+                                                       jQuery.event.remove( elem, type );
 
-               var e = this.originalEvent;
-               if( !e )
-                       return;
-               // if preventDefault exists run it on the original event
-               if (e.preventDefault)
-                       e.preventDefault();
-               // otherwise set the returnValue property of the original event to false (IE)
-               e.returnValue = false;
-       },
-       stopPropagation: function() {
-               this.isPropagationStopped = returnTrue;
+                                               } else {
+                                                       removeEvent( elem, type, data.handle );
+                                               }
+                                       }
+                               }
+                               
+                               if ( deleteExpando ) {
+                                       delete elem[ jQuery.expando ];
 
-               var e = this.originalEvent;
-               if( !e )
-                       return;
-               // if stopPropagation exists run it on the original event
-               if (e.stopPropagation)
-                       e.stopPropagation();
-               // otherwise set the cancelBubble property of the original event to true (IE)
-               e.cancelBubble = true;
-       },
-       stopImmediatePropagation:function(){
-               this.isImmediatePropagationStopped = returnTrue;
-               this.stopPropagation();
-       },
-       isDefaultPrevented: returnFalse,
-       isPropagationStopped: returnFalse,
-       isImmediatePropagationStopped: returnFalse
-};
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event) {
-       // Check if mouse(over|out) are still within the same parent element
-       var parent = event.relatedTarget;
-       // Traverse up the tree
-       while ( parent && parent != this )
-               try { parent = parent.parentNode; }
-               catch(e) { parent = this; }
-       
-       if( parent != this ){
-               // set the correct event type
-               event.type = event.data;
-               // handle event if we actually just moused on to a non sub-element
-               jQuery.event.handle.apply( this, arguments );
-       }
-};
-       
-jQuery.each({ 
-       mouseover: 'mouseenter', 
-       mouseout: 'mouseleave'
-}, function( orig, fix ){
-       jQuery.event.special[ fix ] = {
-               setup: function(){
-                       jQuery.event.add( this, orig, withinElement, fix );
-               },
-               teardown: function(){
-                       jQuery.event.remove( this, orig, withinElement );
+                               } else if ( elem.removeAttribute ) {
+                                       elem.removeAttribute( jQuery.expando );
+                               }
+                               
+                               delete cache[ id ];
+                       }
                }
-       };                         
+       }
 });
+// exclude the following css properties to add px
+var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+       ralpha = /alpha\([^)]*\)/,
+       ropacity = /opacity=([^)]*)/,
+       rfloat = /float/i,
+       rdashAlpha = /-([a-z])/ig,
+       rupper = /([A-Z])/g,
+       rnumpx = /^-?\d+(?:px)?$/i,
+       rnum = /^-?\d/,
+
+       cssShow = { position: "absolute", visibility: "hidden", display:"block" },
+       cssWidth = [ "Left", "Right" ],
+       cssHeight = [ "Top", "Bottom" ],
+
+       // cache check for defaultView.getComputedStyle
+       getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+       // normalize float css property
+       styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
 
-jQuery.fn.extend({
-       bind: function( type, data, fn ) {
-               return type == "unload" ? this.one(type, data, fn) : this.each(function(){
-                       jQuery.event.add( this, type, fn || data, fn && data );
-               });
-       },
-
-       one: function( type, data, fn ) {
-               var one = jQuery.event.proxy( fn || data, function(event) {
-                       jQuery(this).unbind(event, one);
-                       return (fn || data).apply( this, arguments );
-               });
-               return this.each(function(){
-                       jQuery.event.add( this, type, one, fn && data);
-               });
-       },
-
-       unbind: function( type, fn ) {
-               return this.each(function(){
-                       jQuery.event.remove( this, type, fn );
-               });
-       },
-
-       trigger: function( type, data ) {
-               return this.each(function(){
-                       jQuery.event.trigger( type, data, this );
-               });
-       },
+jQuery.fn.css = function( name, value ) {
+       return access( this, name, value, true, function( elem, name, value ) {
+               if ( value === undefined ) {
+                       return jQuery.curCSS( elem, name );
+               }
+               
+               if ( typeof value === "number" && !rexclude.test(name) ) {
+                       value += "px";
+               }
 
-       triggerHandler: function( type, data ) {
-               if( this[0] ){
-                       var event = jQuery.Event(type);
-                       event.preventDefault();
-                       event.stopPropagation();
-                       jQuery.event.trigger( event, data, this[0] );
-                       return event.result;
-               }               
-       },
+               jQuery.style( elem, name, value );
+       });
+};
 
-       toggle: function( fn ) {
-               // Save reference to arguments for access in closure
-               var args = arguments, i = 1;
+jQuery.extend({
+       style: function( elem, name, value ) {
+               // don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return undefined;
+               }
 
-               // link all the functions, so any of them can unbind this click handler
-               while( i < args.length )
-                       jQuery.event.proxy( fn, args[i++] );
+               // ignore negative width and height values #1599
+               if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
+                       value = undefined;
+               }
 
-               return this.click( jQuery.event.proxy( fn, function(event) {
-                       // Figure out which function to execute
-                       this.lastToggle = ( this.lastToggle || 0 ) % i;
+               var style = elem.style || elem, set = value !== undefined;
 
-                       // Make sure that clicks stop
-                       event.preventDefault();
+               // IE uses filters for opacity
+               if ( !jQuery.support.opacity && name === "opacity" ) {
+                       if ( set ) {
+                               // IE has trouble with opacity if it does not have layout
+                               // Force it by setting the zoom level
+                               style.zoom = 1;
 
-                       // and execute the function
-                       return args[ this.lastToggle++ ].apply( this, arguments ) || false;
-               }));
-       },
+                               // Set the alpha filter to set the opacity
+                               var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
+                               var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
+                               style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
+                       }
 
-       hover: function(fnOver, fnOut) {
-               return this.mouseenter(fnOver).mouseleave(fnOut);
-       },
+                       return style.filter && style.filter.indexOf("opacity=") >= 0 ?
+                               (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
+                               "";
+               }
 
-       ready: function(fn) {
-               // Attach the listeners
-               bindReady();
+               // Make sure we're using the right name for getting the float value
+               if ( rfloat.test( name ) ) {
+                       name = styleFloat;
+               }
 
-               // If the DOM is already ready
-               if ( jQuery.isReady )
-                       // Execute the function immediately
-                       fn.call( document, jQuery );
+               name = name.replace(rdashAlpha, fcamelCase);
 
-               // Otherwise, remember the function for later
-               else
-                       // Add the function to the wait list
-                       jQuery.readyList.push( fn );
+               if ( set ) {
+                       style[ name ] = value;
+               }
 
-               return this;
+               return style[ name ];
        },
-       
-       live: function( type, fn ){
-               var proxy = jQuery.event.proxy( fn );
-               proxy.guid += this.selector + type;
 
-               jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+       css: function( elem, name, force, extra ) {
+               if ( name === "width" || name === "height" ) {
+                       var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
 
-               return this;
-       },
-       
-       die: function( type, fn ){
-               jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
-               return this;
-       }
-});
+                       function getWH() {
+                               val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
 
-function liveHandler( event ){
-       var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
-               stop = true,
-               elems = [];
+                               if ( extra === "border" ) {
+                                       return;
+                               }
 
-       jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
-               if ( check.test(fn.type) ) {
-                       var elem = jQuery(event.target).closest(fn.data)[0];
-                       if ( elem )
-                               elems.push({ elem: elem, fn: fn });
-               }
-       });
+                               jQuery.each( which, function() {
+                                       if ( !extra ) {
+                                               val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+                                       }
 
-       elems.sort(function(a,b) {
-               return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
-       });
-       
-       jQuery.each(elems, function(){
-               if ( this.fn.call(this.elem, event, this.fn.data) === false )
-                       return (stop = false);
-       });
+                                       if ( extra === "margin" ) {
+                                               val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+                                       } else {
+                                               val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+                                       }
+                               });
+                       }
 
-       return stop;
-}
+                       if ( elem.offsetWidth !== 0 ) {
+                               getWH();
+                       } else {
+                               jQuery.swap( elem, props, getWH );
+                       }
 
-function liveConvert(type, selector){
-       return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
-}
+                       return Math.max(0, Math.round(val));
+               }
 
-jQuery.extend({
-       isReady: false,
-       readyList: [],
-       // Handle when the DOM is ready
-       ready: function() {
-               // Make sure that the DOM is not already loaded
-               if ( !jQuery.isReady ) {
-                       // Remember that the DOM is ready
-                       jQuery.isReady = true;
+               return jQuery.curCSS( elem, name, force );
+       },
 
-                       // If there are functions bound, to execute
-                       if ( jQuery.readyList ) {
-                               // Execute all of them
-                               jQuery.each( jQuery.readyList, function(){
-                                       this.call( document, jQuery );
-                               });
+       curCSS: function( elem, name, force ) {
+               var ret, style = elem.style, filter;
 
-                               // Reset the list of functions
-                               jQuery.readyList = null;
-                       }
+               // IE uses filters for opacity
+               if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
+                       ret = ropacity.test(elem.currentStyle.filter || "") ?
+                               (parseFloat(RegExp.$1) / 100) + "" :
+                               "";
 
-                       // Trigger any bound ready events
-                       jQuery(document).triggerHandler("ready");
+                       return ret === "" ?
+                               "1" :
+                               ret;
                }
-       }
-});
 
-var readyBound = false;
+               // Make sure we're using the right name for getting the float value
+               if ( rfloat.test( name ) ) {
+                       name = styleFloat;
+               }
 
-function bindReady(){
-       if ( readyBound ) return;
-       readyBound = true;
+               if ( !force && style && style[ name ] ) {
+                       ret = style[ name ];
 
-       // Mozilla, Opera and webkit nightlies currently support this event
-       if ( document.addEventListener ) {
-               // Use the handy event callback
-               document.addEventListener( "DOMContentLoaded", function(){
-                       document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
-                       jQuery.ready();
-               }, false );
+               } else if ( getComputedStyle ) {
 
-       // If IE event model is used
-       } else if ( document.attachEvent ) {
-               // ensure firing before onload,
-               // maybe late but safe also for iframes
-               document.attachEvent("onreadystatechange", function(){
-                       if ( document.readyState === "complete" ) {
-                               document.detachEvent( "onreadystatechange", arguments.callee );
-                               jQuery.ready();
+                       // Only "float" is needed here
+                       if ( rfloat.test( name ) ) {
+                               name = "float";
                        }
-               });
 
-               // If IE and not an iframe
-               // continually check to see if the document is ready
-               if ( document.documentElement.doScroll && window == window.top ) (function(){
-                       if ( jQuery.isReady ) return;
+                       name = name.replace( rupper, "-$1" ).toLowerCase();
 
-                       try {
-                               // If IE is used, use the trick by Diego Perini
-                               // http://javascript.nwbox.com/IEContentLoaded/
-                               document.documentElement.doScroll("left");
-                       } catch( error ) {
-                               setTimeout( arguments.callee, 0 );
-                               return;
-                       }
+                       var defaultView = elem.ownerDocument.defaultView;
 
-                       // and execute any waiting functions
-                       jQuery.ready();
-               })();
-       }
+                       if ( !defaultView ) {
+                               return null;
+                       }
 
-       // A fallback to window.onload, that will always work
-       jQuery.event.add( window, "load", jQuery.ready );
-}
+                       var computedStyle = defaultView.getComputedStyle( elem, null );
 
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
-       "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
-       "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+                       if ( computedStyle ) {
+                               ret = computedStyle.getPropertyValue( name );
+                       }
 
-       // Handle event binding
-       jQuery.fn[name] = function(fn){
-               return fn ? this.bind(name, fn) : this.trigger(name);
-       };
-});
+                       // We should always get a number back from opacity
+                       if ( name === "opacity" && ret === "" ) {
+                               ret = "1";
+                       }
 
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery( window ).bind( 'unload', function(){ 
-       for ( var id in jQuery.cache )
-               // Skip the window
-               if ( id != 1 && jQuery.cache[ id ].handle )
-                       jQuery.event.remove( jQuery.cache[ id ].handle.elem );
-}); 
-(function(){
+               } else if ( elem.currentStyle ) {
+                       var camelCase = name.replace(rdashAlpha, fcamelCase);
 
-       jQuery.support = {};
+                       ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
 
-       var root = document.documentElement,
-               script = document.createElement("script"),
-               div = document.createElement("div"),
-               id = "script" + (new Date).getTime();
+                       // From the awesome hack by Dean Edwards
+                       // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
 
-       div.style.display = "none";
-       div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+                       // If we're not dealing with a regular pixel number
+                       // but a number that has a weird ending, we need to convert it to pixels
+                       if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+                               // Remember the original values
+                               var left = style.left, rsLeft = elem.runtimeStyle.left;
 
-       var all = div.getElementsByTagName("*"),
-               a = div.getElementsByTagName("a")[0];
+                               // Put in the new values to get a computed value out
+                               elem.runtimeStyle.left = elem.currentStyle.left;
+                               style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
+                               ret = style.pixelLeft + "px";
 
-       // Can't get basic test support
-       if ( !all || !all.length || !a ) {
-               return;
-       }
+                               // Revert the changed values
+                               style.left = left;
+                               elem.runtimeStyle.left = rsLeft;
+                       }
+               }
 
-       jQuery.support = {
-               // IE strips leading whitespace when .innerHTML is used
-               leadingWhitespace: div.firstChild.nodeType == 3,
-               
-               // Make sure that tbody elements aren't automatically inserted
-               // IE will insert them into empty tables
-               tbody: !div.getElementsByTagName("tbody").length,
-               
-               // Make sure that you can get all elements in an <object> element
-               // IE 7 always returns no results
-               objectAll: !!div.getElementsByTagName("object")[0]
-                       .getElementsByTagName("*").length,
-               
-               // Make sure that link elements get serialized correctly by innerHTML
-               // This requires a wrapper element in IE
-               htmlSerialize: !!div.getElementsByTagName("link").length,
-               
-               // Get the style information from getAttribute
-               // (IE uses .cssText insted)
-               style: /red/.test( a.getAttribute("style") ),
-               
-               // Make sure that URLs aren't manipulated
-               // (IE normalizes it by default)
-               hrefNormalized: a.getAttribute("href") === "/a",
-               
-               // Make sure that element opacity exists
-               // (IE uses filter instead)
-               opacity: a.style.opacity === "0.5",
-               
-               // Verify style float existence
-               // (IE uses styleFloat instead of cssFloat)
-               cssFloat: !!a.style.cssFloat,
+               return ret;
+       },
 
-               // Will be defined later
-               scriptEval: false,
-               noCloneEvent: true,
-               boxModel: null
-       };
-       
-       script.type = "text/javascript";
-       try {
-               script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
-       } catch(e){}
+       // A method for quickly swapping in/out CSS properties to get correct calculations
+       swap: function( elem, options, callback ) {
+               var old = {};
 
-       root.insertBefore( script, root.firstChild );
-       
-       // Make sure that the execution of code works by injecting a script
-       // tag with appendChild/createTextNode
-       // (IE doesn't support this, fails, and uses .text instead)
-       if ( window[ id ] ) {
-               jQuery.support.scriptEval = true;
-               delete window[ id ];
-       }
+               // Remember the old values, and insert the new ones
+               for ( var name in options ) {
+                       old[ name ] = elem.style[ name ];
+                       elem.style[ name ] = options[ name ];
+               }
 
-       root.removeChild( script );
+               callback.call( elem );
 
-       if ( div.attachEvent && div.fireEvent ) {
-               div.attachEvent("onclick", function(){
-                       // Cloning a node shouldn't copy over any
-                       // bound event handlers (IE does this)
-                       jQuery.support.noCloneEvent = false;
-                       div.detachEvent("onclick", arguments.callee);
-               });
-               div.cloneNode(true).fireEvent("onclick");
+               // Revert the old values
+               for ( var name in options ) {
+                       elem.style[ name ] = old[ name ];
+               }
        }
+});
 
-       // Figure out if the W3C box model works as expected
-       // document.body must exist before we can do this
-       jQuery(function(){
-               var div = document.createElement("div");
-               div.style.width = div.style.paddingLeft = "1px";
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.hidden = function( elem ) {
+               var width = elem.offsetWidth, height = elem.offsetHeight,
+                       skip = elem.nodeName.toLowerCase() === "tr";
 
-               document.body.appendChild( div );
-               jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
-               document.body.removeChild( div ).style.display = 'none';
-       });
-})();
+               return width === 0 && height === 0 && !skip ?
+                       true :
+                       width > 0 && height > 0 && !skip ?
+                               false :
+                               jQuery.curCSS(elem, "display") === "none";
+       };
 
-var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+       jQuery.expr.filters.visible = function( elem ) {
+               return !jQuery.expr.filters.hidden( elem );
+       };
+}
+var jsc = now(),
+       rscript = /<script(.|\s)*?\/script>/gi,
+       rselectTextarea = /select|textarea/i,
+       rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
+       jsre = /=\?(&|$)/,
+       rquery = /\?/,
+       rts = /(\?|&)_=.*?(&|$)/,
+       rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+       r20 = /%20/g,
+
+       // Keep a copy of the old load method
+       _load = jQuery.fn.load;
 
-jQuery.props = {
-       "for": "htmlFor",
-       "class": "className",
-       "float": styleFloat,
-       cssFloat: styleFloat,
-       styleFloat: styleFloat,
-       readonly: "readOnly",
-       maxlength: "maxLength",
-       cellspacing: "cellSpacing",
-       rowspan: "rowSpan",
-       tabindex: "tabIndex"
-};
 jQuery.fn.extend({
-       // Keep a copy of the old load
-       _load: jQuery.fn.load,
-
        load: function( url, params, callback ) {
-               if ( typeof url !== "string" )
-                       return this._load( url );
+               if ( typeof url !== "string" ) {
+                       return _load.call( this, url );
+
+               // Don't do a request if no elements are being requested
+               } else if ( !this.length ) {
+                       return this;
+               }
 
                var off = url.indexOf(" ");
                if ( off >= 0 ) {
@@ -3239,7 +4801,7 @@ jQuery.fn.extend({
                var type = "GET";
 
                // If the second parameter was provided
-               if ( params )
+               if ( params ) {
                        // If it's a function
                        if ( jQuery.isFunction( params ) ) {
                                // We assume that it's the callback
@@ -3247,10 +4809,11 @@ jQuery.fn.extend({
                                params = null;
 
                        // Otherwise, build a param string
-                       } else if( typeof params === "object" ) {
-                               params = jQuery.param( params );
+                       } else if ( typeof params === "object" ) {
+                               params = jQuery.param( params, jQuery.ajaxSettings.traditional );
                                type = "POST";
                        }
+               }
 
                var self = this;
 
@@ -3260,27 +4823,30 @@ jQuery.fn.extend({
                        type: type,
                        dataType: "html",
                        data: params,
-                       complete: function(res, status){
+                       complete: function( res, status ) {
                                // If successful, inject the HTML into all the matched elements
-                               if ( status == "success" || status == "notmodified" )
+                               if ( status === "success" || status === "notmodified" ) {
                                        // See if a selector was specified
                                        self.html( selector ?
                                                // Create a dummy div to hold the results
-                                               jQuery("<div/>")
+                                               jQuery("<div />")
                                                        // inject the contents of the document in, removing the scripts
                                                        // to avoid any 'Permission Denied' errors in IE
-                                                       .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+                                                       .append(res.responseText.replace(rscript, ""))
 
                                                        // Locate the specified elements
                                                        .find(selector) :
 
                                                // If not, just inject the full result
                                                res.responseText );
+                               }
 
-                               if( callback )
+                               if ( callback ) {
                                        self.each( callback, [res.responseText, status, res] );
+                               }
                        }
                });
+
                return this;
        },
 
@@ -3288,40 +4854,41 @@ jQuery.fn.extend({
                return jQuery.param(this.serializeArray());
        },
        serializeArray: function() {
-               return this.map(function(){
+               return this.map(function() {
                        return this.elements ? jQuery.makeArray(this.elements) : this;
                })
-               .filter(function(){
+               .filter(function() {
                        return this.name && !this.disabled &&
-                               (this.checked || /select|textarea/i.test(this.nodeName) ||
-                                       /text|hidden|password|search/i.test(this.type));
+                               (this.checked || rselectTextarea.test(this.nodeName) ||
+                                       rinput.test(this.type));
                })
-               .map(function(i, elem){
+               .map(function( i, elem ) {
                        var val = jQuery(this).val();
-                       return val == null ? null :
+
+                       return val == null ?
+                               null :
                                jQuery.isArray(val) ?
-                                       jQuery.map( val, function(val, i){
-                                               return {name: elem.name, value: val};
+                                       jQuery.map( val, function( val, i ) {
+                                               return { name: elem.name, value: val };
                                        }) :
-                                       {name: elem.name, value: val};
+                                       { name: elem.name, value: val };
                }).get();
        }
 });
 
 // Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
-       jQuery.fn[o] = function(f){
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+       jQuery.fn[o] = function( f ) {
                return this.bind(o, f);
        };
 });
 
-var jsc = now();
-
 jQuery.extend({
-  
+
        get: function( url, data, callback, type ) {
-               // shift arguments if data argument was ommited
+               // shift arguments if data argument was omited
                if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
                        callback = data;
                        data = null;
                }
@@ -3344,7 +4911,9 @@ jQuery.extend({
        },
 
        post: function( url, data, callback, type ) {
+               // shift arguments if data argument was omited
                if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
                        callback = data;
                        data = {};
                }
@@ -3374,13 +4943,21 @@ jQuery.extend({
                data: null,
                username: null,
                password: null,
+               traditional: false,
                */
                // Create the request object; Microsoft failed to properly
-               // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+               // implement the XMLHttpRequest in IE7 (can't request local files),
+               // so we use the ActiveXObject when it is available
                // This function can be overriden by calling jQuery.ajaxSetup
-               xhr:function(){
-                       return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
-               },
+               xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
+                       function() {
+                               return new window.XMLHttpRequest();
+                       } :
+                       function() {
+                               try {
+                                       return new window.ActiveXObject("Microsoft.XMLHTTP");
+                               } catch(e) {}
+                       },
                accepts: {
                        xml: "application/xml, text/xml",
                        html: "text/html",
@@ -3393,36 +4970,41 @@ jQuery.extend({
 
        // Last-Modified header cache for next request
        lastModified: {},
+       etag: {},
 
-       ajax: function( s ) {
-               // Extend the settings, but re-extend 's' so that it can be
-               // checked again later (in the test suite, specifically)
-               s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
-               var jsonp, jsre = /=\?(&|$)/g, status, data,
+       ajax: function( origSettings ) {
+               var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
+               
+               var jsonp, status, data,
+                       callbackContext = origSettings && origSettings.context || s,
                        type = s.type.toUpperCase();
 
                // convert data if not already a string
-               if ( s.data && s.processData && typeof s.data !== "string" )
-                       s.data = jQuery.param(s.data);
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
 
                // Handle JSONP Parameter Callbacks
-               if ( s.dataType == "jsonp" ) {
-                       if ( type == "GET" ) {
-                               if ( !s.url.match(jsre) )
-                                       s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
-                       } else if ( !s.data || !s.data.match(jsre) )
+               if ( s.dataType === "jsonp" ) {
+                       if ( type === "GET" ) {
+                               if ( !jsre.test( s.url ) ) {
+                                       s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+                               }
+                       } else if ( !s.data || !jsre.test(s.data) ) {
                                s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+                       }
                        s.dataType = "json";
                }
 
                // Build temporary JSONP function
-               if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
-                       jsonp = "jsonp" + jsc++;
+               if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+                       jsonp = s.jsonpCallback || ("jsonp" + jsc++);
 
                        // Replace the =? sequence both in the query string and the data
-                       if ( s.data )
+                       if ( s.data ) {
                                s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+                       }
+
                        s.url = s.url.replace(jsre, "=" + jsonp + "$1");
 
                        // We need to make sure
@@ -3430,75 +5012,85 @@ jQuery.extend({
                        s.dataType = "script";
 
                        // Handle JSONP-style loading
-                       window[ jsonp ] = function(tmp){
+                       window[ jsonp ] = window[ jsonp ] || function( tmp ) {
                                data = tmp;
                                success();
                                complete();
                                // Garbage collect
                                window[ jsonp ] = undefined;
-                               try{ delete window[ jsonp ]; } catch(e){}
-                               if ( head )
+
+                               try {
+                                       delete window[ jsonp ];
+                               } catch(e) {}
+
+                               if ( head ) {
                                        head.removeChild( script );
+                               }
                        };
                }
 
-               if ( s.dataType == "script" && s.cache == null )
+               if ( s.dataType === "script" && s.cache === null ) {
                        s.cache = false;
+               }
 
-               if ( s.cache === false && type == "GET" ) {
+               if ( s.cache === false && type === "GET" ) {
                        var ts = now();
+
                        // try replacing _= if it is there
-                       var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+                       var ret = s.url.replace(rts, "$1_=" + ts + "$2");
+
                        // if nothing was replaced, add timestamp to the end
-                       s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+                       s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
                }
 
                // If data is available, append data to url for get requests
-               if ( s.data && type == "GET" ) {
-                       s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
-                       // IE likes to send both get and post data, prevent this
-                       s.data = null;
+               if ( s.data && type === "GET" ) {
+                       s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
                }
 
                // Watch for a new set of requests
-               if ( s.global && ! jQuery.active++ )
+               if ( s.global && ! jQuery.active++ ) {
                        jQuery.event.trigger( "ajaxStart" );
+               }
 
                // Matches an absolute URL, and saves the domain
-               var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+               var parts = rurl.exec( s.url ),
+                       remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
 
                // If we're requesting a remote document
                // and trying to load JSON or Script with a GET
-               if ( s.dataType == "script" && type == "GET" && parts
-                       && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
-
-                       var head = document.getElementsByTagName("head")[0];
+               if ( s.dataType === "script" && type === "GET" && remote ) {
+                       var head = document.getElementsByTagName("head")[0] || document.documentElement;
                        var script = document.createElement("script");
                        script.src = s.url;
-                       if (s.scriptCharset)
+                       if ( s.scriptCharset ) {
                                script.charset = s.scriptCharset;
+                       }
 
                        // Handle Script loading
                        if ( !jsonp ) {
                                var done = false;
 
                                // Attach handlers for all browsers
-                               script.onload = script.onreadystatechange = function(){
+                               script.onload = script.onreadystatechange = function() {
                                        if ( !done && (!this.readyState ||
-                                                       this.readyState == "loaded" || this.readyState == "complete") ) {
+                                                       this.readyState === "loaded" || this.readyState === "complete") ) {
                                                done = true;
                                                success();
                                                complete();
 
                                                // Handle memory leak in IE
                                                script.onload = script.onreadystatechange = null;
-                                               head.removeChild( script );
+                                               if ( head && script.parentNode ) {
+                                                       head.removeChild( script );
+                                               }
                                        }
                                };
                        }
 
-                       head.appendChild(script);
+                       // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+                       // This arises when a base node is used (#2709 and #4378).
+                       head.insertBefore( script, head.firstChild );
 
                        // We handle everything using the script element injection
                        return undefined;
@@ -3509,158 +5101,197 @@ jQuery.extend({
                // Create the request object
                var xhr = s.xhr();
 
+               if ( !xhr ) {
+                       return;
+               }
+
                // Open the socket
                // Passing null username, generates a login popup on Opera (#2865)
-               if( s.username )
+               if ( s.username ) {
                        xhr.open(type, s.url, s.async, s.username, s.password);
-               else
+               } else {
                        xhr.open(type, s.url, s.async);
+               }
 
                // Need an extra try/catch for cross domain requests in Firefox 3
                try {
                        // Set the correct header, if data is being sent
-                       if ( s.data )
+                       if ( s.data || origSettings && origSettings.contentType ) {
                                xhr.setRequestHeader("Content-Type", s.contentType);
+                       }
+
+                       // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                       if ( s.ifModified ) {
+                               if ( jQuery.lastModified[s.url] ) {
+                                       xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+                               }
 
-                       // Set the If-Modified-Since header, if ifModified mode.
-                       if ( s.ifModified )
-                               xhr.setRequestHeader("If-Modified-Since",
-                                       jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+                               if ( jQuery.etag[s.url] ) {
+                                       xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+                               }
+                       }
 
                        // Set header so the called script knows that it's an XMLHttpRequest
-                       xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+                       // Only send the header if it's not a remote XHR
+                       if ( !remote ) {
+                               xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+                       }
 
                        // Set the Accepts header for the server, depending on the dataType
                        xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
                                s.accepts[ s.dataType ] + ", */*" :
                                s.accepts._default );
-               } catch(e){}
+               } catch(e) {}
 
                // Allow custom headers/mimetypes and early abort
-               if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+               if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
                        // Handle the global AJAX counter
-                       if ( s.global && ! --jQuery.active )
+                       if ( s.global && ! --jQuery.active ) {
                                jQuery.event.trigger( "ajaxStop" );
+                       }
+
                        // close opended socket
                        xhr.abort();
                        return false;
                }
 
-               if ( s.global )
-                       jQuery.event.trigger("ajaxSend", [xhr, s]);
+               if ( s.global ) {
+                       trigger("ajaxSend", [xhr, s]);
+               }
 
                // Wait for a response to come back
-               var onreadystatechange = function(isTimeout){
-                       // The request was aborted, clear the interval and decrement jQuery.active
-                       if (xhr.readyState == 0) {
-                               if (ival) {
-                                       // clear poll interval
-                                       clearInterval(ival);
-                                       ival = null;
-                                       // Handle the global AJAX counter
-                                       if ( s.global && ! --jQuery.active )
-                                               jQuery.event.trigger( "ajaxStop" );
+               var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+                       // The request was aborted
+                       if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+                               // Opera doesn't call onreadystatechange before this point
+                               // so we simulate the call
+                               if ( !requestDone ) {
+                                       complete();
+                               }
+
+                               requestDone = true;
+                               if ( xhr ) {
+                                       xhr.onreadystatechange = jQuery.noop;
                                }
+
                        // The transfer is complete and the data is available, or the request timed out
-                       } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+                       } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
                                requestDone = true;
+                               xhr.onreadystatechange = jQuery.noop;
 
-                               // clear poll interval
-                               if (ival) {
-                                       clearInterval(ival);
-                                       ival = null;
-                               }
+                               status = isTimeout === "timeout" ?
+                                       "timeout" :
+                                       !jQuery.httpSuccess( xhr ) ?
+                                               "error" :
+                                               s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+                                                       "notmodified" :
+                                                       "success";
 
-                               status = isTimeout == "timeout" ? "timeout" :
-                                       !jQuery.httpSuccess( xhr ) ? "error" :
-                                       s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
-                                       "success";
+                               var errMsg;
 
-                               if ( status == "success" ) {
+                               if ( status === "success" ) {
                                        // Watch for, and catch, XML document parse errors
                                        try {
                                                // process the data (runs the xml through httpData regardless of callback)
                                                data = jQuery.httpData( xhr, s.dataType, s );
-                                       } catch(e) {
+                                       } catch(err) {
                                                status = "parsererror";
+                                               errMsg = err;
                                        }
                                }
 
                                // Make sure that the request was successful or notmodified
-                               if ( status == "success" ) {
-                                       // Cache Last-Modified header, if ifModified mode.
-                                       var modRes;
-                                       try {
-                                               modRes = xhr.getResponseHeader("Last-Modified");
-                                       } catch(e) {} // swallow exception thrown by FF if header is not available
-
-                                       if ( s.ifModified && modRes )
-                                               jQuery.lastModified[s.url] = modRes;
-
+                               if ( status === "success" || status === "notmodified" ) {
                                        // JSONP handles its own success callback
-                                       if ( !jsonp )
+                                       if ( !jsonp ) {
                                                success();
-                               } else
-                                       jQuery.handleError(s, xhr, status);
+                                       }
+                               } else {
+                                       jQuery.handleError(s, xhr, status, errMsg);
+                               }
 
                                // Fire the complete handlers
                                complete();
 
-                               if ( isTimeout )
+                               if ( isTimeout === "timeout" ) {
                                        xhr.abort();
+                               }
 
                                // Stop memory leaks
-                               if ( s.async )
+                               if ( s.async ) {
                                        xhr = null;
+                               }
                        }
                };
 
-               if ( s.async ) {
-                       // don't attach the handler to the request, just poll it instead
-                       var ival = setInterval(onreadystatechange, 13);
+               // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+               // Opera doesn't fire onreadystatechange at all on abort
+               try {
+                       var oldAbort = xhr.abort;
+                       xhr.abort = function() {
+                               if ( xhr ) {
+                                       oldAbort.call( xhr );
+                               }
 
-                       // Timeout checker
-                       if ( s.timeout > 0 )
-                               setTimeout(function(){
-                                       // Check to see if the request is still happening
-                                       if ( xhr && !requestDone )
-                                               onreadystatechange( "timeout" );
-                               }, s.timeout);
+                               onreadystatechange( "abort" );
+                       };
+               } catch(e) { }
+
+               // Timeout checker
+               if ( s.async && s.timeout > 0 ) {
+                       setTimeout(function() {
+                               // Check to see if the request is still happening
+                               if ( xhr && !requestDone ) {
+                                       onreadystatechange( "timeout" );
+                               }
+                       }, s.timeout);
                }
 
                // Send the data
                try {
-                       xhr.send(s.data);
+                       xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
                } catch(e) {
                        jQuery.handleError(s, xhr, null, e);
+                       // Fire the complete handlers
+                       complete();
                }
 
                // firefox 1.5 doesn't fire statechange for sync requests
-               if ( !s.async )
+               if ( !s.async ) {
                        onreadystatechange();
+               }
 
-               function success(){
+               function success() {
                        // If a local callback was specified, fire it and pass it the data
-                       if ( s.success )
-                               s.success( data, status );
+                       if ( s.success ) {
+                               s.success.call( callbackContext, data, status, xhr );
+                       }
 
                        // Fire the global callback
-                       if ( s.global )
-                               jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+                       if ( s.global ) {
+                               trigger( "ajaxSuccess", [xhr, s] );
+                       }
                }
 
-               function complete(){
+               function complete() {
                        // Process result
-                       if ( s.complete )
-                               s.complete(xhr, status);
+                       if ( s.complete ) {
+                               s.complete.call( callbackContext, xhr, status);
+                       }
 
                        // The request was completed
-                       if ( s.global )
-                               jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+                       if ( s.global ) {
+                               trigger( "ajaxComplete", [xhr, s] );
+                       }
 
                        // Handle the global AJAX counter
-                       if ( s.global && ! --jQuery.active )
+                       if ( s.global && ! --jQuery.active ) {
                                jQuery.event.trigger( "ajaxStop" );
+                       }
+               }
+               
+               function trigger(type, args) {
+                       (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
                }
 
                // return XMLHttpRequest to allow aborting the request etc.
@@ -3669,11 +5300,14 @@ jQuery.extend({
 
        handleError: function( s, xhr, status, e ) {
                // If a local callback was specified, fire it
-               if ( s.error ) s.error( xhr, status, e );
+               if ( s.error ) {
+                       s.error.call( s.context || s, xhr, status, e );
+               }
 
                // Fire the global callback
-               if ( s.global )
-                       jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+               if ( s.global ) {
+                       (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
+               }
        },
 
        // Counter for holding the number of active queries
@@ -3683,86 +5317,131 @@ jQuery.extend({
        httpSuccess: function( xhr ) {
                try {
                        // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
-                       return !xhr.status && location.protocol == "file:" ||
-                               ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
-               } catch(e){}
+                       return !xhr.status && location.protocol === "file:" ||
+                               // Opera returns 0 when status is 304
+                               ( xhr.status >= 200 && xhr.status < 300 ) ||
+                               xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
+               } catch(e) {}
+
                return false;
        },
 
        // Determines if an XMLHttpRequest returns NotModified
        httpNotModified: function( xhr, url ) {
-               try {
-                       var xhrRes = xhr.getResponseHeader("Last-Modified");
+               var lastModified = xhr.getResponseHeader("Last-Modified"),
+                       etag = xhr.getResponseHeader("Etag");
 
-                       // Firefox always returns 200. check Last-Modified date
-                       return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
-               } catch(e){}
-               return false;
+               if ( lastModified ) {
+                       jQuery.lastModified[url] = lastModified;
+               }
+
+               if ( etag ) {
+                       jQuery.etag[url] = etag;
+               }
+
+               // Opera returns 0 when status is 304
+               return xhr.status === 304 || xhr.status === 0;
        },
 
        httpData: function( xhr, type, s ) {
-               var ct = xhr.getResponseHeader("content-type"),
-                       xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+               var ct = xhr.getResponseHeader("content-type") || "",
+                       xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
                        data = xml ? xhr.responseXML : xhr.responseText;
 
-               if ( xml && data.documentElement.tagName == "parsererror" )
-                       throw "parsererror";
-                       
+               if ( xml && data.documentElement.nodeName === "parsererror" ) {
+                       jQuery.error( "parsererror" );
+               }
+
                // Allow a pre-filtering function to sanitize the response
-               // s != null is checked to keep backwards compatibility
-               if( s && s.dataFilter )
+               // s is checked to keep backwards compatibility
+               if ( s && s.dataFilter ) {
                        data = s.dataFilter( data, type );
+               }
 
                // The filter can actually parse the response
-               if( typeof data === "string" ){
+               if ( typeof data === "string" ) {
+                       // Get the JavaScript object, if JSON is used.
+                       if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+                               data = jQuery.parseJSON( data );
 
                        // If the type is "script", eval it in global context
-                       if ( type == "script" )
+                       } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
                                jQuery.globalEval( data );
-
-                       // Get the JavaScript object, if JSON is used.
-                       if ( type == "json" )
-                               data = window["eval"]("(" + data + ")");
+                       }
                }
-               
+
                return data;
        },
 
        // Serialize an array of form elements or a set of
        // key/values into a query string
-       param: function( a ) {
-               var s = [ ];
-
-               function add( key, value ){
-                       s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
-               };
-
-               // If an array was passed in, assume that it is an array
-               // of form elements
-               if ( jQuery.isArray(a) || a.jquery )
+       param: function( a, traditional ) {
+               var s = [];
+               
+               // Set traditional to true for jQuery <= 1.3.2 behavior.
+               if ( traditional === undefined ) {
+                       traditional = jQuery.ajaxSettings.traditional;
+               }
+               
+               // If an array was passed in, assume that it is an array of form elements.
+               if ( jQuery.isArray(a) || a.jquery ) {
                        // Serialize the form elements
-                       jQuery.each( a, function(){
+                       jQuery.each( a, function() {
                                add( this.name, this.value );
                        });
-
-               // Otherwise, assume that it's an object of key/value pairs
-               else
-                       // Serialize the key/values
-                       for ( var j in a )
-                               // If the value is an array then the key names need to be repeated
-                               if ( jQuery.isArray(a[j]) )
-                                       jQuery.each( a[j], function(){
-                                               add( j, this );
-                                       });
-                               else
-                                       add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+                       
+               } else {
+                       // If traditional, encode the "old" way (the way 1.3.2 or older
+                       // did it), otherwise encode params recursively.
+                       for ( var prefix in a ) {
+                               buildParams( prefix, a[prefix] );
+                       }
+               }
 
                // Return the resulting serialization
-               return s.join("&").replace(/%20/g, "+");
-       }
+               return s.join("&").replace(r20, "+");
+
+               function buildParams( prefix, obj ) {
+                       if ( jQuery.isArray(obj) ) {
+                               // Serialize array item.
+                               jQuery.each( obj, function( i, v ) {
+                                       if ( traditional || /\[\]$/.test( prefix ) ) {
+                                               // Treat each array item as a scalar.
+                                               add( prefix, v );
+                                       } else {
+                                               // If array item is non-scalar (array or object), encode its
+                                               // numeric index to resolve deserialization ambiguity issues.
+                                               // Note that rack (as of 1.0.0) can't currently deserialize
+                                               // nested arrays properly, and attempting to do so may cause
+                                               // a server error. Possible fixes are to modify rack's
+                                               // deserialization algorithm or to provide an option or flag
+                                               // to force array serialization to be shallow.
+                                               buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
+                                       }
+                               });
+                                       
+                       } else if ( !traditional && obj != null && typeof obj === "object" ) {
+                               // Serialize object item.
+                               jQuery.each( obj, function( k, v ) {
+                                       buildParams( prefix + "[" + k + "]", v );
+                               });
+                                       
+                       } else {
+                               // Serialize scalar item.
+                               add( prefix, obj );
+                       }
+               }
 
+               function add( key, value ) {
+                       // If value is a function, invoke it and return its value
+                       value = jQuery.isFunction(value) ? value() : value;
+                       s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+               }
+       }
 });
 var elemdisplay = {},
+       rfxtypes = /toggle|show|hide/,
+       rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
        timerId,
        fxAttrs = [
                // height animations
@@ -3773,69 +5452,67 @@ var elemdisplay = {},
                [ "opacity" ]
        ];
 
-function genFx( type, num ){
-       var obj = {};
-       jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
-               obj[ this ] = type;
-       });
-       return obj;
-}
-
 jQuery.fn.extend({
-       show: function(speed,callback){
-               if ( speed ) {
+       show: function( speed, callback ) {
+               if ( speed || speed === 0) {
                        return this.animate( genFx("show", 3), speed, callback);
+
                } else {
-                       for ( var i = 0, l = this.length; i < l; i++ ){
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
                                var old = jQuery.data(this[i], "olddisplay");
-                               
+
                                this[i].style.display = old || "";
-                               
+
                                if ( jQuery.css(this[i], "display") === "none" ) {
-                                       var tagName = this[i].tagName, display;
-                                       
-                                       if ( elemdisplay[ tagName ] ) {
-                                               display = elemdisplay[ tagName ];
+                                       var nodeName = this[i].nodeName, display;
+
+                                       if ( elemdisplay[ nodeName ] ) {
+                                               display = elemdisplay[ nodeName ];
+
                                        } else {
-                                               var elem = jQuery("<" + tagName + " />").appendTo("body");
-                                               
+                                               var elem = jQuery("<" + nodeName + " />").appendTo("body");
+
                                                display = elem.css("display");
-                                               if ( display === "none" )
+
+                                               if ( display === "none" ) {
                                                        display = "block";
-                                               
+                                               }
+
                                                elem.remove();
-                                               
-                                               elemdisplay[ tagName ] = display;
+
+                                               elemdisplay[ nodeName ] = display;
                                        }
-                                       
+
                                        jQuery.data(this[i], "olddisplay", display);
                                }
                        }
 
                        // Set the display of the elements in a second loop
                        // to avoid the constant reflow
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+                       for ( var j = 0, k = this.length; j < k; j++ ) {
+                               this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
                        }
-                       
+
                        return this;
                }
        },
 
-       hide: function(speed,callback){
-               if ( speed ) {
+       hide: function( speed, callback ) {
+               if ( speed || speed === 0 ) {
                        return this.animate( genFx("hide", 3), speed, callback);
+
                } else {
-                       for ( var i = 0, l = this.length; i < l; i++ ){
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
                                var old = jQuery.data(this[i], "olddisplay");
-                               if ( !old && old !== "none" )
+                               if ( !old && old !== "none" ) {
                                        jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+                               }
                        }
 
                        // Set the display of the elements in a second loop
                        // to avoid the constant reflow
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               this[i].style.display = "none";
+                       for ( var j = 0, k = this.length; j < k; j++ ) {
+                               this[j].style.display = "none";
                        }
 
                        return this;
@@ -3845,77 +5522,107 @@ jQuery.fn.extend({
        // Save the old toggle function
        _toggle: jQuery.fn.toggle,
 
-       toggle: function( fn, fn2 ){
+       toggle: function( fn, fn2 ) {
                var bool = typeof fn === "boolean";
 
-               return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
-                       this._toggle.apply( this, arguments ) :
-                       fn == null || bool ?
-                               this.each(function(){
-                                       var state = bool ? fn : jQuery(this).is(":hidden");
-                                       jQuery(this)[ state ? "show" : "hide" ]();
-                               }) :
-                               this.animate(genFx("toggle", 3), fn, fn2);
+               if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+                       this._toggle.apply( this, arguments );
+
+               } else if ( fn == null || bool ) {
+                       this.each(function() {
+                               var state = bool ? fn : jQuery(this).is(":hidden");
+                               jQuery(this)[ state ? "show" : "hide" ]();
+                       });
+
+               } else {
+                       this.animate(genFx("toggle", 3), fn, fn2);
+               }
+
+               return this;
        },
 
-       fadeTo: function(speed,to,callback){
-               return this.animate({opacity: to}, speed, callback);
+       fadeTo: function( speed, to, callback ) {
+               return this.filter(":hidden").css("opacity", 0).show().end()
+                                       .animate({opacity: to}, speed, callback);
        },
 
        animate: function( prop, speed, easing, callback ) {
                var optall = jQuery.speed(speed, easing, callback);
 
-               return this[ optall.queue === false ? "each" : "queue" ](function(){
-               
+               if ( jQuery.isEmptyObject( prop ) ) {
+                       return this.each( optall.complete );
+               }
+
+               return this[ optall.queue === false ? "each" : "queue" ](function() {
                        var opt = jQuery.extend({}, optall), p,
-                               hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+                               hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
                                self = this;
-       
+
                        for ( p in prop ) {
-                               if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+                               var name = p.replace(rdashAlpha, fcamelCase);
+
+                               if ( p !== name ) {
+                                       prop[ name ] = prop[ p ];
+                                       delete prop[ p ];
+                                       p = name;
+                               }
+
+                               if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
                                        return opt.complete.call(this);
+                               }
 
-                               if ( ( p == "height" || p == "width" ) && this.style ) {
+                               if ( ( p === "height" || p === "width" ) && this.style ) {
                                        // Store display property
                                        opt.display = jQuery.css(this, "display");
 
                                        // Make sure that nothing sneaks out
                                        opt.overflow = this.style.overflow;
                                }
+
+                               if ( jQuery.isArray( prop[p] ) ) {
+                                       // Create (if needed) and add to specialEasing
+                                       (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+                                       prop[p] = prop[p][0];
+                               }
                        }
 
-                       if ( opt.overflow != null )
+                       if ( opt.overflow != null ) {
                                this.style.overflow = "hidden";
+                       }
 
                        opt.curAnim = jQuery.extend({}, prop);
 
-                       jQuery.each( prop, function(name, val){
+                       jQuery.each( prop, function( name, val ) {
                                var e = new jQuery.fx( self, opt, name );
 
-                               if ( /toggle|show|hide/.test(val) )
-                                       e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
-                               else {
-                                       var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+                               if ( rfxtypes.test(val) ) {
+                                       e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+                               } else {
+                                       var parts = rfxnum.exec(val),
                                                start = e.cur(true) || 0;
 
                                        if ( parts ) {
-                                               var end = parseFloat(parts[2]),
+                                               var end = parseFloat( parts[2] ),
                                                        unit = parts[3] || "px";
 
                                                // We need to compute starting value
-                                               if ( unit != "px" ) {
+                                               if ( unit !== "px" ) {
                                                        self.style[ name ] = (end || 1) + unit;
                                                        start = ((end || 1) / e.cur(true)) * start;
                                                        self.style[ name ] = start + unit;
                                                }
 
                                                // If a +=/-= token was provided, we're doing a relative animation
-                                               if ( parts[1] )
-                                                       end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+                                               if ( parts[1] ) {
+                                                       end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+                                               }
 
                                                e.custom( start, end, unit );
-                                       } else
+
+                                       } else {
                                                e.custom( start, val, "" );
+                                       }
                                }
                        });
 
@@ -3924,26 +5631,31 @@ jQuery.fn.extend({
                });
        },
 
-       stop: function(clearQueue, gotoEnd){
+       stop: function( clearQueue, gotoEnd ) {
                var timers = jQuery.timers;
 
-               if (clearQueue)
+               if ( clearQueue ) {
                        this.queue([]);
+               }
 
-               this.each(function(){
+               this.each(function() {
                        // go in reverse order so anything added to the queue during the loop is ignored
-                       for ( var i = timers.length - 1; i >= 0; i-- )
-                               if ( timers[i].elem == this ) {
-                                       if (gotoEnd)
+                       for ( var i = timers.length - 1; i >= 0; i-- ) {
+                               if ( timers[i].elem === this ) {
+                                       if (gotoEnd) {
                                                // force the next step to be the last
                                                timers[i](true);
+                                       }
+
                                        timers.splice(i, 1);
                                }
+                       }
                });
 
                // start the next in the queue if the last step wasn't forced
-               if (!gotoEnd)
+               if ( !gotoEnd ) {
                        this.dequeue();
+               }
 
                return this;
        }
@@ -3957,16 +5669,15 @@ jQuery.each({
        slideToggle: genFx("toggle", 1),
        fadeIn: { opacity: "show" },
        fadeOut: { opacity: "hide" }
-}, function( name, props ){
-       jQuery.fn[ name ] = function( speed, callback ){
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, callback ) {
                return this.animate( props, speed, callback );
        };
 });
 
 jQuery.extend({
-
-       speed: function(speed, easing, fn) {
-               var opt = typeof speed === "object" ? speed : {
+       speed: function( speed, easing, fn ) {
+               var opt = speed && typeof speed === "object" ? speed : {
                        complete: fn || !fn && easing ||
                                jQuery.isFunction( speed ) && speed,
                        duration: speed,
@@ -3978,11 +5689,13 @@ jQuery.extend({
 
                // Queueing
                opt.old = opt.complete;
-               opt.complete = function(){
-                       if ( opt.queue !== false )
+               opt.complete = function() {
+                       if ( opt.queue !== false ) {
                                jQuery(this).dequeue();
-                       if ( jQuery.isFunction( opt.old ) )
+                       }
+                       if ( jQuery.isFunction( opt.old ) ) {
                                opt.old.call( this );
+                       }
                };
 
                return opt;
@@ -3999,42 +5712,45 @@ jQuery.extend({
 
        timers: [],
 
-       fx: function( elem, options, prop ){
+       fx: function( elem, options, prop ) {
                this.options = options;
                this.elem = elem;
                this.prop = prop;
 
-               if ( !options.orig )
+               if ( !options.orig ) {
                        options.orig = {};
+               }
        }
 
 });
 
 jQuery.fx.prototype = {
-
        // Simple function for setting a style value
-       update: function(){
-               if ( this.options.step )
+       update: function() {
+               if ( this.options.step ) {
                        this.options.step.call( this.elem, this.now, this );
+               }
 
                (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
 
                // Set display property to block for height/width animations
-               if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+               if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
                        this.elem.style.display = "block";
+               }
        },
 
        // Get the current size
-       cur: function(force){
-               if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+       cur: function( force ) {
+               if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
                        return this.elem[ this.prop ];
+               }
 
                var r = parseFloat(jQuery.css(this.elem, this.prop, force));
                return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
        },
 
        // Start an animation from one number to another
-       custom: function(from, to, unit){
+       custom: function( from, to, unit ) {
                this.startTime = now();
                this.start = from;
                this.end = to;
@@ -4043,47 +5759,36 @@ jQuery.fx.prototype = {
                this.pos = this.state = 0;
 
                var self = this;
-               function t(gotoEnd){
+               function t( gotoEnd ) {
                        return self.step(gotoEnd);
                }
 
                t.elem = this.elem;
 
                if ( t() && jQuery.timers.push(t) && !timerId ) {
-                       timerId = setInterval(function(){
-                               var timers = jQuery.timers;
-
-                               for ( var i = 0; i < timers.length; i++ )
-                                       if ( !timers[i]() )
-                                               timers.splice(i--, 1);
-
-                               if ( !timers.length ) {
-                                       clearInterval( timerId );
-                                       timerId = undefined;
-                               }
-                       }, 13);
+                       timerId = setInterval(jQuery.fx.tick, 13);
                }
        },
 
        // Simple 'show' function
-       show: function(){
+       show: function() {
                // Remember where we started, so that we can go back to it later
-               this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+               this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
                this.options.show = true;
 
                // Begin the animation
                // Make sure that we start at a small width/height to avoid any
                // flash of content
-               this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+               this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
 
                // Start by showing the element
-               jQuery(this.elem).show();
+               jQuery( this.elem ).show();
        },
 
        // Simple 'hide' function
-       hide: function(){
+       hide: function() {
                // Remember where we started, so that we can go back to it later
-               this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+               this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
                this.options.hide = true;
 
                // Begin the animation
@@ -4091,8 +5796,8 @@ jQuery.fx.prototype = {
        },
 
        // Each step of an animation
-       step: function(gotoEnd){
-               var t = now();
+       step: function( gotoEnd ) {
+               var t = now(), done = true;
 
                if ( gotoEnd || t >= this.options.duration + this.startTime ) {
                        this.now = this.end;
@@ -4101,10 +5806,11 @@ jQuery.fx.prototype = {
 
                        this.options.curAnim[ this.prop ] = true;
 
-                       var done = true;
-                       for ( var i in this.options.curAnim )
-                               if ( this.options.curAnim[i] !== true )
+                       for ( var i in this.options.curAnim ) {
+                               if ( this.options.curAnim[i] !== true ) {
                                        done = false;
+                               }
+                       }
 
                        if ( done ) {
                                if ( this.options.display != null ) {
@@ -4112,31 +5818,40 @@ jQuery.fx.prototype = {
                                        this.elem.style.overflow = this.options.overflow;
 
                                        // Reset the display
-                                       this.elem.style.display = this.options.display;
-                                       if ( jQuery.css(this.elem, "display") == "none" )
+                                       var old = jQuery.data(this.elem, "olddisplay");
+                                       this.elem.style.display = old ? old : this.options.display;
+
+                                       if ( jQuery.css(this.elem, "display") === "none" ) {
                                                this.elem.style.display = "block";
+                                       }
                                }
 
                                // Hide the element if the "hide" operation was done
-                               if ( this.options.hide )
+                               if ( this.options.hide ) {
                                        jQuery(this.elem).hide();
+                               }
 
                                // Reset the properties, if the item has been hidden or shown
-                               if ( this.options.hide || this.options.show )
-                                       for ( var p in this.options.curAnim )
-                                               jQuery.attr(this.elem.style, p, this.options.orig[p]);
-                                       
+                               if ( this.options.hide || this.options.show ) {
+                                       for ( var p in this.options.curAnim ) {
+                                               jQuery.style(this.elem, p, this.options.orig[p]);
+                                       }
+                               }
+
                                // Execute the complete function
                                this.options.complete.call( this.elem );
                        }
 
                        return false;
+
                } else {
                        var n = t - this.startTime;
                        this.state = n / this.options.duration;
 
                        // Perform the easing function, defaults to swing
-                       this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+                       var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+                       var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+                       this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
                        this.now = this.start + ((this.end - this.start) * this.pos);
 
                        // Perform the next step of the animation
@@ -4145,232 +5860,382 @@ jQuery.fx.prototype = {
 
                return true;
        }
-
 };
 
 jQuery.extend( jQuery.fx, {
-       speeds:{
+       tick: function() {
+               var timers = jQuery.timers;
+
+               for ( var i = 0; i < timers.length; i++ ) {
+                       if ( !timers[i]() ) {
+                               timers.splice(i--, 1);
+                       }
+               }
+
+               if ( !timers.length ) {
+                       jQuery.fx.stop();
+               }
+       },
+               
+       stop: function() {
+               clearInterval( timerId );
+               timerId = null;
+       },
+       
+       speeds: {
                slow: 600,
                fast: 200,
                // Default speed
                _default: 400
        },
-       step: {
 
-               opacity: function(fx){
-                       jQuery.attr(fx.elem.style, "opacity", fx.now);
+       step: {
+               opacity: function( fx ) {
+                       jQuery.style(fx.elem, "opacity", fx.now);
                },
 
-               _default: function(fx){
-                       if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
-                               fx.elem.style[ fx.prop ] = fx.now + fx.unit;
-                       else
+               _default: function( fx ) {
+                       if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+                               fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+                       } else {
                                fx.elem[ fx.prop ] = fx.now;
+                       }
                }
        }
 });
-if ( document.documentElement["getBoundingClientRect"] )
-       jQuery.fn.offset = function() {
-               if ( !this[0] ) return { top: 0, left: 0 };
-               if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-               var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.animated = function( elem ) {
+               return jQuery.grep(jQuery.timers, function( fn ) {
+                       return elem === fn.elem;
+               }).length;
+       };
+}
+
+function genFx( type, num ) {
+       var obj = {};
+
+       jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+               obj[ this ] = type;
+       });
+
+       return obj;
+}
+if ( "getBoundingClientRect" in document.documentElement ) {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0];
+
+               if ( options ) { 
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
                        clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
-                       top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
-                       left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+                       top  = box.top  + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
+                       left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+
                return { top: top, left: left };
        };
-else 
-       jQuery.fn.offset = function() {
-               if ( !this[0] ) return { top: 0, left: 0 };
-               if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-               jQuery.offset.initialized || jQuery.offset.initialize();
 
-               var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+} else {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0];
+
+               if ( options ) { 
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               jQuery.offset.initialize();
+
+               var offsetParent = elem.offsetParent, prevOffsetParent = elem,
                        doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
                        body = doc.body, defaultView = doc.defaultView,
-                       prevComputedStyle = defaultView.getComputedStyle(elem, null),
+                       prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
                        top = elem.offsetTop, left = elem.offsetLeft;
 
                while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
-                       computedStyle = defaultView.getComputedStyle(elem, null);
-                       top -= elem.scrollTop, left -= elem.scrollLeft;
+                       if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                               break;
+                       }
+
+                       computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+                       top  -= elem.scrollTop;
+                       left -= elem.scrollLeft;
+
                        if ( elem === offsetParent ) {
-                               top += elem.offsetTop, left += elem.offsetLeft;
-                               if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
-                                       top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-                                       left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+                               top  += elem.offsetTop;
+                               left += elem.offsetLeft;
+
+                               if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
+                                       top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                                       left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                               }
+
                                prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
                        }
-                       if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
-                               top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-                               left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+
+                       if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+                               top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                               left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                       }
+
                        prevComputedStyle = computedStyle;
                }
 
-               if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
-                       top  += body.offsetTop,
+               if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+                       top  += body.offsetTop;
                        left += body.offsetLeft;
+               }
 
-               if ( prevComputedStyle.position === "fixed" )
-                       top  += Math.max(docElem.scrollTop, body.scrollTop),
-                       left += Math.max(docElem.scrollLeft, body.scrollLeft);
+               if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                       top  += Math.max( docElem.scrollTop, body.scrollTop );
+                       left += Math.max( docElem.scrollLeft, body.scrollLeft );
+               }
 
                return { top: top, left: left };
        };
+}
 
 jQuery.offset = {
        initialize: function() {
-               if ( this.initialized ) return;
-               var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
-                       html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+               var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
+                       html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
 
-               rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
-               for ( prop in rules ) container.style[prop] = rules[prop];
+               jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
 
                container.innerHTML = html;
-               body.insertBefore(container, body.firstChild);
-               innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+               body.insertBefore( container, body.firstChild );
+               innerDiv = container.firstChild;
+               checkDiv = innerDiv.firstChild;
+               td = innerDiv.nextSibling.firstChild.firstChild;
 
                this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
                this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
 
-               innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+               checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
+               // safari subtracts parent border width here which is 5px
+               this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+               checkDiv.style.position = checkDiv.style.top = "";
+
+               innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
                this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
 
-               body.style.marginTop = '1px';
-               this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
-               body.style.marginTop = bodyMarginTop;
+               this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
 
-               body.removeChild(container);
-               this.initialized = true;
+               body.removeChild( container );
+               body = container = innerDiv = checkDiv = table = td = null;
+               jQuery.offset.initialize = jQuery.noop;
        },
 
-       bodyOffset: function(body) {
-               jQuery.offset.initialized || jQuery.offset.initialize();
+       bodyOffset: function( body ) {
                var top = body.offsetTop, left = body.offsetLeft;
-               if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
-                       top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
-                       left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+
+               jQuery.offset.initialize();
+
+               if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+                       top  += parseFloat( jQuery.curCSS(body, "marginTop",  true) ) || 0;
+                       left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
+               }
+
                return { top: top, left: left };
+       },
+       
+       setOffset: function( elem, options, i ) {
+               // set position first, in-case top/left are set even on static elem
+               if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
+                       elem.style.position = "relative";
+               }
+               var curElem   = jQuery( elem ),
+                       curOffset = curElem.offset(),
+                       curTop    = parseInt( jQuery.curCSS( elem, "top",  true ), 10 ) || 0,
+                       curLeft   = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               var props = {
+                       top:  (options.top  - curOffset.top)  + curTop,
+                       left: (options.left - curOffset.left) + curLeft
+               };
+               
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+               } else {
+                       curElem.css( props );
+               }
        }
 };
 
 
 jQuery.fn.extend({
        position: function() {
-               var left = 0, top = 0, results;
-
-               if ( this[0] ) {
-                       // Get *real* offsetParent
-                       var offsetParent = this.offsetParent(),
-
-                       // Get correct offsets
-                       offset       = this.offset(),
-                       parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
-
-                       // Subtract element margins
-                       // note: when an element has margin: auto the offsetLeft and marginLeft 
-                       // are the same in Safari causing offset.left to incorrectly be 0
-                       offset.top  -= num( this, 'marginTop'  );
-                       offset.left -= num( this, 'marginLeft' );
-
-                       // Add offsetParent borders
-                       parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
-                       parentOffset.left += num( offsetParent, 'borderLeftWidth' );
-
-                       // Subtract the two offsets
-                       results = {
-                               top:  offset.top  - parentOffset.top,
-                               left: offset.left - parentOffset.left
-                       };
+               if ( !this[0] ) {
+                       return null;
                }
 
-               return results;
+               var elem = this[0],
+
+               // Get *real* offsetParent
+               offsetParent = this.offsetParent(),
+
+               // Get correct offsets
+               offset       = this.offset(),
+               parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+               // Subtract element margins
+               // note: when an element has margin: auto the offsetLeft and marginLeft
+               // are the same in Safari causing offset.left to incorrectly be 0
+               offset.top  -= parseFloat( jQuery.curCSS(elem, "marginTop",  true) ) || 0;
+               offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
+
+               // Add offsetParent borders
+               parentOffset.top  += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth",  true) ) || 0;
+               parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
+
+               // Subtract the two offsets
+               return {
+                       top:  offset.top  - parentOffset.top,
+                       left: offset.left - parentOffset.left
+               };
        },
 
        offsetParent: function() {
-               var offsetParent = this[0].offsetParent || document.body;
-               while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
-                       offsetParent = offsetParent.offsetParent;
-               return jQuery(offsetParent);
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || document.body;
+                       while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+                       return offsetParent;
+               });
        }
 });
 
 
 // Create scrollLeft and scrollTop methods
-jQuery.each( ['Left', 'Top'], function(i, name) {
-       var method = 'scroll' + name;
-       
-       jQuery.fn[ method ] = function(val) {
-               if (!this[0]) return null;
+jQuery.each( ["Left", "Top"], function( i, name ) {
+       var method = "scroll" + name;
 
-               return val !== undefined ?
+       jQuery.fn[ method ] = function(val) {
+               var elem = this[0], win;
+               
+               if ( !elem ) {
+                       return null;
+               }
 
+               if ( val !== undefined ) {
                        // Set the scroll offset
-                       this.each(function() {
-                               this == window || this == document ?
-                                       window.scrollTo(
-                                               !i ? val : jQuery(window).scrollLeft(),
-                                                i ? val : jQuery(window).scrollTop()
-                                       ) :
+                       return this.each(function() {
+                               win = getWindow( this );
+
+                               if ( win ) {
+                                       win.scrollTo(
+                                               !i ? val : jQuery(win).scrollLeft(),
+                                                i ? val : jQuery(win).scrollTop()
+                                       );
+
+                               } else {
                                        this[ method ] = val;
-                       }) :
+                               }
+                       });
+               } else {
+                       win = getWindow( elem );
 
                        // Return the scroll offset
-                       this[0] == window || this[0] == document ?
-                               self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
-                                       jQuery.boxModel && document.documentElement[ method ] ||
-                                       document.body[ method ] :
-                               this[0][ method ];
+                       return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+                               jQuery.support.boxModel && win.document.documentElement[ method ] ||
+                                       win.document.body[ method ] :
+                               elem[ method ];
+               }
        };
 });
+
+function getWindow( elem ) {
+       return ("scrollTo" in elem && elem.document) ?
+               elem :
+               elem.nodeType === 9 ?
+                       elem.defaultView || elem.parentWindow :
+                       false;
+}
 // Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
+jQuery.each([ "Height", "Width" ], function( i, name ) {
 
-       var tl = i ? "Left"  : "Top",  // top or left
-               br = i ? "Right" : "Bottom", // bottom or right
-               lower = name.toLowerCase();
+       var type = name.toLowerCase();
 
        // innerHeight and innerWidth
-       jQuery.fn["inner" + name] = function(){
+       jQuery.fn["inner" + name] = function() {
                return this[0] ?
-                       jQuery.css( this[0], lower, false, "padding" ) :
+                       jQuery.css( this[0], type, false, "padding" ) :
                        null;
        };
 
        // outerHeight and outerWidth
-       jQuery.fn["outer" + name] = function(margin) {
+       jQuery.fn["outer" + name] = function( margin ) {
                return this[0] ?
-                       jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+                       jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
                        null;
        };
-       
-       var type = name.toLowerCase();
 
        jQuery.fn[ type ] = function( size ) {
                // Get window width or height
-               return this[0] == window ?
+               var elem = this[0];
+               if ( !elem ) {
+                       return size == null ? null : this;
+               }
+               
+               if ( jQuery.isFunction( size ) ) {
+                       return this.each(function( i ) {
+                               var self = jQuery( this );
+                               self[ type ]( size.call( this, i, self[ type ]() ) );
+                       });
+               }
+
+               return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
                        // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
-                       document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
-                       document.body[ "client" + name ] :
+                       elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+                       elem.document.body[ "client" + name ] :
 
                        // Get document width or height
-                       this[0] == document ?
+                       (elem.nodeType === 9) ? // is it a document
                                // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
                                Math.max(
-                                       document.documentElement["client" + name],
-                                       document.body["scroll" + name], document.documentElement["scroll" + name],
-                                       document.body["offset" + name], document.documentElement["offset" + name]
+                                       elem.documentElement["client" + name],
+                                       elem.body["scroll" + name], elem.documentElement["scroll" + name],
+                                       elem.body["offset" + name], elem.documentElement["offset" + name]
                                ) :
 
                                // Get or set width or height on the element
                                size === undefined ?
                                        // Get width or height on the element
-                                       (this.length ? jQuery.css( this[0], type ) : null) :
+                                       jQuery.css( elem, type ) :
 
                                        // Set the width or height on the element (default to pixels if value is unitless)
                                        this.css( type, typeof size === "string" ? size : size + "px" );
        };
 
 });
-})();
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+})(window);
+
index b1ae21d8b23f25359f21b6c69f0eb2dd29016466..b170a78f8fbda267b82abbe51da6dacb2157c7c0 100644 (file)
-/*
- * jQuery JavaScript Library v1.3.2
+/*!
+ * jQuery JavaScript Library v1.4.2
  * http://jquery.com/
  *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
  *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
-/*
- * Sizzle CSS Selector Engine - v0.9.3
- *  Copyright 2009, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
  */
-(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
+
index b864867fd17d12114092c3a9bb5ea5c9b0865fb1..949aec957d0b1d06b968cad9585e7185e3b919be 100644 (file)
@@ -54,7 +54,8 @@ var SN = { // StatusNet
             NoticeGeoName: 'notice_data-geo_name',
             NoticeDataGeo: 'notice_data-geo',
             NoticeDataGeoCookie: 'notice_data-geo_cookie',
-            NoticeDataGeoSelected: 'notice_data-geo_selected'
+            NoticeDataGeoSelected: 'notice_data-geo_selected',
+            StatusNetInstance:'StatusNetInstance'
         }
     },
 
@@ -143,87 +144,85 @@ var SN = { // StatusNet
             SN.U.Counter(form);
         },
 
-        FormXHR: function(f) {
-            if (jQuery.data(f[0], "ElementData") === undefined) {
-                jQuery.data(f[0], "ElementData", {Bind:'submit'});
-                f.bind('submit', function(e) {
-                    form_id = $(this)[0].id;
-                    $.ajax({
-                        type: 'POST',
-                        dataType: 'xml',
-                        url: $(this)[0].action,
-                        data: $(this).serialize() + '&ajax=1',
-                        beforeSend: function(xhr) {
-                            $('#'+form_id).addClass(SN.C.S.Processing);
-                            $('#'+form_id+' .submit').addClass(SN.C.S.Disabled);
-                            $('#'+form_id+' .submit').attr(SN.C.S.Disabled, SN.C.S.Disabled);
-                        },
-                        error: function (xhr, textStatus, errorThrown) {
-                            alert(errorThrown || textStatus);
-                        },
-                        success: function(data, textStatus) {
-                            if (typeof($('form', data)[0]) != 'undefined') {
-                                form_new = document._importNode($('form', data)[0], true);
-                                $('#'+form_id).replaceWith(form_new);
-                                $('#'+form_new.id).each(function() { SN.U.FormXHR($(this)); });
-                            }
-                            else {
-                                $('#'+form_id).replaceWith(document._importNode($('p', data)[0], true));
-                            }
-                        }
-                    });
-                    return false;
-                });
-            }
+        FormXHR: function(form) {
+            $.ajax({
+                type: 'POST',
+                dataType: 'xml',
+                url: form.attr('action'),
+                data: form.serialize() + '&ajax=1',
+                beforeSend: function(xhr) {
+                    form
+                        .addClass(SN.C.S.Processing)
+                        .find('.submit')
+                            .addClass(SN.C.S.Disabled)
+                            .attr(SN.C.S.Disabled, SN.C.S.Disabled);
+                },
+                error: function (xhr, textStatus, errorThrown) {
+                    alert(errorThrown || textStatus);
+                },
+                success: function(data, textStatus) {
+                    if (typeof($('form', data)[0]) != 'undefined') {
+                        form_new = document._importNode($('form', data)[0], true);
+                        form.replaceWith(form_new);
+                    }
+                    else {
+                        form.replaceWith(document._importNode($('p', data)[0], true));
+                    }
+                }
+            });
         },
 
         FormNoticeXHR: function(form) {
-            var NDG, NLat, NLon, NLNS, NLID;
+            SN.C.I.NoticeDataGeo = {};
             form_id = form.attr('id');
             form.append('<input type="hidden" name="ajax" value="1"/>');
             form.ajaxForm({
                 dataType: 'xml',
                 timeout: '60000',
                 beforeSend: function(formData) {
-                    if ($('#'+form_id+' #'+SN.C.S.NoticeDataText)[0].value.length === 0) {
+                    if (form.find('#'+SN.C.S.NoticeDataText)[0].value.length === 0) {
                         form.addClass(SN.C.S.Warning);
                         return false;
                     }
-                    form.addClass(SN.C.S.Processing);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).addClass(SN.C.S.Disabled);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).attr(SN.C.S.Disabled, SN.C.S.Disabled);
-
-                    NLat = $('#'+SN.C.S.NoticeLat).val();
-                    NLon = $('#'+SN.C.S.NoticeLon).val();
-                    NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
-                    NLID = $('#'+SN.C.S.NoticeLocationId).val();
-                    NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
+                    form
+                        .addClass(SN.C.S.Processing)
+                        .find('#'+SN.C.S.NoticeActionSubmit)
+                            .addClass(SN.C.S.Disabled)
+                            .attr(SN.C.S.Disabled, SN.C.S.Disabled);
+
+                    SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val();
+                    SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val();
+                    SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
+                    SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val();
+                    SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
 
                     cookieValue = $.cookie(SN.C.S.NoticeDataGeoCookie);
 
                     if (cookieValue !== null && cookieValue != 'disabled') {
                         cookieValue = JSON.parse(cookieValue);
-                        NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
-                        NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
+                        SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
+                        SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
                         if ($('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS)) {
-                            NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
-                            NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
+                            SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
+                            SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
                         }
                     }
                     if (cookieValue == 'disabled') {
-                        NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
+                        SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
                     }
                     else {
-                        NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
+                        SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
                     }
 
                     return true;
                 },
                 error: function (xhr, textStatus, errorThrown) {
-                    form.removeClass(SN.C.S.Processing);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
-                    $('#'+form_id+' .form_response').remove();
+                    form
+                        .removeClass(SN.C.S.Processing)
+                        .find('#'+SN.C.S.NoticeActionSubmit)
+                            .removeClass(SN.C.S.Disabled)
+                            .removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
+                    form.find('.form_response').remove();
                     if (textStatus == 'timeout') {
                         form.append('<p class="form_response error">Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.</p>');
                     }
@@ -233,9 +232,10 @@ var SN = { // StatusNet
                         }
                         else {
                             if (parseInt(xhr.status) === 0 || jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) >= 0) {
-                                $('#'+form_id).resetForm();
-                                $('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
-                                SN.U.FormNoticeEnhancements($('#'+form_id));
+                                form
+                                    .resetForm()
+                                    .find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+                                SN.U.FormNoticeEnhancements(form);
                             }
                             else {
                                 form.append('<p class="form_response error">(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.</p>');
@@ -244,7 +244,7 @@ var SN = { // StatusNet
                     }
                 },
                 success: function(data, textStatus) {
-                    $('#'+form_id+' .form_response').remove();
+                    form.find('.form_response').remove();
                     var result;
                     if ($('#'+SN.C.S.Error, data).length > 0) {
                         result = document._importNode($('p', data)[0], true);
@@ -277,11 +277,11 @@ var SN = { // StatusNet
                                     else {
                                         notices.prepend(notice);
                                     }
-                                    $('#'+notice.id).css({display:'none'});
-                                    $('#'+notice.id).fadeIn(2500);
+                                    $('#'+notice.id)
+                                        .css({display:'none'})
+                                        .fadeIn(2500);
                                     SN.U.NoticeWithAttachment($('#'+notice.id));
                                     SN.U.NoticeReplyTo($('#'+notice.id));
-                                    SN.U.FormXHR($('#'+notice.id+' .form_favor'));
                                 }
                             }
                             else {
@@ -290,24 +290,26 @@ var SN = { // StatusNet
                                 form.append('<p class="form_response success">'+result_title+'</p>');
                             }
                         }
-                        $('#'+form_id).resetForm();
-                        $('#'+form_id+' #'+SN.C.S.NoticeInReplyTo).val('');
-                        $('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
-                        SN.U.FormNoticeEnhancements($('#'+form_id));
+                        form.resetForm();
+                        form.find('#'+SN.C.S.NoticeInReplyTo).val('');
+                        form.find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+                        SN.U.FormNoticeEnhancements(form);
                     }
                 },
                 complete: function(xhr, textStatus) {
-                    form.removeClass(SN.C.S.Processing);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled);
-                    $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
-
-                    $('#'+SN.C.S.NoticeLat).val(NLat);
-                    $('#'+SN.C.S.NoticeLon).val(NLon);
+                    form
+                        .removeClass(SN.C.S.Processing)
+                        .find('#'+SN.C.S.NoticeActionSubmit)
+                            .removeAttr(SN.C.S.Disabled)
+                            .removeClass(SN.C.S.Disabled);
+
+                    $('#'+SN.C.S.NoticeLat).val(SN.C.I.NoticeDataGeo.NLat);
+                    $('#'+SN.C.S.NoticeLon).val(SN.C.I.NoticeDataGeo.NLon);
                     if ($('#'+SN.C.S.NoticeLocationNs)) {
-                        $('#'+SN.C.S.NoticeLocationNs).val(NLNS);
-                        $('#'+SN.C.S.NoticeLocationId).val(NLID);
+                        $('#'+SN.C.S.NoticeLocationNs).val(SN.C.I.NoticeDataGeo.NLNS);
+                        $('#'+SN.C.S.NoticeLocationId).val(SN.C.I.NoticeDataGeo.NLID);
                     }
-                    $('#'+SN.C.S.NoticeDataGeo).attr('checked', NDG);
+                    $('#'+SN.C.S.NoticeDataGeo).attr('checked', SN.C.I.NoticeDataGeo.NDG);
                 }
             });
         },
@@ -318,18 +320,12 @@ var SN = { // StatusNet
             }
         },
 
-        NoticeReplyTo: function(notice_item) {
-            var notice = notice_item[0];
-            var notice_reply = $('.notice_reply', notice)[0];
-
-            if (jQuery.data(notice_reply, "ElementData") === undefined) {
-                jQuery.data(notice_reply, "ElementData", {Bind:'submit'});
-                $(notice_reply).bind('click', function() {
-                    var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
-                    SN.U.NoticeReplySet(nickname.text(), $($('.notice_id', notice)[0]).text());
-                    return false;
-                });
-            }
+        NoticeReplyTo: function(notice) {
+            notice.find('.notice_reply').live('click', function() {
+                var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
+                SN.U.NoticeReplySet(nickname.text(), $($('.notice_id', notice)[0]).text());
+                return false;
+            });
         },
 
         NoticeReplySet: function(nick,id) {
@@ -350,46 +346,49 @@ var SN = { // StatusNet
         },
 
         NoticeFavor: function() {
-            $('.form_favor').each(function() { SN.U.FormXHR($(this)); });
-            $('.form_disfavor').each(function() { SN.U.FormXHR($(this)); });
+            $('.form_favor').live('click', function() { SN.U.FormXHR($(this)); return false; });
+            $('.form_disfavor').live('click', function() { SN.U.FormXHR($(this)); return false; });
         },
 
         NoticeRepeat: function() {
-            $('.form_repeat').each(function() {
-                SN.U.FormXHR($(this));
+            $('.form_repeat').live('click', function(e) {
+                e.preventDefault();
+
                 SN.U.NoticeRepeatConfirmation($(this));
+                return false;
             });
         },
 
         NoticeRepeatConfirmation: function(form) {
-            function NRC() {
-                form.closest('.notice-options').addClass('opaque');
-                form.addClass('dialogbox');
+            var submit_i = form.find('.submit');
 
-                form.append('<button class="close">&#215;</button>');
-                form.find('button.close').click(function(){
-                    $(this).remove();
+            var submit = submit_i.clone();
+            submit
+                .addClass('submit_dialogbox')
+                .removeClass('submit');
+            form.append(submit);
+            submit.bind('click', function() { SN.U.FormXHR(form); return false; });
 
-                    form.closest('.notice-options').removeClass('opaque');
-                    form.removeClass('dialogbox');
-                    form.find('.submit_dialogbox').remove();
-                    form.find('.submit').show();
+            submit_i.hide();
 
-                    return false;
-                });
-            };
+            form
+                .addClass('dialogbox')
+                .append('<button class="close">&#215;</button>')
+                .closest('.notice-options')
+                    .addClass('opaque');
 
-            form.find('.submit').bind('click', function(e) {
-                e.preventDefault();
+            form.find('button.close').click(function(){
+                $(this).remove();
 
-                var submit = form.find('.submit').clone();
-                submit.addClass('submit_dialogbox');
-                submit.removeClass('submit');
-                form.append(submit);
+                form
+                    .removeClass('dialogbox')
+                    .closest('.notice-options')
+                        .removeClass('opaque');
 
-                $(this).hide();
+                form.find('.submit_dialogbox').remove();
+                form.find('.submit').show();
 
-                NRC();
+                return false;
             });
         },
 
@@ -400,12 +399,10 @@ var SN = { // StatusNet
         },
 
         NoticeWithAttachment: function(notice) {
-            if ($('.attachment', notice).length === 0) {
+            if (notice.find('.attachment').length === 0) {
                 return;
             }
 
-            var notice_id = notice.attr('id');
-
             $.fn.jOverlay.options = {
                 method : 'GET',
                 data : '',
@@ -425,35 +422,37 @@ var SN = { // StatusNet
                 css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
             };
 
-            $('#'+notice_id+' a.attachment').click(function() {
+            notice.find('a.attachment').click(function() {
                 $().jOverlay({url: $('address .url')[0].href+'attachment/' + ($(this).attr('id').substring('attachment'.length + 1)) + '/ajax'});
                 return false;
             });
 
-            var t;
-            $("body:not(#shownotice) #"+notice_id+" a.thumbnail").hover(
-                function() {
-                    var anchor = $(this);
-                    $("a.thumbnail").children('img').hide();
-                    anchor.closest(".entry-title").addClass('ov');
-
-                    if (anchor.children('img').length === 0) {
-                        t = setTimeout(function() {
-                            $.get($('address .url')[0].href+'attachment/' + (anchor.attr('id').substring('attachment'.length + 1)) + '/thumbnail', null, function(data) {
-                                anchor.append(data);
-                            });
-                        }, 500);
-                    }
-                    else {
-                        anchor.children('img').show();
+            if ($('#shownotice').length == 0) {
+                var t;
+                notice.find('a.thumbnail').hover(
+                    function() {
+                        var anchor = $(this);
+                        $('a.thumbnail').children('img').hide();
+                        anchor.closest(".entry-title").addClass('ov');
+
+                        if (anchor.children('img').length === 0) {
+                            t = setTimeout(function() {
+                                $.get($('address .url')[0].href+'attachment/' + (anchor.attr('id').substring('attachment'.length + 1)) + '/thumbnail', null, function(data) {
+                                    anchor.append(data);
+                                });
+                            }, 500);
+                        }
+                        else {
+                            anchor.children('img').show();
+                        }
+                    },
+                    function() {
+                        clearTimeout(t);
+                        $('a.thumbnail').children('img').hide();
+                        $(this).closest('.entry-title').removeClass('ov');
                     }
-                },
-                function() {
-                    clearTimeout(t);
-                    $("a.thumbnail").children('img').hide();
-                    $(this).closest(".entry-title").removeClass('ov');
-                }
-            );
+                );
+            }
         },
 
         NoticeDataAttach: function() {
@@ -639,7 +638,7 @@ var SN = { // StatusNet
             NDM.bind('click', function() {
                 var NDMF = $('.entity_send-a-message form');
                 if (NDMF.length === 0) {
-                    $(this).addClass('processing');
+                    $(this).addClass(SN.C.S.Processing);
                     $.get(NDM.attr('href'), null, function(data) {
                         $('.entity_send-a-message').append(document._importNode($('form', data)[0], true));
                         NDMF = $('.entity_send-a-message .form_notice');
@@ -650,7 +649,7 @@ var SN = { // StatusNet
                             NDMF.hide();
                             return false;
                         });
-                        NDM.removeClass('processing');
+                        NDM.removeClass(SN.C.S.Processing);
                     });
                 }
                 else {
@@ -666,6 +665,35 @@ var SN = { // StatusNet
             date.setFullYear(year, month, day);
 
             return date;
+        },
+
+        StatusNetInstance: {
+            Set: function(value) {
+                var SNI = SN.U.StatusNetInstance.Get();
+                if (SNI !== null) {
+                    value = $.extend(SNI, value);
+                }
+
+                $.cookie(
+                    SN.C.S.StatusNetInstance,
+                    JSON.stringify(value),
+                    {
+                        path: '/',
+                        expires: SN.U.GetFullYear(2029, 0, 1)
+                    });
+            },
+
+            Get: function() {
+                var cookieValue = $.cookie(SN.C.S.StatusNetInstance);
+                if (cookieValue !== null) {
+                    return JSON.parse(cookieValue);
+                }
+                return null;
+            },
+
+            Delete: function() {
+                $.cookie(SN.C.S.StatusNetInstance, null);
+            }
         }
     },
 
@@ -695,14 +723,28 @@ var SN = { // StatusNet
 
         EntityActions: function() {
             if ($('body.user_in').length > 0) {
-                $('.form_user_subscribe').each(function() { SN.U.FormXHR($(this)); });
-                $('.form_user_unsubscribe').each(function() { SN.U.FormXHR($(this)); });
-                $('.form_group_join').each(function() { SN.U.FormXHR($(this)); });
-                $('.form_group_leave').each(function() { SN.U.FormXHR($(this)); });
-                $('.form_user_nudge').each(function() { SN.U.FormXHR($(this)); });
+                $('.form_user_subscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
+                $('.form_user_unsubscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
+                $('.form_group_join').live('click', function() { SN.U.FormXHR($(this)); return false; });
+                $('.form_group_leave').live('click', function() { SN.U.FormXHR($(this)); return false; });
+                $('.form_user_nudge').live('click', function() { SN.U.FormXHR($(this)); return false; });
 
                 SN.U.NewDirectMessage();
             }
+        },
+
+        Login: function() {
+            if (SN.U.StatusNetInstance.Get() !== null) {
+                var nickname = SN.U.StatusNetInstance.Get().Nickname;
+                if (nickname !== null) {
+                    $('#form_login #nickname').val(nickname);
+                }
+            }
+
+            $('#form_login').bind('submit', function() {
+                SN.U.StatusNetInstance.Set({Nickname: $('#form_login #nickname').val()});
+                return true;
+            });
         }
     }
 };
@@ -717,5 +759,8 @@ $(document).ready(function(){
     if ($('#content .entity_actions').length > 0) {
         SN.Init.EntityActions();
     }
+    if ($('#form_login').length > 0) {
+        SN.Init.Login();
+    }
 });
 
index cc4f4aad074b910399ac84133cc993621dcb5e5a..fa9ddb9110393ed5fede1512c94d6dc142dfeb6c 100644 (file)
@@ -249,7 +249,7 @@ class Action extends HTMLOutputter // lawsuit
                 $this->script('jquery.min.js');
                 $this->script('jquery.form.js');
                 $this->script('jquery.cookie.js');
-                $this->script('json2.js');
+                $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.js').'"); }');
                 $this->script('jquery.joverlay.min.js');
                 Event::handle('EndShowJQueryScripts', array($this));
             }
@@ -259,8 +259,7 @@ class Action extends HTMLOutputter // lawsuit
                 $this->script('util.js');
                 $this->script('geometa.js');
                 // Frame-busting code to avoid clickjacking attacks.
-                $this->element('script', array('type' => 'text/javascript'),
-                               'if (window.top !== window.self) { window.top.location.href = window.self.location.href; }');
+                $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }');
                 Event::handle('EndShowStatusNetScripts', array($this));
                 Event::handle('EndShowLaconicaScripts', array($this));
             }
@@ -405,6 +404,7 @@ class Action extends HTMLOutputter // lawsuit
                                             'src' => (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png'),
                                             'alt' => common_config('site', 'name')));
             }
+            $this->text(' ');
             $this->element('span', array('class' => 'fn org'), common_config('site', 'name'));
             $this->elementEnd('a');
             Event::handle('EndAddressData', array($this));
@@ -822,12 +822,14 @@ class Action extends HTMLOutputter // lawsuit
                                             'alt' => common_config('license', 'title'),
                                             'width' => '80',
                                             'height' => '15'));
+                $this->text(' ');
                 //TODO: This is dirty: i18n
                 $this->text(_('All '.common_config('site', 'name').' content and data are available under the '));
                 $this->element('a', array('class' => 'license',
                                           'rel' => 'external license',
                                           'href' => common_config('license', 'url')),
                                common_config('license', 'title'));
+                $this->text(' ');
                 $this->text(_('license.'));
                 $this->elementEnd('p');
                 break;
diff --git a/lib/activity.php b/lib/activity.php
new file mode 100644 (file)
index 0000000..e592aad
--- /dev/null
@@ -0,0 +1,1082 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * An activity
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class PoCoURL
+{
+    const URLS      = 'urls';
+    const TYPE      = 'type';
+    const VALUE     = 'value';
+    const PRIMARY   = 'primary';
+
+    public $type;
+    public $value;
+    public $primary;
+
+    function __construct($type, $value, $primary = false)
+    {
+        $this->type    = $type;
+        $this->value   = $value;
+        $this->primary = $primary;
+    }
+
+    function asString()
+    {
+        $xs = new XMLStringer(true);
+        $xs->elementStart('poco:urls');
+        $xs->element('poco:type', null, $this->type);
+        $xs->element('poco:value', null, $this->value);
+        if (!empty($this->primary)) {
+            $xs->element('poco:primary', null, 'true');
+        }
+        $xs->elementEnd('poco:urls');
+        return $xs->getString();
+    }
+}
+
+class PoCoAddress
+{
+    const ADDRESS   = 'address';
+    const FORMATTED = 'formatted';
+
+    public $formatted;
+
+    // @todo Other address fields
+
+    function asString()
+    {
+        if (!empty($this->formatted)) {
+            $xs = new XMLStringer(true);
+            $xs->elementStart('poco:address');
+            $xs->element('poco:formatted', null, $this->formatted);
+            $xs->elementEnd('poco:address');
+            return $xs->getString();
+        }
+
+        return null;
+    }
+}
+
+class PoCo
+{
+    const NS = 'http://portablecontacts.net/spec/1.0';
+
+    const USERNAME     = 'preferredUsername';
+    const DISPLAYNAME  = 'displayName';
+    const NOTE         = 'note';
+
+    public $preferredUsername;
+    public $displayName;
+    public $note;
+    public $address;
+    public $urls = array();
+
+    function __construct($element = null)
+    {
+        if (empty($element)) {
+            return;
+        }
+
+        $this->preferredUsername = ActivityUtils::childContent(
+            $element,
+            self::USERNAME,
+            self::NS
+        );
+
+        $this->displayName = ActivityUtils::childContent(
+            $element,
+            self::DISPLAYNAME,
+            self::NS
+        );
+
+        $this->note = ActivityUtils::childContent(
+            $element,
+            self::NOTE,
+            self::NS
+        );
+
+        $this->address = $this->_getAddress($element);
+        $this->urls = $this->_getURLs($element);
+    }
+
+    private function _getURLs($element)
+    {
+        $urlEls = $element->getElementsByTagnameNS(self::NS, PoCoURL::URLS);
+        $urls = array();
+
+        foreach ($urlEls as $urlEl) {
+
+            $type = ActivityUtils::childContent(
+                $urlEl,
+                PoCoURL::TYPE,
+                PoCo::NS
+            );
+
+            $value = ActivityUtils::childContent(
+                $urlEl,
+                PoCoURL::VALUE,
+                PoCo::NS
+            );
+
+            $primary = ActivityUtils::childContent(
+                $urlEl,
+                PoCoURL::PRIMARY,
+                PoCo::NS
+            );
+
+            $isPrimary = false;
+
+            if (isset($primary) && $primary == 'true') {
+                $isPrimary = true;
+            }
+
+            // @todo check to make sure a primary hasn't already been added
+
+            array_push($urls, new PoCoURL($type, $value, $isPrimary));
+        }
+        return $urls;
+    }
+
+    private function _getAddress($element)
+    {
+        $addressEl = ActivityUtils::child(
+            $element,
+            PoCoAddress::ADDRESS,
+            PoCo::NS
+        );
+
+        if (!empty($addressEl)) {
+            $formatted = ActivityUtils::childContent(
+                $addressEl,
+                PoCoAddress::FORMATTED,
+                self::NS
+            );
+
+            if (!empty($formatted)) {
+                $address = new PoCoAddress();
+                $address->formatted = $formatted;
+                return $address;
+            }
+        }
+
+        return null;
+    }
+
+    function fromProfile($profile)
+    {
+        if (empty($profile)) {
+            return null;
+        }
+
+        $poco = new PoCo();
+
+        $poco->preferredUsername = $profile->nickname;
+        $poco->displayName       = $profile->getBestName();
+
+        $poco->note = $profile->bio;
+
+        $paddy = new PoCoAddress();
+        $paddy->formatted = $profile->location;
+        $poco->address = $paddy;
+
+        if (!empty($profile->homepage)) {
+            array_push(
+                $poco->urls,
+                new PoCoURL(
+                    'homepage',
+                    $profile->homepage,
+                    true
+                )
+            );
+        }
+
+        return $poco;
+    }
+
+    function getPrimaryURL()
+    {
+        foreach ($this->urls as $url) {
+            if ($url->primary) {
+                return $url;
+            }
+        }
+    }
+
+    function asString()
+    {
+        $xs = new XMLStringer(true);
+        $xs->element(
+            'poco:preferredUsername',
+            null,
+            $this->preferredUsername
+        );
+
+        $xs->element(
+            'poco:displayName',
+            null,
+            $this->displayName
+        );
+
+        if (!empty($this->note)) {
+            $xs->element('poco:note', null, $this->note);
+        }
+
+        if (!empty($this->address)) {
+            $xs->raw($this->address->asString());
+        }
+
+        foreach ($this->urls as $url) {
+            $xs->raw($url->asString());
+        }
+
+        return $xs->getString();
+    }
+}
+
+/**
+ * Utilities for turning DOMish things into Activityish things
+ *
+ * Some common functions that I didn't have the bandwidth to try to factor
+ * into some kind of reasonable superclass, so just dumped here. Might
+ * be useful to have an ActivityObject parent class or something.
+ *
+ * @category  OStatus
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+class ActivityUtils
+{
+    const ATOM = 'http://www.w3.org/2005/Atom';
+
+    const LINK = 'link';
+    const REL  = 'rel';
+    const TYPE = 'type';
+    const HREF = 'href';
+
+    const CONTENT = 'content';
+    const SRC     = 'src';
+
+    /**
+     * Get the permalink for an Activity object
+     *
+     * @param DOMElement $element A DOM element
+     *
+     * @return string related link, if any
+     */
+
+    static function getPermalink($element)
+    {
+        return self::getLink($element, 'alternate', 'text/html');
+    }
+
+    /**
+     * Get the permalink for an Activity object
+     *
+     * @param DOMElement $element A DOM element
+     *
+     * @return string related link, if any
+     */
+
+    static function getLink(DOMNode $element, $rel, $type=null)
+    {
+        $links = $element->getElementsByTagnameNS(self::ATOM, self::LINK);
+
+        foreach ($links as $link) {
+
+            $linkRel = $link->getAttribute(self::REL);
+            $linkType = $link->getAttribute(self::TYPE);
+
+            if ($linkRel == $rel &&
+                (is_null($type) || $linkType == $type)) {
+                return $link->getAttribute(self::HREF);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Gets the first child element with the given tag
+     *
+     * @param DOMElement $element   element to pick at
+     * @param string     $tag       tag to look for
+     * @param string     $namespace Namespace to look under
+     *
+     * @return DOMElement found element or null
+     */
+
+    static function child(DOMNode $element, $tag, $namespace=self::ATOM)
+    {
+        $els = $element->childNodes;
+        if (empty($els) || $els->length == 0) {
+            return null;
+        } else {
+            for ($i = 0; $i < $els->length; $i++) {
+                $el = $els->item($i);
+                if ($el->localName == $tag && $el->namespaceURI == $namespace) {
+                    return $el;
+                }
+            }
+        }
+    }
+
+    /**
+     * Grab the text content of a DOM element child of the current element
+     *
+     * @param DOMElement $element   Element whose children we examine
+     * @param string     $tag       Tag to look up
+     * @param string     $namespace Namespace to use, defaults to Atom
+     *
+     * @return string content of the child
+     */
+
+    static function childContent(DOMNode $element, $tag, $namespace=self::ATOM)
+    {
+        $el = self::child($element, $tag, $namespace);
+
+        if (empty($el)) {
+            return null;
+        } else {
+            return $el->textContent;
+        }
+    }
+
+    /**
+     * Get the content of an atom:entry-like object
+     *
+     * @param DOMElement $element The element to examine.
+     *
+     * @return string unencoded HTML content of the element, like "This -&lt; is <b>HTML</b>."
+     *
+     * @todo handle remote content
+     * @todo handle embedded XML mime types
+     * @todo handle base64-encoded non-XML and non-text mime types
+     */
+
+    static function getContent($element)
+    {
+        $contentEl = ActivityUtils::child($element, self::CONTENT);
+
+        if (!empty($contentEl)) {
+
+            $src  = $contentEl->getAttribute(self::SRC);
+
+            if (!empty($src)) {
+                throw new ClientException(_("Can't handle remote content yet."));
+            }
+
+            $type = $contentEl->getAttribute(self::TYPE);
+
+            // slavishly following http://atompub.org/rfc4287.html#rfc.section.4.1.3.3
+
+            if ($type == 'text') {
+                return $contentEl->textContent;
+            } else if ($type == 'html') {
+                $text = $contentEl->textContent;
+                return htmlspecialchars_decode($text, ENT_QUOTES);
+            } else if ($type == 'xhtml') {
+                $divEl = ActivityUtils::child($contentEl, 'div');
+                if (empty($divEl)) {
+                    return null;
+                }
+                $doc = $divEl->ownerDocument;
+                $text = '';
+                $children = $divEl->childNodes;
+
+                for ($i = 0; $i < $children->length; $i++) {
+                    $child = $children->item($i);
+                    $text .= $doc->saveXML($child);
+                }
+                return trim($text);
+            } else if (in_array(array('text/xml', 'application/xml'), $type) ||
+                       preg_match('#(+|/)xml$#', $type)) {
+                throw new ClientException(_("Can't handle embedded XML content yet."));
+            } else if (strncasecmp($type, 'text/', 5)) {
+                return $contentEl->textContent;
+            } else {
+                throw new ClientException(_("Can't handle embedded Base64 content yet."));
+            }
+        }
+    }
+}
+
+/**
+ * A noun-ish thing in the activity universe
+ *
+ * The activity streams spec talks about activity objects, while also having
+ * a tag activity:object, which is in fact an activity object. Aaaaaah!
+ *
+ * This is just a thing in the activity universe. Can be the subject, object,
+ * or indirect object (target!) of an activity verb. Rotten name, and I'm
+ * propagating it. *sigh*
+ *
+ * @category  OStatus
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+class ActivityObject
+{
+    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!
+
+    // Atom elements we snarf
+
+    const TITLE   = 'title';
+    const SUMMARY = 'summary';
+    const ID      = 'id';
+    const SOURCE  = 'source';
+
+    const NAME  = 'name';
+    const URI   = 'uri';
+    const EMAIL = 'email';
+
+    public $element;
+    public $type;
+    public $id;
+    public $title;
+    public $summary;
+    public $content;
+    public $link;
+    public $source;
+    public $avatar;
+    public $geopoint;
+    public $poco;
+    public $displayName;
+
+    /**
+     * Constructor
+     *
+     * This probably needs to be refactored
+     * to generate a local class (ActivityPerson, ActivityFile, ...)
+     * based on the object type.
+     *
+     * @param DOMElement $element DOM thing to turn into an Activity thing
+     */
+
+    function __construct($element = null)
+    {
+        if (empty($element)) {
+            return;
+        }
+
+        $this->element = $element;
+
+        $this->geopoint = $this->_childContent(
+            $element,
+            ActivityContext::POINT,
+            ActivityContext::GEORSS
+        );
+
+        if ($element->tagName == 'author') {
+
+            $this->type  = self::PERSON; // XXX: is this fair?
+            $this->title = $this->_childContent($element, self::NAME);
+            $this->id    = $this->_childContent($element, self::URI);
+
+            if (empty($this->id)) {
+                $email = $this->_childContent($element, self::EMAIL);
+                if (!empty($email)) {
+                    // XXX: acct: ?
+                    $this->id = 'mailto:'.$email;
+                }
+            }
+
+        } else {
+
+            $this->type = $this->_childContent($element, Activity::OBJECTTYPE,
+                                               Activity::SPEC);
+
+            if (empty($this->type)) {
+                $this->type = ActivityObject::NOTE;
+            }
+
+            $this->id      = $this->_childContent($element, self::ID);
+            $this->title   = $this->_childContent($element, self::TITLE);
+            $this->summary = $this->_childContent($element, self::SUMMARY);
+
+            $this->source  = $this->_getSource($element);
+
+            $this->content = ActivityUtils::getContent($element);
+
+            $this->link = ActivityUtils::getPermalink($element);
+
+        }
+
+        // Some per-type attributes...
+        if ($this->type == self::PERSON || $this->type == self::GROUP) {
+            $this->displayName = $this->title;
+
+            // @fixme we may have multiple avatars with different resolutions specified
+            $this->avatar = ActivityUtils::getLink($element, 'avatar');
+
+            $this->poco = new PoCo($element);
+        }
+    }
+
+    private function _childContent($element, $tag, $namespace=ActivityUtils::ATOM)
+    {
+        return ActivityUtils::childContent($element, $tag, $namespace);
+    }
+
+    // Try to get a unique id for the source feed
+
+    private function _getSource($element)
+    {
+        $sourceEl = ActivityUtils::child($element, 'source');
+
+        if (empty($sourceEl)) {
+            return null;
+        } else {
+            $href = ActivityUtils::getLink($sourceEl, 'self');
+            if (!empty($href)) {
+                return $href;
+            } else {
+                return ActivityUtils::childContent($sourceEl, 'id');
+            }
+        }
+    }
+
+    static function fromNotice($notice)
+    {
+        $object = new ActivityObject();
+
+        $object->type    = ActivityObject::NOTE;
+
+        $object->id      = $notice->uri;
+        $object->title   = $notice->content;
+        $object->content = $notice->rendered;
+        $object->link    = $notice->bestUrl();
+
+        return $object;
+    }
+
+    static function fromProfile($profile)
+    {
+        $object = new ActivityObject();
+
+        $object->type   = ActivityObject::PERSON;
+        $object->id     = $profile->getUri();
+        $object->title  = $profile->getBestName();
+        $object->link   = $profile->profileurl;
+        $object->avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
+
+        if (isset($profile->lat) && isset($profile->lon)) {
+            $object->geopoint = (float)$profile->lat . ' ' . (float)$profile->lon;
+        }
+
+        $object->poco = PoCo::fromProfile($profile);
+
+        return $object;
+    }
+
+    function asString($tag='activity:object')
+    {
+        $xs = new XMLStringer(true);
+
+        $xs->elementStart($tag);
+
+        $xs->element('activity:object-type', null, $this->type);
+
+        $xs->element(self::ID, null, $this->id);
+
+        if (!empty($this->title)) {
+            $xs->element(self::TITLE, null, $this->title);
+        }
+
+        if (!empty($this->summary)) {
+            $xs->element(self::SUMMARY, null, $this->summary);
+        }
+
+        if (!empty($this->content)) {
+            // XXX: assuming HTML content here
+            $xs->element(ActivityUtils::CONTENT, array('type' => 'html'), $this->content);
+        }
+
+        if (!empty($this->link)) {
+            $xs->element(
+                'link',
+                array(
+                    'rel' => 'alternate',
+                    'type' => 'text/html',
+                    'href' => $this->link
+                ),
+                null
+            );
+        }
+
+        if ($this->type == ActivityObject::PERSON
+            || $this->type == ActivityObject::GROUP) {
+            $xs->element(
+                'link', array(
+                    'type' => empty($this->avatar) ? 'image/png' : $this->avatar->mediatype,
+                    'rel'  => 'avatar',
+                    'href' => empty($this->avatar)
+                    ? Avatar::defaultImage(AVATAR_PROFILE_SIZE)
+                    : $this->avatar->displayUrl()
+                ),
+                null
+            );
+        }
+
+        if (!empty($this->geopoint)) {
+            $xs->element(
+                'georss:point',
+                null,
+                $this->geopoint
+            );
+        }
+
+        if (!empty($this->poco)) {
+            $xs->raw($this->poco->asString());
+        }
+
+        $xs->elementEnd($tag);
+
+        return $xs->getString();
+    }
+}
+
+/**
+ * Utility class to hold a bunch of constant defining default verb types
+ *
+ * @category  OStatus
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+class ActivityVerb
+{
+    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';
+
+    // Custom OStatus verbs for the flipside until they're standardized
+    const DELETE     = 'http://ostatus.org/schema/1.0/unfollow';
+    const UNFAVORITE = 'http://ostatus.org/schema/1.0/unfavorite';
+    const UNFOLLOW   = 'http://ostatus.org/schema/1.0/unfollow';
+    const LEAVE      = 'http://ostatus.org/schema/1.0/leave';
+
+    // For simple profile-update pings; no content to share.
+    const UPDATE_PROFILE = 'http://ostatus.org/schema/1.0/update-profile';
+}
+
+class ActivityContext
+{
+    public $replyToID;
+    public $replyToUrl;
+    public $location;
+    public $attention = array();
+    public $conversation;
+
+    const THR     = 'http://purl.org/syndication/thread/1.0';
+    const GEORSS  = 'http://www.georss.org/georss';
+    const OSTATUS = 'http://ostatus.org/schema/1.0';
+
+    const INREPLYTO = 'in-reply-to';
+    const REF       = 'ref';
+    const HREF      = 'href';
+
+    const POINT     = 'point';
+
+    const ATTENTION    = 'ostatus:attention';
+    const CONVERSATION = 'ostatus:conversation';
+
+    function __construct($element)
+    {
+        $replyToEl = ActivityUtils::child($element, self::INREPLYTO, self::THR);
+
+        if (!empty($replyToEl)) {
+            $this->replyToID  = $replyToEl->getAttribute(self::REF);
+            $this->replyToUrl = $replyToEl->getAttribute(self::HREF);
+        }
+
+        $this->location = $this->getLocation($element);
+
+        $this->conversation = ActivityUtils::getLink($element, self::CONVERSATION);
+
+        // Multiple attention links allowed
+
+        $links = $element->getElementsByTagNameNS(ActivityUtils::ATOM, ActivityUtils::LINK);
+
+        for ($i = 0; $i < $links->length; $i++) {
+
+            $link = $links->item($i);
+
+            $linkRel = $link->getAttribute(ActivityUtils::REL);
+
+            if ($linkRel == self::ATTENTION) {
+                $this->attention[] = $link->getAttribute(self::HREF);
+            }
+        }
+    }
+
+    /**
+     * 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($dom)
+    {
+        $points = $dom->getElementsByTagNameNS(self::GEORSS, self::POINT);
+
+        for ($i = 0; $i < $points->length; $i++) {
+            $point = $points->item($i)->textContent;
+            return self::locationFromPoint($point);
+        }
+
+        return null;
+    }
+
+    // XXX: Move to ActivityUtils or Location?
+    static function locationFromPoint($point)
+    {
+        $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 point");
+                return Location::fromLatLon($lat, $lon);
+            }
+        }
+        common_log(LOG_ERR, "Ignoring bogus georss:point value $point");
+        return null;
+    }
+}
+
+/**
+ * An activity in the ActivityStrea.ms world
+ *
+ * An activity is kind of like a sentence: someone did something
+ * to something else.
+ *
+ * 'someone' is the 'actor'; 'did something' is the verb;
+ * 'something else' is the object.
+ *
+ * @category  OStatus
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+class Activity
+{
+    const SPEC   = 'http://activitystrea.ms/spec/1.0/';
+    const SCHEMA = 'http://activitystrea.ms/schema/1.0/';
+
+    const VERB       = 'verb';
+    const OBJECT     = 'object';
+    const ACTOR      = 'actor';
+    const SUBJECT    = 'subject';
+    const OBJECTTYPE = 'object-type';
+    const CONTEXT    = 'context';
+    const TARGET     = 'target';
+
+    const ATOM = 'http://www.w3.org/2005/Atom';
+
+    const AUTHOR    = 'author';
+    const PUBLISHED = 'published';
+    const UPDATED   = 'updated';
+
+    public $actor;   // an ActivityObject
+    public $verb;    // a string (the URL)
+    public $object;  // an ActivityObject
+    public $target;  // an ActivityObject
+    public $context; // an ActivityObject
+    public $time;    // Time of the activity
+    public $link;    // an ActivityObject
+    public $entry;   // the source entry
+    public $feed;    // the source feed
+
+    public $summary; // summary of activity
+    public $content; // HTML content of activity
+    public $id;      // ID of the activity
+    public $title;   // title of the activity
+    public $categories = array(); // list of AtomCategory objects
+
+    /**
+     * Turns a regular old Atom <entry> into a magical activity
+     *
+     * @param DOMElement $entry Atom entry to poke at
+     * @param DOMElement $feed  Atom feed, for context
+     */
+
+    function __construct($entry = null, $feed = null)
+    {
+        if (is_null($entry)) {
+            return;
+        }
+
+        $this->entry = $entry;
+        $this->feed  = $feed;
+
+        $pubEl = $this->_child($entry, self::PUBLISHED, self::ATOM);
+
+        if (!empty($pubEl)) {
+            $this->time = strtotime($pubEl->textContent);
+        } else {
+            // XXX technically an error; being liberal. Good idea...?
+            $updateEl = $this->_child($entry, self::UPDATED, self::ATOM);
+            if (!empty($updateEl)) {
+                $this->time = strtotime($updateEl->textContent);
+            } else {
+                $this->time = null;
+            }
+        }
+
+        $this->link = ActivityUtils::getPermalink($entry);
+
+        $verbEl = $this->_child($entry, self::VERB);
+
+        if (!empty($verbEl)) {
+            $this->verb = trim($verbEl->textContent);
+        } else {
+            $this->verb = ActivityVerb::POST;
+            // XXX: do other implied stuff here
+        }
+
+        $objectEl = $this->_child($entry, self::OBJECT);
+
+        if (!empty($objectEl)) {
+            $this->object = new ActivityObject($objectEl);
+        } else {
+            $this->object = new ActivityObject($entry);
+        }
+
+        $actorEl = $this->_child($entry, self::ACTOR);
+
+        if (!empty($actorEl)) {
+
+            $this->actor = new ActivityObject($actorEl);
+
+        } else if (!empty($feed) &&
+                   $subjectEl = $this->_child($feed, self::SUBJECT)) {
+
+            $this->actor = new ActivityObject($subjectEl);
+
+        } else if ($authorEl = $this->_child($entry, self::AUTHOR, self::ATOM)) {
+
+            $this->actor = new ActivityObject($authorEl);
+
+        } else if (!empty($feed) && $authorEl = $this->_child($feed, self::AUTHOR,
+                                                              self::ATOM)) {
+
+            $this->actor = new ActivityObject($authorEl);
+        }
+
+        $contextEl = $this->_child($entry, self::CONTEXT);
+
+        if (!empty($contextEl)) {
+            $this->context = new ActivityContext($contextEl);
+        } else {
+            $this->context = new ActivityContext($entry);
+        }
+
+        $targetEl = $this->_child($entry, self::TARGET);
+
+        if (!empty($targetEl)) {
+            $this->target = new ActivityObject($targetEl);
+        }
+
+        $this->summary = ActivityUtils::childContent($entry, 'summary');
+        $this->id      = ActivityUtils::childContent($entry, 'id');
+        $this->content = ActivityUtils::getContent($entry);
+
+        $catEls = $entry->getElementsByTagNameNS(self::ATOM, 'category');
+        if ($catEls) {
+            for ($i = 0; $i < $catEls->length; $i++) {
+                $catEl = $catEls->item($i);
+                $this->categories[] = new AtomCategory($catEl);
+            }
+        }
+    }
+
+    /**
+     * Returns an Atom <entry> based on this activity
+     *
+     * @return DOMElement Atom entry
+     */
+
+    function toAtomEntry()
+    {
+        return null;
+    }
+
+    function asString($namespace=false)
+    {
+        $xs = new XMLStringer(true);
+
+        if ($namespace) {
+            $attrs = array('xmlns' => 'http://www.w3.org/2005/Atom',
+                           'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/',
+                           'xmlns:georss' => 'http://www.georss.org/georss',
+                           'xmlns:ostatus' => 'http://ostatus.org/schema/1.0',
+                           'xmlns:poco' => 'http://portablecontacts.net/spec/1.0');
+        } else {
+            $attrs = array();
+        }
+
+        $xs->elementStart('entry', $attrs);
+
+        $xs->element('id', null, $this->id);
+        $xs->element('title', null, $this->title);
+        $xs->element('published', null, common_date_iso8601($this->time));
+        $xs->element('content', array('type' => 'html'), $this->content);
+
+        if (!empty($this->summary)) {
+            $xs->element('summary', null, $this->summary);
+        }
+
+        if (!empty($this->link)) {
+            $xs->element('link', array('rel' => 'alternate',
+                                       'type' => 'text/html'),
+                         $this->link);
+        }
+
+        // XXX: add context
+
+        $xs->elementStart('author');
+        $xs->element('uri', array(), $this->actor->id);
+        if ($this->actor->title) {
+            $xs->element('name', array(), $this->actor->title);
+        }
+        $xs->elementEnd('author');
+        $xs->raw($this->actor->asString('activity:actor'));
+
+        $xs->element('activity:verb', null, $this->verb);
+
+        if ($this->object) {
+            $xs->raw($this->object->asString());
+        }
+
+        if ($this->target) {
+            $xs->raw($this->target->asString('activity:target'));
+        }
+
+        foreach ($this->categories as $cat) {
+            $xs->raw($cat->asString());
+        }
+
+        $xs->elementEnd('entry');
+
+        return $xs->getString();
+    }
+
+    private function _child($element, $tag, $namespace=self::SPEC)
+    {
+        return ActivityUtils::child($element, $tag, $namespace);
+    }
+}
+
+class AtomCategory
+{
+    public $term;
+    public $scheme;
+    public $label;
+
+    function __construct($element=null)
+    {
+        if ($element && $element->attributes) {
+            $this->term = $this->extract($element, 'term');
+            $this->scheme = $this->extract($element, 'scheme');
+            $this->label = $this->extract($element, 'label');
+        }
+    }
+
+    protected function extract($element, $attrib)
+    {
+        $node = $element->attributes->getNamedItemNS(Activity::ATOM, $attrib);
+        if ($node) {
+            return trim($node->textContent);
+        }
+        $node = $element->attributes->getNamedItem($attrib);
+        if ($node) {
+            return trim($node->textContent);
+        }
+        return null;
+    }
+
+    function asString()
+    {
+        $attribs = array();
+        if ($this->term !== null) {
+            $attribs['term'] = $this->term;
+        }
+        if ($this->scheme !== null) {
+            $attribs['scheme'] = $this->scheme;
+        }
+        if ($this->label !== null) {
+            $attribs['label'] = $this->label;
+        }
+        $xs = new XMLStringer();
+        $xs->element('category', $attribs);
+        return $xs->asString();
+    }
+}
index f8197521672264a8ed8d7ae5e06aa7e89bc1071b..d79dc327edef80a7b1eecb3886f3b2364e0ffbd5 100644 (file)
@@ -77,6 +77,7 @@ class ApiAction extends Action
 
     function prepare($args)
     {
+        StatusNet::setApi(true); // reduce exception reports to aid in debugging
         parent::prepare($args);
 
         $this->format   = $this->arg('format');
@@ -357,7 +358,7 @@ class ApiAction extends Action
         $entry['link'] = common_local_url('shownotice', array('notice' => $notice->id));
         $entry['published'] = common_date_iso8601($notice->created);
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
         $entry['id'] = "tag:$taguribase:$entry[link]";
 
         $entry['updated'] = $entry['published'];
@@ -801,7 +802,7 @@ class ApiAction extends Action
         $entry['link'] = common_local_url('showmessage', array('message' => $message->id));
         $entry['published'] = common_date_iso8601($message->created);
 
-        $taguribase = common_config('integration', 'taguri');
+        $taguribase = TagURI::base();
 
         $entry['id'] = "tag:$taguribase:$entry[link]";
         $entry['updated'] = $entry['published'];
@@ -1102,7 +1103,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');
 
@@ -1153,7 +1154,6 @@ class ApiAction extends Action
         $this->elementStart('feed', array('xmlns' => 'http://www.w3.org/2005/Atom',
                                           'xml:lang' => 'en-US',
                                           'xmlns:thr' => 'http://purl.org/syndication/thread/1.0'));
-        Event::handle('StartApiAtom', array($this));
     }
 
     function endTwitterAtom()
@@ -1218,7 +1218,12 @@ class ApiAction extends Action
                 return User_group::staticGet($this->arg('id'));
             } else if ($this->arg('id')) {
                 $nickname = common_canonical_nickname($this->arg('id'));
-                return User_group::staticGet('nickname', $nickname);
+                $local = Local_group::staticGet('nickname', $nickname);
+                if (empty($local)) {
+                    return null;
+                } else {
+                    return User_group::staticGet('id', $local->id);
+                }
             } else if ($this->arg('group_id')) {
                 // This is to ensure that a non-numeric user_id still
                 // overrides screen_name even if it doesn't get used
@@ -1227,14 +1232,24 @@ class ApiAction extends Action
                 }
             } else if ($this->arg('group_name')) {
                 $nickname = common_canonical_nickname($this->arg('group_name'));
-                return User_group::staticGet('nickname', $nickname);
+                $local = Local_group::staticGet('nickname', $nickname);
+                if (empty($local)) {
+                    return null;
+                } else {
+                    return User_group::staticGet('id', $local->id);
+                }
             }
 
         } else if (is_numeric($id)) {
             return User_group::staticGet($id);
         } else {
             $nickname = common_canonical_nickname($id);
-            return User_group::staticGet('nickname', $nickname);
+            $local = Local_group::staticGet('nickname', $nickname);
+            if (empty($local)) {
+                return null;
+            } else {
+                return User_group::staticGet('id', $local->id);
+            }
         }
     }
 
@@ -1320,4 +1335,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 (file)
index 0000000..f8f16d5
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for building / manipulating an Atom entry in memory
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class Atom10EntryException extends Exception
+{
+}
+
+/**
+ * Class for manipulating an Atom entry in memory. Get the entry as an XML
+ * string with Atom10Entry::getString().
+ *
+ * @category Feed
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class Atom10Entry extends XMLStringer
+{
+    private $namespaces;
+    private $categories;
+    private $content;
+    private $contributors;
+    private $id;
+    private $links;
+    private $published;
+    private $rights;
+    private $source;
+    private $summary;
+    private $title;
+
+    function __construct($indent = true) {
+        parent::__construct($indent);
+        $this->namespaces = array();
+    }
+
+    function addNamespace($namespace, $uri)
+    {
+        $ns = array($namespace => $uri);
+        $this->namespaces = array_merge($this->namespaces, $ns);
+    }
+
+    function initEntry()
+    {
+
+    }
+
+    function endEntry()
+    {
+
+    }
+
+    /**
+     * Check that all required elements have been set, etc.
+     * Throws an Atom10EntryException if something's missing.
+     *
+     * @return void
+     */
+    function validate()
+    {
+
+    }
+
+    function getString()
+    {
+        $this->validate();
+
+        $this->initEntry();
+        $this->renderEntries();
+        $this->endEntry();
+
+        return $this->xw->outputMemory();
+    }
+
+}
\ No newline at end of file
diff --git a/lib/atom10feed.php b/lib/atom10feed.php
new file mode 100644 (file)
index 0000000..8842840
--- /dev/null
@@ -0,0 +1,305 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for building an Atom feed in memory
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET'))
+{
+    exit(1);
+}
+
+class Atom10FeedException extends Exception
+{
+}
+
+/**
+ * Class for building an Atom feed in memory.  Get the finished doc
+ * as a string with Atom10Feed::getString().
+ *
+ * @category Feed
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class Atom10Feed extends XMLStringer
+{
+    public  $xw;
+    private $namespaces;
+    private $authors;
+    private $subject;
+    private $categories;
+    private $contributors;
+    private $generator;
+    private $icon;
+    private $links;
+    private $logo;
+    private $rights;
+    private $subtitle;
+    private $title;
+    private $published;
+    private $updated;
+    private $entries;
+
+    /**
+     * Constructor
+     *
+     * @param boolean $indent  flag to turn indenting on or off
+     *
+     * @return void
+     */
+    function __construct($indent = true) {
+        parent::__construct($indent);
+        $this->namespaces = array();
+        $this->authors    = array();
+        $this->links      = array();
+        $this->entries    = array();
+        $this->addNamespace('', '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 (isset($uri)) {
+            $xs->element('uri', null, $uri);
+        }
+
+        if (isset($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');
+        foreach ($this->namespaces as $prefix => $uri) {
+            if ($prefix == '') {
+                $attr = 'xmlns';
+            } else {
+                $attr = 'xmlns:' . $prefix;
+            }
+            $commonAttrs[$attr] = $uri;
+        }
+        $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->renderAuthors();
+
+        $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()
+    {
+        if (Event::handle('StartApiAtom', array($this))) {
+
+            $this->validate();
+            $this->initFeed();
+
+            if (!empty($this->subject)) {
+                $this->raw($this->subject);
+            }
+
+            $this->renderEntries();
+            $this->endFeed();
+
+            Event::handle('EndApiAtom', array($this));
+        }
+
+        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/atomgroupnoticefeed.php b/lib/atomgroupnoticefeed.php
new file mode 100644 (file)
index 0000000..52ee4c7
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for building an in-memory Atom feed for a particular group's
+ * timeline.
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET'))
+{
+    exit(1);
+}
+
+/**
+ * Class for group notice feeds.  May contains a reference to the group.
+ *
+ * @category Feed
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class AtomGroupNoticeFeed extends AtomNoticeFeed
+{
+    private $group;
+
+    /**
+     * Constructor
+     *
+     * @param Group   $group   the group for the feed (optional)
+     * @param boolean $indent  flag to turn indenting on or off
+     *
+     * @return void
+     */
+    function __construct($group = null, $indent = true) {
+        parent::__construct($indent);
+        $this->group = $group;
+    }
+
+    function getGroup()
+    {
+        return $this->group;
+    }
+
+}
diff --git a/lib/atomnoticefeed.php b/lib/atomnoticefeed.php
new file mode 100644 (file)
index 0000000..d2bf2a4
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for building an Atom feed from a collection of notices
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET'))
+{
+    exit(1);
+}
+
+/**
+ * Class for creating a feed that represents a collection of notices. Builds the
+ * feed in memory. Get the feed as a string with AtomNoticeFeed::getString().
+ *
+ * @category Feed
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class AtomNoticeFeed extends Atom10Feed
+{
+    function __construct($indent = true) {
+        parent::__construct($indent);
+
+        // Feeds containing notice info use these namespaces
+
+        $this->addNamespace(
+            'thr',
+            'http://purl.org/syndication/thread/1.0'
+        );
+
+        $this->addNamespace(
+            'georss',
+            'http://www.georss.org/georss'
+        );
+
+        $this->addNamespace(
+            'activity',
+            'http://activitystrea.ms/spec/1.0/'
+        );
+
+        $this->addNamespace(
+            'poco',
+            'http://portablecontacts.net/spec/1.0'
+        );
+
+        // XXX: What should the uri be?
+        $this->addNamespace(
+            '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/atomusernoticefeed.php b/lib/atomusernoticefeed.php
new file mode 100644 (file)
index 0000000..2ad8de4
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class for building an in-memory Atom feed for a particular user's
+ * timeline.
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Feed
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET'))
+{
+    exit(1);
+}
+
+/**
+ * Class for user notice feeds.  May contain a reference to the user.
+ *
+ * @category Feed
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class AtomUserNoticeFeed extends AtomNoticeFeed
+{
+    private $user;
+
+    /**
+     * Constructor
+     *
+     * @param User    $user    the user for the feed (optional)
+     * @param boolean $indent  flag to turn indenting on or off
+     *
+     * @return void
+     */
+
+    function __construct($user = null, $indent = true) {
+        parent::__construct($indent);
+        $this->user = $user;
+        if (!empty($user)) {
+            $profile = $user->getProfile();
+            $this->addAuthor($profile->nickname, $user->uri);
+        }
+    }
+
+    function getUser()
+    {
+        return $this->user;
+    }
+}
index b3ec7534f5f0c92bf1d01a24ead2ead603b4ebed..c09a1dd9f27c75676eb24f634f6c0378547c798d 100644 (file)
@@ -47,6 +47,8 @@ class Cache
     var $_items   = array();
     static $_inst = null;
 
+    const COMPRESSED = 1;
+
     /**
      * Singleton constructor
      *
@@ -133,7 +135,7 @@ class Cache
      *
      * @param string  $key    The key to use for lookups
      * @param string  $value  The value to store
-     * @param integer $flag   Flags to use, mostly ignored
+     * @param integer $flag   Flags to use, may include Cache::COMPRESSED
      * @param integer $expiry Expiry value, mostly ignored
      *
      * @return boolean success flag
index 2a51fd6872835781c424cf7e718f226e73b2a79f..ea7b60372d96542dd134069d7a94b67b4d40756c 100644 (file)
@@ -548,12 +548,19 @@ class SubCommand extends Command
             return;
         }
 
-        $result = subs_subscribe_user($this->user, $this->other);
+        $otherUser = User::staticGet('nickname', $this->other);
 
-        if ($result == 'true') {
+        if (empty($otherUser)) {
+            $channel->error($this->user, _('No such user'));
+            return;
+        }
+
+        try {
+            Subscription::start($this->user->getProfile(),
+                                $otherUser->getProfile());
             $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other));
-        } else {
-            $channel->error($this->user, $result);
+        } catch (Exception $e) {
+            $channel->error($this->user, $e->getMessage());
         }
     }
 }
@@ -576,12 +583,18 @@ class UnsubCommand extends Command
             return;
         }
 
-        $result=subs_unsubscribe_user($this->user, $this->other);
+        $otherUser = User::staticGet('nickname', $this->other);
 
-        if ($result) {
+        if (empty($otherUser)) {
+            $channel->error($this->user, _('No such user'));
+        }
+
+        try {
+            Subscription::cancel($this->user->getProfile(),
+                                 $otherUser->getProfile());
             $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other));
-        } else {
-            $channel->error($this->user, $result);
+        } catch (Exception $e) {
+            $channel->error($this->user, $e->getMessage());
         }
     }
 }
index b95cd11752c1281f902c492a2e99da771f778699..68723955ecc93289929d6d81330932a69f259c50 100644 (file)
@@ -123,6 +123,7 @@ require_once INSTALLDIR.'/lib/util.php';
 require_once INSTALLDIR.'/lib/action.php';
 require_once INSTALLDIR.'/lib/mail.php';
 require_once INSTALLDIR.'/lib/subs.php';
+require_once INSTALLDIR.'/lib/activity.php';
 
 require_once INSTALLDIR.'/lib/clientexception.php';
 require_once INSTALLDIR.'/lib/serverexception.php';
index c969c3b337cc5f7d647a57795e834a6dd88219fa..bb7708bfcdfc077750e43e13eba82c55b9da64f7 100644 (file)
@@ -120,11 +120,13 @@ $default =
         'avatar' =>
         array('server' => null,
               'dir' => INSTALLDIR . '/avatar/',
-              'path' => $_path . '/avatar/'),
+              'path' => $_path . '/avatar/',
+              'ssl' => null),
         'background' =>
         array('server' => null,
               'dir' => INSTALLDIR . '/background/',
-              'path' => $_path . '/background/'),
+              'path' => $_path . '/background/',
+              'ssl' => null),
         'public' =>
         array('localonly' => true,
               'blacklist' => array(),
@@ -132,10 +134,12 @@ $default =
         'theme' =>
         array('server' => null,
               'dir' => null,
-              'path'=> null),
+              'path'=> null,
+              'ssl' => null),
         'javascript' =>
         array('server' => null,
-              'path'=> null),
+              'path'=> null,
+              'ssl' => null),
         'throttle' =>
         array('enabled' => false, // whether to throttle edits; false by default
               'count' => 20, // number of allowed messages in timespan
@@ -171,7 +175,7 @@ $default =
         array('enabled' => false),
         'integration' =>
         array('source' => 'StatusNet', # source attribute for Twitter
-              'taguri' => $_server.',2009'), # base for tag URIs
+              'taguri' => null), # base for tag URIs
         'twitter' =>
         array('enabled'       => true,
               'consumer_key'    => null,
@@ -193,6 +197,7 @@ $default =
         array('server' => null,
               'dir' => INSTALLDIR . '/file/',
               'path' => $_path . '/file/',
+              'ssl' => null,
               'supported' => array('image/png',
                                    'image/jpeg',
                                    'image/gif',
index 4477468d0a38d523c26163b3afcc987805bf3617..d2be7a92c72488d846374bb27413f103490fd34d 100644 (file)
@@ -63,31 +63,7 @@ class DistribQueueHandler
         // XXX: do we need to change this for remote users?
 
         try {
-            $notice->saveTags();
-        } catch (Exception $e) {
-            $this->logit($notice, $e);
-        }
-
-        try {
-            $groups = $notice->saveGroups();
-        } catch (Exception $e) {
-            $this->logit($notice, $e);
-        }
-
-        try {
-            $recipients = $notice->saveReplies();
-        } catch (Exception $e) {
-            $this->logit($notice, $e);
-        }
-
-        try {
-            $notice->addToInboxes($groups, $recipients);
-        } catch (Exception $e) {
-            $this->logit($notice, $e);
-        }
-
-        try {
-            $notice->saveUrls();
+            $notice->addToInboxes();
         } catch (Exception $e) {
             $this->logit($notice, $e);
         }
@@ -107,7 +83,7 @@ class DistribQueueHandler
 
         return true;
     }
-    
+
     protected function logit($notice, $e)
     {
         common_log(LOG_ERR, "Distrib queue exception saving notice $notice->id: " .
index 87a4d913b41b1287f7af821926c5a8dea82a8439..a6a29119f7f612046f2f2c0075167c5d03acef84 100644 (file)
@@ -56,6 +56,7 @@ class ErrorAction extends Action
 
         $this->code = $code;
         $this->message = $message;
+        $this->minimal = StatusNet::isApi();
 
         // XXX: hack alert: usually we aren't going to
         // call this page directly, but because it's
@@ -102,7 +103,14 @@ class ErrorAction extends Action
 
     function showPage()
     {
-        parent::showPage();
+        if ($this->minimal) {
+            // Even more minimal -- we're in a machine API
+            // and don't want to flood the output.
+            $this->extraHeaders();
+            $this->showContent();
+        } else {
+            parent::showPage();
+        }
 
         // We don't want to have any more output after this
         exit();
index 99bff9cdc031769b31e74960703111388148fcfe..854bc34e2c3a5ed8f9e86b9ff50cba1e0d6c65d9 100644 (file)
@@ -105,6 +105,7 @@ class GroupList extends Widget
                                          'alt' =>
                                          ($this->group->fullname) ? $this->group->fullname :
                                          $this->group->nickname));
+        $this->out->text(' ');
         $hasFN = ($this->group->fullname) ? 'nickname' : 'fn org nickname';
         $this->out->elementStart('span', $hasFN);
         $this->out->raw($this->highlight($this->group->nickname));
@@ -112,16 +113,19 @@ class GroupList extends Widget
         $this->out->elementEnd('a');
 
         if ($this->group->fullname) {
+            $this->out->text(' ');
             $this->out->elementStart('span', 'fn org');
             $this->out->raw($this->highlight($this->group->fullname));
             $this->out->elementEnd('span');
         }
         if ($this->group->location) {
+            $this->out->text(' ');
             $this->out->elementStart('span', 'label');
             $this->out->raw($this->highlight($this->group->location));
             $this->out->elementEnd('span');
         }
         if ($this->group->homepage) {
+            $this->out->text(' ');
             $this->out->elementStart('a', array('href' => $this->group->homepage,
                                                 'class' => 'url'));
             $this->out->raw($this->highlight($this->group->homepage));
index 7327f9e1a06610b34dba5b87a8fca55e03be685e..3b0b3029dd19a87b7e6aead2427d2ae87cce0b71 100644 (file)
@@ -85,9 +85,9 @@ class GroupSection extends Section
                                             'href' => $group->homeUrl(),
                                             'rel' => 'contact group',
                                             'class' => 'url'));
+        $this->out->text(' ');
         $logo = ($group->stream_logo) ?
           $group->stream_logo : User_group::defaultLogo(AVATAR_STREAM_SIZE);
-
         $this->out->element('img', array('src' => $logo,
                                          'width' => AVATAR_MINI_SIZE,
                                          'height' => AVATAR_MINI_SIZE,
@@ -95,6 +95,7 @@ class GroupSection extends Section
                                          'alt' =>  ($group->fullname) ?
                                          $group->fullname :
                                          $group->nickname));
+        $this->out->text(' ');
         $this->out->element('span', 'fn org nickname', $group->nickname);
         $this->out->elementEnd('a');
         $this->out->elementEnd('span');
index 4a88337bc509b66429efe6ae4181bcc9953bedef..7315fe2ad44d34c43c107af91da9bbaa6e6c595e 100644 (file)
@@ -376,9 +376,20 @@ class HTMLOutputter extends XMLOutputter
                     $server = common_config('site', 'server');
                 }
 
-                // XXX: protocol
+                $ssl = common_config('javascript', 'ssl');
+
+                if (is_null($ssl)) { // null -> guess
+                    if (common_config('site', 'ssl') == 'always' &&
+                        !common_config('javascript', 'server')) {
+                        $ssl = true;
+                    } else {
+                        $ssl = false;
+                    }
+                }
+
+                $protocol = ($ssl) ? 'https' : 'http';
 
-                $src = 'http://'.$server.$path.$src . '?version=' . STATUSNET_VERSION;
+                $src = $protocol.'://'.$server.$path.$src . '?version=' . STATUSNET_VERSION;
             }
 
             $this->element('script', array('type' => $type,
index 3f82620761c6eef8d953cc11fa9611addad5ba96..4c3af8d7dd950fd1b23a4988e3710f8148f93ef8 100644 (file)
@@ -81,12 +81,13 @@ class HTTPResponse extends HTTP_Request2_Response
     }
 
     /**
-     * Check if the response is OK, generally a 200 status code.
+     * Check if the response is OK, generally a 200 or other 2xx status code.
      * @return bool
      */
     function isOk()
     {
-        return ($this->getStatus() == 200);
+        $status = $this->getStatus();
+        return ($status >= 200 && $status < 300);
     }
 }
 
diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php
new file mode 100644 (file)
index 0000000..485096a
--- /dev/null
@@ -0,0 +1,538 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Database schema utilities
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Database
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Class representing the database schema
+ *
+ * A class representing the database schema. Can be used to
+ * manipulate the schema -- especially for plugins and upgrade
+ * utilities.
+ *
+ * @category Database
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+class MysqlSchema extends Schema
+{
+    static $_single = null;
+    protected $conn = null;
+
+    /**
+     * Constructor. Only run once for singleton object.
+     */
+
+    protected function __construct()
+    {
+        // XXX: there should be an easier way to do this.
+        $user = new User();
+
+        $this->conn = $user->getDatabaseConnection();
+
+        $user->free();
+
+        unset($user);
+    }
+
+    /**
+     * Main public entry point. Use this to get
+     * the singleton object.
+     *
+     * @return Schema the (single) Schema object
+     */
+
+    static function get()
+    {
+        if (empty(self::$_single)) {
+            self::$_single = new Schema();
+        }
+        return self::$_single;
+    }
+
+    /**
+     * Returns a TableDef object for the table
+     * in the schema with the given name.
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $name Name of the table to get
+     *
+     * @return TableDef tabledef for that table.
+     */
+
+    public function getTableDef($name)
+    {
+        $res = $this->conn->query('DESCRIBE ' . $name);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        $td = new TableDef();
+
+        $td->name    = $name;
+        $td->columns = array();
+
+        $row = array();
+
+        while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
+
+            $cd = new ColumnDef();
+
+            $cd->name = $row['Field'];
+
+            $packed = $row['Type'];
+
+            if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
+                $cd->type = $match[1];
+                $cd->size = $match[2];
+            } else {
+                $cd->type = $packed;
+            }
+
+            $cd->nullable = ($row['Null'] == 'YES') ? true : false;
+            $cd->key      = $row['Key'];
+            $cd->default  = $row['Default'];
+            $cd->extra    = $row['Extra'];
+
+            $td->columns[] = $cd;
+        }
+
+        return $td;
+    }
+
+    /**
+     * Gets a ColumnDef object for a single column.
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $table  name of the table
+     * @param string $column name of the column
+     *
+     * @return ColumnDef definition of the column or null
+     *                   if not found.
+     */
+
+    public function getColumnDef($table, $column)
+    {
+        $td = $this->getTableDef($table);
+
+        foreach ($td->columns as $cd) {
+            if ($cd->name == $column) {
+                return $cd;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Creates a table with the given names and columns.
+     *
+     * @param string $name    Name of the table
+     * @param array  $columns Array of ColumnDef objects
+     *                        for new table.
+     *
+     * @return boolean success flag
+     */
+
+    public function createTable($name, $columns)
+    {
+        $uniques = array();
+        $primary = array();
+        $indices = array();
+
+        $sql = "CREATE TABLE $name (\n";
+
+        for ($i = 0; $i < count($columns); $i++) {
+
+            $cd =& $columns[$i];
+
+            if ($i > 0) {
+                $sql .= ",\n";
+            }
+
+            $sql .= $this->_columnSql($cd);
+
+            switch ($cd->key) {
+            case 'UNI':
+                $uniques[] = $cd->name;
+                break;
+            case 'PRI':
+                $primary[] = $cd->name;
+                break;
+            case 'MUL':
+                $indices[] = $cd->name;
+                break;
+            }
+        }
+
+        if (count($primary) > 0) { // it really should be...
+            $sql .= ",\nconstraint primary key (" . implode(',', $primary) . ")";
+        }
+
+        foreach ($uniques as $u) {
+            $sql .= ",\nunique index {$name}_{$u}_idx ($u)";
+        }
+
+        foreach ($indices as $i) {
+            $sql .= ",\nindex {$name}_{$i}_idx ($i)";
+        }
+
+        $sql .= "); ";
+
+        common_log(LOG_INFO, $sql);
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a table from the schema
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $name Name of the table to drop
+     *
+     * @return boolean success flag
+     */
+
+    public function dropTable($name)
+    {
+        $res = $this->conn->query("DROP TABLE $name");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Adds an index to a table.
+     *
+     * If no name is provided, a name will be made up based
+     * on the table name and column names.
+     *
+     * Throws an exception on database error, esp. if the table
+     * does not exist.
+     *
+     * @param string $table       Name of the table
+     * @param array  $columnNames Name of columns to index
+     * @param string $name        (Optional) name of the index
+     *
+     * @return boolean success flag
+     */
+
+    public function createIndex($table, $columnNames, $name=null)
+    {
+        if (!is_array($columnNames)) {
+            $columnNames = array($columnNames);
+        }
+
+        if (empty($name)) {
+            $name = "$table_".implode("_", $columnNames)."_idx";
+        }
+
+        $res = $this->conn->query("ALTER TABLE $table ".
+                                   "ADD INDEX $name (".
+                                   implode(",", $columnNames).")");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a named index from a table.
+     *
+     * @param string $table name of the table the index is on.
+     * @param string $name  name of the index
+     *
+     * @return boolean success flag
+     */
+
+    public function dropIndex($table, $name)
+    {
+        $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Adds a column to a table
+     *
+     * @param string    $table     name of the table
+     * @param ColumnDef $columndef Definition of the new
+     *                             column.
+     *
+     * @return boolean success flag
+     */
+
+    public function addColumn($table, $columndef)
+    {
+        $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Modifies a column in the schema.
+     *
+     * The name must match an existing column and table.
+     *
+     * @param string    $table     name of the table
+     * @param ColumnDef $columndef new definition of the column.
+     *
+     * @return boolean success flag
+     */
+
+    public function modifyColumn($table, $columndef)
+    {
+        $sql = "ALTER TABLE $table MODIFY COLUMN " .
+          $this->_columnSql($columndef);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a column from a table
+     *
+     * The name must match an existing column.
+     *
+     * @param string $table      name of the table
+     * @param string $columnName name of the column to drop
+     *
+     * @return boolean success flag
+     */
+
+    public function dropColumn($table, $columnName)
+    {
+        $sql = "ALTER TABLE $table DROP COLUMN $columnName";
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Ensures that a table exists with the given
+     * name and the given column definitions.
+     *
+     * If the table does not yet exist, it will
+     * create the table. If it does exist, it will
+     * alter the table to match the column definitions.
+     *
+     * @param string $tableName name of the table
+     * @param array  $columns   array of ColumnDef
+     *                          objects for the table
+     *
+     * @return boolean success flag
+     */
+
+    public function ensureTable($tableName, $columns)
+    {
+        // XXX: DB engine portability -> toilet
+
+        try {
+            $td = $this->getTableDef($tableName);
+        } catch (Exception $e) {
+            if (preg_match('/no such table/', $e->getMessage())) {
+                return $this->createTable($tableName, $columns);
+            } else {
+                throw $e;
+            }
+        }
+
+        $cur = $this->_names($td->columns);
+        $new = $this->_names($columns);
+
+        $toadd  = array_diff($new, $cur);
+        $todrop = array_diff($cur, $new);
+        $same   = array_intersect($new, $cur);
+        $tomod  = array();
+
+        foreach ($same as $m) {
+            $curCol = $this->_byName($td->columns, $m);
+            $newCol = $this->_byName($columns, $m);
+
+            if (!$newCol->equals($curCol)) {
+                $tomod[] = $newCol->name;
+            }
+        }
+
+        if (count($toadd) + count($todrop) + count($tomod) == 0) {
+            // nothing to do
+            return true;
+        }
+
+        // For efficiency, we want this all in one
+        // query, instead of using our methods.
+
+        $phrase = array();
+
+        foreach ($toadd as $columnName) {
+            $cd = $this->_byName($columns, $columnName);
+
+            $phrase[] = 'ADD COLUMN ' . $this->_columnSql($cd);
+        }
+
+        foreach ($todrop as $columnName) {
+            $phrase[] = 'DROP COLUMN ' . $columnName;
+        }
+
+        foreach ($tomod as $columnName) {
+            $cd = $this->_byName($columns, $columnName);
+
+            $phrase[] = 'MODIFY COLUMN ' . $this->_columnSql($cd);
+        }
+
+        $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns the array of names from an array of
+     * ColumnDef objects.
+     *
+     * @param array $cds array of ColumnDef objects
+     *
+     * @return array strings for name values
+     */
+
+    private function _names($cds)
+    {
+        $names = array();
+
+        foreach ($cds as $cd) {
+            $names[] = $cd->name;
+        }
+
+        return $names;
+    }
+
+    /**
+     * Get a ColumnDef from an array matching
+     * name.
+     *
+     * @param array  $cds  Array of ColumnDef objects
+     * @param string $name Name of the column
+     *
+     * @return ColumnDef matching item or null if no match.
+     */
+
+    private function _byName($cds, $name)
+    {
+        foreach ($cds as $cd) {
+            if ($cd->name == $name) {
+                return $cd;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Return the proper SQL for creating or
+     * altering a column.
+     *
+     * Appropriate for use in CREATE TABLE or
+     * ALTER TABLE statements.
+     *
+     * @param ColumnDef $cd column to create
+     *
+     * @return string correct SQL for that column
+     */
+
+    private function _columnSql($cd)
+    {
+        $sql = "{$cd->name} ";
+
+        if (!empty($cd->size)) {
+            $sql .= "{$cd->type}({$cd->size}) ";
+        } else {
+            $sql .= "{$cd->type} ";
+        }
+
+        if (!empty($cd->default)) {
+            $sql .= "default {$cd->default} ";
+        } else {
+            $sql .= ($cd->nullable) ? "null " : "not null ";
+        }
+        
+        if (!empty($cd->auto_increment)) {
+            $sql .= " auto_increment ";
+        }
+
+        if (!empty($cd->extra)) {
+            $sql .= "{$cd->extra} ";
+        }
+
+        return $sql;
+    }
+}
index a4a0f2651a190084f67e811fc540f914cecc0050..28a563d875aff8c2e7ce621ba204ada667f9ee77 100644 (file)
@@ -294,6 +294,7 @@ class NoticeListItem extends Widget
         }
         $this->out->elementStart('a', $attrs);
         $this->showAvatar();
+        $this->out->text(' ');
         $this->showNickname();
         $this->out->elementEnd('a');
         $this->out->elementEnd('span');
@@ -379,12 +380,12 @@ class NoticeListItem extends Widget
 
     function showNoticeLink()
     {
-        if($this->notice->is_local == Notice::LOCAL_PUBLIC || $this->notice->is_local == Notice::LOCAL_NONPUBLIC){
-            $noticeurl = common_local_url('shownotice',
-                                      array('notice' => $this->notice->id));
-        }else{
-            $noticeurl = $this->notice->uri;
-        }
+        $noticeurl = $this->notice->bestUrl();
+
+        // above should always return an URL
+
+        assert(!empty($noticeurl));
+
         $this->out->elementStart('a', array('rel' => 'bookmark',
                                             'class' => 'timestamp',
                                             'href' => $noticeurl));
@@ -432,17 +433,20 @@ class NoticeListItem extends Widget
 
         $url  = $location->getUrl();
 
+        $this->out->text(' ');
         $this->out->elementStart('span', array('class' => 'location'));
         $this->out->text(_('at'));
+        $this->out->text(' ');
         if (empty($url)) {
-            $this->out->element('span', array('class' => 'geo',
+            $this->out->element('abbr', array('class' => 'geo',
                                               'title' => $latlon),
                                 $name);
         } else {
-            $this->out->element('a', array('class' => 'geo',
-                                           'title' => $latlon,
-                                           'href' => $url),
+            $this->out->elementStart('a', array('href' => $url));
+            $this->out->element('abbr', array('class' => 'geo',
+                                              'title' => $latlon),
                                 $name);
+            $this->out->elementEnd('a');
         }
         $this->out->elementEnd('span');
     }
@@ -473,9 +477,11 @@ class NoticeListItem extends Widget
     function showNoticeSource()
     {
         if ($this->notice->source) {
+            $this->out->text(' ');
             $this->out->elementStart('span', 'source');
             $this->out->text(_('from'));
             $source_name = _($this->notice->source);
+            $this->out->text(' ');
             switch ($this->notice->source) {
              case 'web':
              case 'xmpp':
@@ -487,30 +493,34 @@ class NoticeListItem extends Widget
                 break;
              default:
 
-                $name = null;
+                $name = $source_name;
                 $url  = null;
 
-                $ns = Notice_source::staticGet($this->notice->source);
-
-                if ($ns) {
-                    $name = $ns->name;
-                    $url  = $ns->url;
-                } else {
-                    $app = Oauth_application::staticGet('name', $this->notice->source);
-                    if ($app) {
-                        $name = $app->name;
-                        $url  = $app->source_url;
+                if (Event::handle('StartNoticeSourceLink', array($this->notice, &$name, &$url, &$title))) {
+                    $ns = Notice_source::staticGet($this->notice->source);
+
+                    if ($ns) {
+                        $name = $ns->name;
+                        $url  = $ns->url;
+                    } else {
+                        $app = Oauth_application::staticGet('name', $this->notice->source);
+                        if ($app) {
+                            $name = $app->name;
+                            $url  = $app->source_url;
+                        }
                     }
                 }
+                Event::handle('EndNoticeSourceLink', array($this->notice, &$name, &$url, &$title));
 
                 if (!empty($name) && !empty($url)) {
                     $this->out->elementStart('span', 'device');
                     $this->out->element('a', array('href' => $url,
-                                                   'rel' => 'external'),
+                                                   'rel' => 'external',
+                                                   'title' => $title),
                                         $name);
                     $this->out->elementEnd('span');
                 } else {
-                    $this->out->element('span', 'device', $source_name);
+                    $this->out->element('span', 'device', $name);
                 }
                 break;
             }
@@ -540,6 +550,7 @@ class NoticeListItem extends Widget
             }
         }
         if ($hasConversation){
+            $this->out->text(' ');
             $convurl = common_local_url('conversation',
                                          array('id' => $this->notice->conversation));
             $this->out->element('a', array('href' => $convurl.'#notice-'.$this->notice->id,
@@ -591,12 +602,14 @@ class NoticeListItem extends Widget
     function showReplyLink()
     {
         if (common_logged_in()) {
+            $this->out->text(' ');
             $reply_url = common_local_url('newnotice',
                                           array('replyto' => $this->profile->nickname, 'inreplyto' => $this->notice->id));
             $this->out->elementStart('a', array('href' => $reply_url,
                                                 'class' => 'notice_reply',
                                                 'title' => _('Reply to this notice')));
             $this->out->text(_('Reply'));
+            $this->out->text(' ');
             $this->out->element('span', 'notice_id', $this->notice->id);
             $this->out->elementEnd('a');
         }
@@ -616,7 +629,7 @@ class NoticeListItem extends Widget
 
         if (!empty($user) &&
             ($todel->profile_id == $user->id || $user->hasRight(Right::DELETEOTHERSNOTICE))) {
-
+            $this->out->text(' ');
             $deleteurl = common_local_url('deletenotice',
                                           array('notice' => $todel->id));
             $this->out->element('a', array('href' => $deleteurl,
@@ -635,6 +648,7 @@ class NoticeListItem extends Widget
     {
         $user = common_current_user();
         if ($user && $user->id != $this->notice->profile_id) {
+            $this->out->text(' ');
             $profile = $user->getProfile();
             if ($profile->hasRepeated($this->notice->id)) {
                 $this->out->element('span', array('class' => 'repeated',
index 24465f8baf1f835ff87f46ce0c19667213e61c51..7157feafc565bd81b30f1cba4d0cee5c4dc18442 100644 (file)
@@ -90,6 +90,7 @@ class NoticeSection extends Section
                                          'alt' =>  ($profile->fullname) ?
                                          $profile->fullname :
                                          $profile->nickname));
+        $this->out->text(' ');
         $this->out->element('span', 'fn nickname', $profile->nickname);
         $this->out->elementEnd('a');
         $this->out->elementEnd('span');
diff --git a/lib/pgsqlschema.php b/lib/pgsqlschema.php
new file mode 100644 (file)
index 0000000..91bc096
--- /dev/null
@@ -0,0 +1,503 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Database schema utilities
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Database
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Class representing the database schema
+ *
+ * A class representing the database schema. Can be used to
+ * manipulate the schema -- especially for plugins and upgrade
+ * utilities.
+ *
+ * @category Database
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+class PgsqlSchema extends Schema
+{
+
+    /**
+     * Returns a TableDef object for the table
+     * in the schema with the given name.
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $name Name of the table to get
+     *
+     * @return TableDef tabledef for that table.
+     */
+
+    public function getTableDef($name)
+    {
+        $res = $this->conn->query("select *, column_default as default, is_nullable as Null, udt_name as Type, column_name AS Field from INFORMATION_SCHEMA.COLUMNS where table_name = '$name'");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        $td = new TableDef();
+
+        $td->name    = $name;
+        $td->columns = array();
+
+        $row = array();
+
+        while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
+//             var_dump($row);
+            $cd = new ColumnDef();
+
+            $cd->name = $row['field'];
+
+            $packed = $row['type'];
+
+            if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
+                $cd->type = $match[1];
+                $cd->size = $match[2];
+            } else {
+                $cd->type = $packed;
+            }
+
+            $cd->nullable = ($row['null'] == 'YES') ? true : false;
+            $cd->key      = $row['Key'];
+            $cd->default  = $row['default'];
+            $cd->extra    = $row['Extra'];
+
+            $td->columns[] = $cd;
+        }
+        return $td;
+    }
+
+    /**
+     * Gets a ColumnDef object for a single column.
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $table  name of the table
+     * @param string $column name of the column
+     *
+     * @return ColumnDef definition of the column or null
+     *                   if not found.
+     */
+
+    public function getColumnDef($table, $column)
+    {
+        $td = $this->getTableDef($table);
+
+        foreach ($td->columns as $cd) {
+            if ($cd->name == $column) {
+                return $cd;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Creates a table with the given names and columns.
+     *
+     * @param string $name    Name of the table
+     * @param array  $columns Array of ColumnDef objects
+     *                        for new table.
+     *
+     * @return boolean success flag
+     */
+
+    public function createTable($name, $columns)
+    {
+        $uniques = array();
+        $primary = array();
+        $indices = array();
+
+        $sql = "CREATE TABLE $name (\n";
+
+        for ($i = 0; $i < count($columns); $i++) {
+
+            $cd =& $columns[$i];
+
+            if ($i > 0) {
+                $sql .= ",\n";
+            }
+
+            $sql .= $this->_columnSql($cd);
+
+            switch ($cd->key) {
+            case 'UNI':
+                $uniques[] = $cd->name;
+                break;
+            case 'PRI':
+                $primary[] = $cd->name;
+                break;
+            case 'MUL':
+                $indices[] = $cd->name;
+                break;
+            }
+        }
+
+        if (count($primary) > 0) { // it really should be...
+            $sql .= ",\nconstraint primary key (" . implode(',', $primary) . ")";
+        }
+
+        foreach ($uniques as $u) {
+            $sql .= ",\nunique index {$name}_{$u}_idx ($u)";
+        }
+
+        foreach ($indices as $i) {
+            $sql .= ",\nindex {$name}_{$i}_idx ($i)";
+        }
+
+        $sql .= "); ";
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a table from the schema
+     *
+     * Throws an exception if the table is not found.
+     *
+     * @param string $name Name of the table to drop
+     *
+     * @return boolean success flag
+     */
+
+    public function dropTable($name)
+    {
+        $res = $this->conn->query("DROP TABLE $name");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Adds an index to a table.
+     *
+     * If no name is provided, a name will be made up based
+     * on the table name and column names.
+     *
+     * Throws an exception on database error, esp. if the table
+     * does not exist.
+     *
+     * @param string $table       Name of the table
+     * @param array  $columnNames Name of columns to index
+     * @param string $name        (Optional) name of the index
+     *
+     * @return boolean success flag
+     */
+
+    public function createIndex($table, $columnNames, $name=null)
+    {
+        if (!is_array($columnNames)) {
+            $columnNames = array($columnNames);
+        }
+
+        if (empty($name)) {
+            $name = "$table_".implode("_", $columnNames)."_idx";
+        }
+
+        $res = $this->conn->query("ALTER TABLE $table ".
+                                   "ADD INDEX $name (".
+                                   implode(",", $columnNames).")");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a named index from a table.
+     *
+     * @param string $table name of the table the index is on.
+     * @param string $name  name of the index
+     *
+     * @return boolean success flag
+     */
+
+    public function dropIndex($table, $name)
+    {
+        $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name");
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Adds a column to a table
+     *
+     * @param string    $table     name of the table
+     * @param ColumnDef $columndef Definition of the new
+     *                             column.
+     *
+     * @return boolean success flag
+     */
+
+    public function addColumn($table, $columndef)
+    {
+        $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Modifies a column in the schema.
+     *
+     * The name must match an existing column and table.
+     *
+     * @param string    $table     name of the table
+     * @param ColumnDef $columndef new definition of the column.
+     *
+     * @return boolean success flag
+     */
+
+    public function modifyColumn($table, $columndef)
+    {
+        $sql = "ALTER TABLE $table MODIFY COLUMN " .
+          $this->_columnSql($columndef);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Drops a column from a table
+     *
+     * The name must match an existing column.
+     *
+     * @param string $table      name of the table
+     * @param string $columnName name of the column to drop
+     *
+     * @return boolean success flag
+     */
+
+    public function dropColumn($table, $columnName)
+    {
+        $sql = "ALTER TABLE $table DROP COLUMN $columnName";
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Ensures that a table exists with the given
+     * name and the given column definitions.
+     *
+     * If the table does not yet exist, it will
+     * create the table. If it does exist, it will
+     * alter the table to match the column definitions.
+     *
+     * @param string $tableName name of the table
+     * @param array  $columns   array of ColumnDef
+     *                          objects for the table
+     *
+     * @return boolean success flag
+     */
+
+    public function ensureTable($tableName, $columns)
+    {
+        // XXX: DB engine portability -> toilet
+
+        try {
+            $td = $this->getTableDef($tableName);
+        } catch (Exception $e) {
+            if (preg_match('/no such table/', $e->getMessage())) {
+                return $this->createTable($tableName, $columns);
+            } else {
+                throw $e;
+            }
+        }
+
+        $cur = $this->_names($td->columns);
+        $new = $this->_names($columns);
+
+        $toadd  = array_diff($new, $cur);
+        $todrop = array_diff($cur, $new);
+        $same   = array_intersect($new, $cur);
+        $tomod  = array();
+
+        foreach ($same as $m) {
+            $curCol = $this->_byName($td->columns, $m);
+            $newCol = $this->_byName($columns, $m);
+
+            if (!$newCol->equals($curCol)) {
+                $tomod[] = $newCol->name;
+            }
+        }
+
+        if (count($toadd) + count($todrop) + count($tomod) == 0) {
+            // nothing to do
+            return true;
+        }
+
+        // For efficiency, we want this all in one
+        // query, instead of using our methods.
+
+        $phrase = array();
+
+        foreach ($toadd as $columnName) {
+            $cd = $this->_byName($columns, $columnName);
+
+            $phrase[] = 'ADD COLUMN ' . $this->_columnSql($cd);
+        }
+
+        foreach ($todrop as $columnName) {
+            $phrase[] = 'DROP COLUMN ' . $columnName;
+        }
+
+        foreach ($tomod as $columnName) {
+            $cd = $this->_byName($columns, $columnName);
+
+            $phrase[] = 'MODIFY COLUMN ' . $this->_columnSql($cd);
+        }
+
+        $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase);
+
+        $res = $this->conn->query($sql);
+
+        if (PEAR::isError($res)) {
+            throw new Exception($res->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns the array of names from an array of
+     * ColumnDef objects.
+     *
+     * @param array $cds array of ColumnDef objects
+     *
+     * @return array strings for name values
+     */
+
+    private function _names($cds)
+    {
+        $names = array();
+
+        foreach ($cds as $cd) {
+            $names[] = $cd->name;
+        }
+
+        return $names;
+    }
+
+    /**
+     * Get a ColumnDef from an array matching
+     * name.
+     *
+     * @param array  $cds  Array of ColumnDef objects
+     * @param string $name Name of the column
+     *
+     * @return ColumnDef matching item or null if no match.
+     */
+
+    private function _byName($cds, $name)
+    {
+        foreach ($cds as $cd) {
+            if ($cd->name == $name) {
+                return $cd;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Return the proper SQL for creating or
+     * altering a column.
+     *
+     * Appropriate for use in CREATE TABLE or
+     * ALTER TABLE statements.
+     *
+     * @param ColumnDef $cd column to create
+     *
+     * @return string correct SQL for that column
+     */
+
+    private function _columnSql($cd)
+    {
+        $sql = "{$cd->name} ";
+
+        if (!empty($cd->size)) {
+            $sql .= "{$cd->type}({$cd->size}) ";
+        } else {
+            $sql .= "{$cd->type} ";
+        }
+
+        if (!empty($cd->default)) {
+            $sql .= "default {$cd->default} ";
+        } else {
+            $sql .= ($cd->nullable) ? "null " : "not null ";
+        }
+        
+        if (!empty($cd->auto_increment)) {
+            $sql .= " auto_increment ";
+        }
+
+        if (!empty($cd->extra)) {
+            $sql .= "{$cd->extra} ";
+        }
+
+        return $sql;
+    }
+}
index 3412d41d1c94b794b1a9251c2fd9e75d5eb326cc..693cd64492b26fde8c0a6e0a639ea7db43137a50 100644 (file)
@@ -191,6 +191,7 @@ class ProfileListItem extends Widget
                                          'alt' =>
                                          ($this->profile->fullname) ? $this->profile->fullname :
                                          $this->profile->nickname));
+        $this->out->text(' ');
         $hasFN = (!empty($this->profile->fullname)) ? 'nickname' : 'fn nickname';
         $this->out->elementStart('span', $hasFN);
         $this->out->raw($this->highlight($this->profile->nickname));
@@ -201,6 +202,7 @@ class ProfileListItem extends Widget
     function showFullName()
     {
         if (!empty($this->profile->fullname)) {
+            $this->out->text(' ');
             $this->out->elementStart('span', 'fn');
             $this->out->raw($this->highlight($this->profile->fullname));
             $this->out->elementEnd('span');
@@ -210,6 +212,7 @@ class ProfileListItem extends Widget
     function showLocation()
     {
         if (!empty($this->profile->location)) {
+            $this->out->text(' ');
             $this->out->elementStart('span', 'location');
             $this->out->raw($this->highlight($this->profile->location));
             $this->out->elementEnd('span');
@@ -219,6 +222,7 @@ class ProfileListItem extends Widget
     function showHomepage()
     {
         if (!empty($this->profile->homepage)) {
+            $this->out->text(' ');
             $this->out->elementStart('a', array('href' => $this->profile->homepage,
                                                 'class' => 'url'));
             $this->out->raw($this->highlight($this->profile->homepage));
diff --git a/lib/profilequeuehandler.php b/lib/profilequeuehandler.php
new file mode 100644 (file)
index 0000000..e8a00ae
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package QueueHandler
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+class ProfileQueueHandler extends QueueHandler
+{
+
+    function transport()
+    {
+        return 'profile';
+    }
+
+    function handle($profile)
+    {
+        if (!($profile instanceof Profile)) {
+            common_log(LOG_ERR, "Got a bogus profile, not broadcasting");
+            return true;
+        }
+
+        if (Event::handle('StartBroadcastProfile', array($profile))) {
+            require_once(INSTALLDIR.'/lib/omb.php');
+            omb_broadcast_profile($profile);
+        }
+        Event::handle('EndBroadcastProfile', array($profile));
+        return true;
+    }
+
+}
index 504b1b7f75c64ea12e4b04580a607ddb8d04d1fa..a9482cd634cff9783d199d0fc9957e87808de590 100644 (file)
@@ -85,6 +85,7 @@ class ProfileSection extends Section
                                        'href' => $profile->profileurl,
                                        'rel' => 'contact member',
                                        'class' => 'url'));
+        $this->out->text(' ');
         $avatar = $profile->getAvatar(AVATAR_MINI_SIZE);
         $this->out->element('img', array('src' => (($avatar) ? $avatar->displayUrl() :  Avatar::defaultImage(AVATAR_MINI_SIZE)),
                                     'width' => AVATAR_MINI_SIZE,
@@ -93,6 +94,7 @@ class ProfileSection extends Section
                                     'alt' =>  ($profile->fullname) ?
                                     $profile->fullname :
                                     $profile->nickname));
+        $this->out->text(' ');
         $this->out->element('span', 'fn nickname', $profile->nickname);
         $this->out->elementEnd('a');
         $this->out->elementEnd('span');
index 8f8c8f133ffcea17ad51f4f6c8229e5704779e49..9fdc801100f46f58df9e9ab22c71529da55af6bd 100644 (file)
@@ -262,6 +262,9 @@ abstract class QueueManager extends IoManager
                 $this->connect('sms', 'SmsQueueHandler');
             }
 
+            // Broadcasting profile updates to OMB remote subscribers
+            $this->connect('profile', 'ProfileQueueHandler');
+
             // XMPP output handlers...
             if (common_config('xmpp', 'enabled')) {
                 // Delivery prep, read by queuedaemon.php:
index 5e66eae0ed3da13e43d638eb6e33f9534ebb9043..4e9c5a918dbe02b2e2795c63167dd9a99d7db8e7 100644 (file)
@@ -57,5 +57,6 @@ class Right
     const EMAILONREPLY       = 'emailonreply';
     const EMAILONSUBSCRIBE   = 'emailonsubscribe';
     const EMAILONFAVE        = 'emailonfave';
+    const MAKEGROUPADMIN     = 'makegroupadmin';
 }
 
index 5981ef5d7a2af756952a90944a6937aa10c642c7..987d0152e462e266a8ddc40d169e66882a990c79 100644 (file)
@@ -712,6 +712,10 @@ class Router
                                   'nickname' => $nickname),
                             array('tag' => '[a-zA-Z0-9]+'));
 
+                $m->connect('rsd.xml',
+                            array('action' => 'rsd',
+                                  'nickname' => $nickname));
+
                 $m->connect('',
                             array('action' => 'showstream',
                                   'nickname' => $nickname));
@@ -726,6 +730,7 @@ class Router
                 $m->connect('featured', array('action' => 'featured'));
                 $m->connect('favorited/', array('action' => 'favorited'));
                 $m->connect('favorited', array('action' => 'favorited'));
+                $m->connect('rsd.xml', array('action' => 'rsd'));
 
                 foreach (array('subscriptions', 'subscribers',
                                'nudge', 'all', 'foaf', 'xrds',
@@ -773,6 +778,10 @@ class Router
                             array('nickname' => '[a-zA-Z0-9]{1,64}'),
                             array('tag' => '[a-zA-Z0-9]+'));
 
+                $m->connect(':nickname/rsd.xml',
+                            array('action' => 'rsd'),
+                            array('nickname' => '[a-zA-Z0-9]{1,64}'));
+
                 $m->connect(':nickname',
                             array('action' => 'showstream'),
                             array('nickname' => '[a-zA-Z0-9]{1,64}'));
index a7f64ebed10cfce99fb780756a6fffa78831df83..137b814e0269ed727978e11e55ce25cca763a199 100644 (file)
@@ -75,64 +75,14 @@ class Schema
 
     static function get()
     {
+        $type = common_config('db', 'type');
         if (empty(self::$_single)) {
-            self::$_single = new Schema();
+            $schemaClass = ucfirst($type).'Schema';
+            self::$_single = new $schemaClass();
         }
         return self::$_single;
     }
 
-    /**
-     * Returns a TableDef object for the table
-     * in the schema with the given name.
-     *
-     * Throws an exception if the table is not found.
-     *
-     * @param string $name Name of the table to get
-     *
-     * @return TableDef tabledef for that table.
-     */
-
-    public function getTableDef($name)
-    {
-        $res = $this->conn->query('DESCRIBE ' . $name);
-
-        if (PEAR::isError($res)) {
-            throw new Exception($res->getMessage());
-        }
-
-        $td = new TableDef();
-
-        $td->name    = $name;
-        $td->columns = array();
-
-        $row = array();
-
-        while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
-
-            $cd = new ColumnDef();
-
-            $cd->name = $row['Field'];
-
-            $packed = $row['Type'];
-
-            if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
-                $cd->type = $match[1];
-                $cd->size = $match[2];
-            } else {
-                $cd->type = $packed;
-            }
-
-            $cd->nullable = ($row['Null'] == 'YES') ? true : false;
-            $cd->key      = $row['Key'];
-            $cd->default  = $row['Default'];
-            $cd->extra    = $row['Extra'];
-
-            $td->columns[] = $cd;
-        }
-
-        return $td;
-    }
-
     /**
      * Gets a ColumnDef object for a single column.
      *
@@ -523,7 +473,7 @@ class Schema
         } else {
             $sql .= ($cd->nullable) ? "null " : "not null ";
         }
-        
+
         if (!empty($cd->auto_increment)) {
             $sql .= " auto_increment ";
         }
index 257bd861da61ff881af67e781049178b7d299cba..7c4df84b4a7692ed59c5b770d5a044dbcdcfcc55 100644 (file)
@@ -30,6 +30,7 @@ global $config, $_server, $_path;
 class StatusNet
 {
     protected static $have_config;
+    protected static $is_api;
 
     /**
      * Configure and instantiate a plugin into the current configuration.
@@ -201,6 +202,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
index 5ac1a75a5ce80aecf1fa70221451aa5edb0c3ae3..1c240c475d40c7f71fd428de44eec07499dc3baa 100644 (file)
 
 if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
-require_once('XMPPHP/XMPP.php');
-
-/* Subscribe $user to nickname $other_nickname
-  Returns true or an error message.
-*/
-
-function subs_subscribe_user($user, $other_nickname)
-{
-
-    $other = User::staticGet('nickname', $other_nickname);
-
-    if (!$other) {
-        return _('No such user.');
-    }
-
-    return subs_subscribe_to($user, $other);
-}
-
 /* Subscribe user $user to other user $other.
  * Note: $other must be a local user, not a remote profile.
  * Because the other way is quite a bit more complicated.
@@ -44,136 +26,20 @@ function subs_subscribe_user($user, $other_nickname)
 
 function subs_subscribe_to($user, $other)
 {
-    if (!$user->hasRight(Right::SUBSCRIBE)) {
-        return _('You have been banned from subscribing.');
-    }
-
-    if ($user->isSubscribed($other)) {
-        return _('Already subscribed!');
-    }
-
-    if ($other->hasBlocked($user)) {
-        return _('User has blocked you.');
-    }
-
     try {
-        if (Event::handle('StartSubscribe', array($user, $other))) {
-
-            if (!$user->subscribeTo($other)) {
-                return _('Could not subscribe.');
-                return;
-            }
-
-            subs_notify($other, $user);
-
-            $cache = common_memcache();
-
-            if ($cache) {
-                $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
-            }
-
-            $profile = $user->getProfile();
-
-            $profile->blowSubscriptionsCount();
-            $other->blowSubscribersCount();
-
-            if ($other->autosubscribe && !$other->isSubscribed($user) && !$user->hasBlocked($other)) {
-                if (!$other->subscribeTo($user)) {
-                    return _('Could not subscribe other to you.');
-                }
-                $cache = common_memcache();
-
-                if ($cache) {
-                    $cache->delete(common_cache_key('user:notices_with_friends:' . $other->id));
-                }
-
-                subs_notify($user, $other);
-            }
-
-            Event::handle('EndSubscribe', array($user, $other));
-        }
+        Subscription::start($user->getProfile(), $other);
+        return true;
     } catch (Exception $e) {
         return $e->getMessage();
     }
-
-    return true;
-}
-
-function subs_notify($listenee, $listener)
-{
-    # XXX: add other notifications (Jabber, SMS) here
-    # XXX: queue this and handle it offline
-    # XXX: Whatever happens, do it in Twitter-like API, too
-    subs_notify_email($listenee, $listener);
-}
-
-function subs_notify_email($listenee, $listener)
-{
-    mail_subscribe_notify($listenee, $listener);
-}
-
-/* Unsubscribe $user from nickname $other_nickname
-  Returns true or an error message.
-*/
-
-function subs_unsubscribe_user($user, $other_nickname)
-{
-
-    $other = User::staticGet('nickname', $other_nickname);
-
-    if (!$other) {
-        return _('No such user.');
-    }
-
-    return subs_unsubscribe_to($user, $other->getProfile());
 }
 
-/* Unsubscribe user $user from profile $other
- * NB: other can be a remote user. */
-
 function subs_unsubscribe_to($user, $other)
 {
-    if (!$user->isSubscribed($other))
-        return _('Not subscribed!');
-
-    // Don't allow deleting self subs
-
-    if ($user->id == $other->id) {
-        return _('Couldn\'t delete self-subscription.');
-    }
-
     try {
-        if (Event::handle('StartUnsubscribe', array($user, $other))) {
-
-            $sub = DB_DataObject::factory('subscription');
-
-            $sub->subscriber = $user->id;
-            $sub->subscribed = $other->id;
-
-            $sub->find(true);
-
-            // note we checked for existence above
-
-            if (!$sub->delete())
-              return _('Couldn\'t delete subscription.');
-
-            $cache = common_memcache();
-
-            if ($cache) {
-                $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
-            }
-
-            $profile = $user->getProfile();
-
-            $profile->blowSubscriptionsCount();
-            $other->blowSubscribersCount();
-
-            Event::handle('EndUnsubscribe', array($user, $other));
-        }
+        Subscription::cancel($user->getProfile(), $other);
+        return true;
     } catch (Exception $e) {
         return $e->getMessage();
     }
-
-    return true;
-}
-
+}
\ No newline at end of file
diff --git a/lib/taguri.php b/lib/taguri.php
new file mode 100644 (file)
index 0000000..d8398ed
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Utility for creating new tag: URIs
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  URI
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Mint tag: URIs
+ *
+ * tag: URIs are unique identifiers according to http://tools.ietf.org/html/rfc4151.
+ *
+ * We use them for creating URIs for things that can't be HTTP retrieved.
+ *
+ * @category URI
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link     http://status.net/
+ */
+
+class TagURI
+{
+    /**
+     * Return the base part of a tag URI
+     *
+     * Note: use mint() instead.
+     *
+     * @return string Tag URI base to use
+     */
+
+    static function base()
+    {
+        $base = common_config('integration', 'taguri');
+
+        if (empty($base)) {
+
+            $base = common_config('site', 'server').','.date('Y-m-d');
+
+            $pathPart = trim(common_config('site', 'path'), '/');
+
+            if (!empty($pathPart)) {
+                $base .= ':'.str_replace('/', ':', $pathPart);
+            }
+        }
+
+        return $base;
+    }
+
+    /**
+     * Make a new tag URI
+     *
+     * Builds the proper base and creates all the parts
+     *
+     * @return string minted URI
+     */
+
+    static function mint()
+    {
+        $base = self::base();
+
+        $args = func_get_args();
+
+        $format = array_shift($args);
+
+        $extra = vsprintf($format, $args);
+
+        return 'tag:'.$base.':'.$extra;
+    }
+}
index 020ce1ac40cc77d7a57cd5e486ed3224973b1e5e..0be8c3b9dfaa8ba2631bb67e08cbfb49b36ceb60 100644 (file)
@@ -110,9 +110,20 @@ class Theme
                 $server = common_config('site', 'server');
             }
 
-            // XXX: protocol
+            $ssl = common_config('theme', 'ssl');
+
+            if (is_null($ssl)) { // null -> guess
+                if (common_config('site', 'ssl') == 'always' &&
+                    !common_config('theme', 'server')) {
+                    $ssl = true;
+                } else {
+                    $ssl = false;
+                }
+            }
+
+            $protocol = ($ssl) ? 'https' : 'http';
 
-            $this->path = 'http://'.$server.$path.$name;
+            $this->path = $protocol . '://'.$server.$path.$name;
         }
     }
 
index 07e5750852eaa77a8e86eafd73e939296dd71eb0..43dfd05be5988e0d912af9f28124b5fa8b56da70 100644 (file)
@@ -238,9 +238,12 @@ class UserProfile extends Widget
 
             if (Event::handle('StartProfilePageActionsElements', array(&$this->out, $this->profile))) {
                 if (empty($cur)) { // not logged in
-                    $this->out->elementStart('li', 'entity_subscribe');
-                    $this->showRemoteSubscribeLink();
-                    $this->out->elementEnd('li');
+                    if (Event::handle('StartProfileRemoteSubscribe', array(&$this->out, $this->profile))) {
+                        $this->out->elementStart('li', 'entity_subscribe');
+                        $this->showRemoteSubscribeLink();
+                        $this->out->elementEnd('li');
+                        Event::handle('EndProfileRemoteSubscribe', array(&$this->out, $this->profile));
+                    }
                 } else {
                     if ($cur->id == $this->profile->id) { // your own page
                         $this->out->elementStart('li', 'entity_edit');
index 84928ec4844e6f45a99b09b3fd2a80417f1964f0..d1c78f7d07893eec54df31bf6a83139f8ea1bfc6 100644 (file)
@@ -367,7 +367,8 @@ function common_current_user()
 
     if ($_cur === false) {
 
-        if (isset($_REQUEST[session_name()]) || (isset($_SESSION['userid']) && $_SESSION['userid'])) {
+        if (isset($_COOKIE[session_name()]) || isset($_GET[session_name()])
+            || (isset($_SESSION['userid']) && $_SESSION['userid'])) {
             common_ensure_session();
             $id = isset($_SESSION['userid']) ? $_SESSION['userid'] : false;
             if ($id) {
@@ -425,13 +426,148 @@ function common_render_content($text, $notice)
 {
     $r = common_render_text($text);
     $id = $notice->profile_id;
-    $r = preg_replace('/(^|\s+)@(['.NICKNAME_FMT.']{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
-    $r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
-    $r = preg_replace('/(^|[\s\.\,\:\;]+)@#([A-Za-z0-9]{1,64})/e', "'\\1@#'.common_at_hash_link($id, '\\2')", $r);
+    $r = common_linkify_mentions($id, $r);
     $r = preg_replace('/(^|[\s\.\,\:\;]+)!([A-Za-z0-9]{1,64})/e', "'\\1!'.common_group_link($id, '\\2')", $r);
     return $r;
 }
 
+function common_linkify_mentions($profile_id, $text)
+{
+    $mentions = common_find_mentions($profile_id, $text);
+
+    // We need to go through in reverse order by position,
+    // so our positions stay valid despite our fudging with the
+    // string!
+
+    $points = array();
+
+    foreach ($mentions as $mention)
+    {
+        $points[$mention['position']] = $mention;
+    }
+
+    krsort($points);
+
+    foreach ($points as $position => $mention) {
+
+        $linkText = common_linkify_mention($mention);
+
+        $text = substr_replace($text, $linkText, $position, mb_strlen($mention['text']));
+    }
+
+    return $text;
+}
+
+function common_linkify_mention($mention)
+{
+    $output = null;
+
+    if (Event::handle('StartLinkifyMention', array($mention, &$output))) {
+
+        $xs = new XMLStringer(false);
+
+        $attrs = array('href' => $mention['url'],
+                       'class' => 'url');
+
+        if (!empty($mention['title'])) {
+            $attrs['title'] = $mention['title'];
+        }
+
+        $xs->elementStart('span', 'vcard');
+        $xs->elementStart('a', $attrs);
+        $xs->element('span', 'fn nickname', $mention['text']);
+        $xs->elementEnd('a');
+        $xs->elementEnd('span');
+
+        $output = $xs->getString();
+
+        Event::handle('EndLinkifyMention', array($mention, &$output));
+    }
+
+    return $output;
+}
+
+function common_find_mentions($profile_id, $text)
+{
+    $mentions = array();
+
+    $sender = Profile::staticGet('id', $profile_id);
+
+    if (empty($sender)) {
+        return $mentions;
+    }
+
+    if (Event::handle('StartFindMentions', array($sender, $text, &$mentions))) {
+
+        preg_match_all('/^T ([A-Z0-9]{1,64}) /',
+                       $text,
+                       $tmatches,
+                       PREG_OFFSET_CAPTURE);
+
+        preg_match_all('/(?:^|\s+)@(['.NICKNAME_FMT.']{1,64})/',
+                       $text,
+                       $atmatches,
+                       PREG_OFFSET_CAPTURE);
+
+        $matches = array_merge($tmatches[1], $atmatches[1]);
+
+        foreach ($matches as $match) {
+
+            $nickname = common_canonical_nickname($match[0]);
+            $mentioned = common_relative_profile($sender, $nickname);
+
+            if (!empty($mentioned)) {
+
+                $user = User::staticGet('id', $mentioned->id);
+
+                if ($user) {
+                    $url = common_local_url('userbyid', array('id' => $user->id));
+                } else {
+                    $url = $mentioned->profileurl;
+                }
+
+                $mention = array('mentioned' => array($mentioned),
+                                 'text' => $match[0],
+                                 'position' => $match[1],
+                                 'url' => $url);
+
+                if (!empty($mentioned->fullname)) {
+                    $mention['title'] = $mentioned->fullname;
+                }
+
+                $mentions[] = $mention;
+            }
+        }
+
+        // @#tag => mention of all subscriptions tagged 'tag'
+
+        preg_match_all('/(?:^|[\s\.\,\:\;]+)@#([\pL\pN_\-\.]{1,64})/',
+                       $text,
+                       $hmatches,
+                       PREG_OFFSET_CAPTURE);
+
+        foreach ($hmatches[1] as $hmatch) {
+
+            $tag = common_canonical_tag($hmatch[0]);
+
+            $tagged = Profile_tag::getTagged($sender->id, $tag);
+
+            $url = common_local_url('subscriptions',
+                                    array('nickname' => $sender->nickname,
+                                          'tag' => $tag));
+
+            $mentions[] = array('mentioned' => $tagged,
+                                'text' => $hmatch[0],
+                                'position' => $hmatch[1],
+                                'url' => $url);
+        }
+
+        Event::handle('EndFindMentions', array($sender, $text, &$mentions));
+    }
+
+    return $mentions;
+}
+
 function common_render_text($text)
 {
     $r = htmlspecialchars($text);
@@ -662,39 +798,11 @@ function common_valid_profile_tag($str)
     return preg_match('/^[A-Za-z0-9_\-\.]{1,64}$/', $str);
 }
 
-function common_at_link($sender_id, $nickname)
-{
-    $sender = Profile::staticGet($sender_id);
-    $recipient = common_relative_profile($sender, common_canonical_nickname($nickname));
-    if ($recipient) {
-        $user = User::staticGet('id', $recipient->id);
-        if ($user) {
-            $url = common_local_url('userbyid', array('id' => $user->id));
-        } else {
-            $url = $recipient->profileurl;
-        }
-        $xs = new XMLStringer(false);
-        $attrs = array('href' => $url,
-                       'class' => 'url');
-        if (!empty($recipient->fullname)) {
-            $attrs['title'] = $recipient->fullname . ' (' . $recipient->nickname . ')';
-        }
-        $xs->elementStart('span', 'vcard');
-        $xs->elementStart('a', $attrs);
-        $xs->element('span', 'fn nickname', $nickname);
-        $xs->elementEnd('a');
-        $xs->elementEnd('span');
-        return $xs->getString();
-    } else {
-        return $nickname;
-    }
-}
-
 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)) {
@@ -712,29 +820,6 @@ function common_group_link($sender_id, $nickname)
     }
 }
 
-function common_at_hash_link($sender_id, $tag)
-{
-    $user = User::staticGet($sender_id);
-    if (!$user) {
-        return $tag;
-    }
-    $tagged = Profile_tag::getTagged($user->id, common_canonical_tag($tag));
-    if ($tagged) {
-        $url = common_local_url('subscriptions',
-                                array('nickname' => $user->nickname,
-                                      'tag' => $tag));
-        $xs = new XMLStringer();
-        $xs->elementStart('span', 'tag');
-        $xs->element('a', array('href' => $url,
-                                'rel' => $tag),
-                     $tag);
-        $xs->elementEnd('span');
-        return $xs->getString();
-    } else {
-        return $tag;
-    }
-}
-
 function common_relative_profile($sender, $nickname, $dt=null)
 {
     // Try to find profiles this profile is subscribed to that have this nickname
@@ -996,9 +1081,13 @@ function common_enqueue_notice($notice)
     static $localTransports = array('omb',
                                     'ping');
 
-    static $allTransports = array('sms', 'plugin');
-
-    $transports = $allTransports;
+    $transports = array();
+    if (common_config('sms', 'enabled')) {
+        $transports[] = 'sms';
+    }
+    if (Event::hasHandler('HandleQueuedNotice')) {
+        $transports[] = 'plugin';
+    }
 
     $xmpp = common_config('xmpp', 'enabled');
 
@@ -1006,6 +1095,7 @@ function common_enqueue_notice($notice)
         $transports[] = 'jabber';
     }
 
+    // @fixme move these checks into QueueManager and/or individual handlers
     if ($notice->is_local == Notice::LOCAL_PUBLIC ||
         $notice->is_local == Notice::LOCAL_NONPUBLIC) {
         $transports = array_merge($transports, $localTransports);
@@ -1029,12 +1119,16 @@ function common_enqueue_notice($notice)
     return true;
 }
 
-function common_broadcast_profile($profile)
+/**
+ * Broadcast profile updates to OMB and other remote subscribers.
+ *
+ * Since this may be slow with a lot of subscribers or bad remote sites,
+ * this is run through the background queues if possible.
+ */
+function common_broadcast_profile(Profile $profile)
 {
-    // XXX: optionally use a queue system like http://code.google.com/p/microapps/wiki/NQDQ
-    require_once(INSTALLDIR.'/lib/omb.php');
-    omb_broadcast_profile($profile);
-    // XXX: Other broadcasts...?
+    $qm = QueueManager::get();
+    $qm->enqueue($profile, "profile");
     return true;
 }
 
@@ -1512,6 +1606,7 @@ function common_database_tablename($tablename)
  */
 function common_shorten_url($long_url)
 {
+    $long_url = trim($long_url);
     $user = common_current_user();
     if (empty($user)) {
         // common current user does not find a user when called from the XMPP daemon
@@ -1526,7 +1621,7 @@ function common_shorten_url($long_url)
         return $long_url;
     }else{
         //URL was shortened, so return the result
-        return $shortenedUrl;
+        return trim($shortenedUrl);
     }
 }
 
@@ -1564,3 +1659,56 @@ function common_client_ip()
 
     return array($proxy, $ip);
 }
+
+function common_url_to_nickname($url)
+{
+    static $bad = array('query', 'user', 'password', 'port', 'fragment');
+
+    $parts = parse_url($url);
+
+    # If any of these parts exist, this won't work
+
+    foreach ($bad as $badpart) {
+        if (array_key_exists($badpart, $parts)) {
+            return null;
+        }
+    }
+
+    # We just have host and/or path
+
+    # If it's just a host...
+    if (array_key_exists('host', $parts) &&
+        (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0))
+    {
+        $hostparts = explode('.', $parts['host']);
+
+        # Try to catch common idiom of nickname.service.tld
+
+        if ((count($hostparts) > 2) &&
+            (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au
+            (strcmp($hostparts[0], 'www') != 0))
+        {
+            return common_nicknamize($hostparts[0]);
+        } else {
+            # Do the whole hostname
+            return common_nicknamize($parts['host']);
+        }
+    } else {
+        if (array_key_exists('path', $parts)) {
+            # Strip starting, ending slashes
+            $path = preg_replace('@/$@', '', $parts['path']);
+            $path = preg_replace('@^/@', '', $path);
+            if (strpos($path, '/') === false) {
+                return common_nicknamize($path);
+            }
+        }
+    }
+
+    return null;
+}
+
+function common_nicknamize($str)
+{
+    $str = preg_replace('/\W/', '', $str);
+    return strtolower($str);
+}
index 4e63e3e330950d3b29a3d6b7cae3ce68daaac857..26f956329533b71f5f4e3323d71ad5592fbd4ae1 100644 (file)
@@ -9,18 +9,70 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:40+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:01+0000\n"
 "Language-Team: Arabic\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "نفاذ"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "إعدادات الوصول إلى الموقع"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "تسجيل"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "خاص"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "أأمنع المستخدمين المجهولين (غير الوالجين) من عرض الموقع؟"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "بالدعوة فقط"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "مُغلق"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "عطّل التسجيل الجديد."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "أرسل"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "حفظ إعدادت الوصول"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +87,29 @@ msgstr "لا صفحة كهذه"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "لا مستخدم كهذا."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s والأصدقاء, الصفحة %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -94,7 +150,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -105,8 +161,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "أنت والأصدقاء"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -116,23 +172,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "لم يتم العثور على وسيلة API."
 
@@ -146,7 +202,7 @@ msgstr "لم يتم العثور على وسيلة API."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "تتطلب هذه الطريقة POST."
 
@@ -175,8 +231,9 @@ msgstr "لم يمكن حفظ الملف."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -219,7 +276,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
@@ -254,18 +311,16 @@ msgid "No status found with that ID."
 msgstr ""
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 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."
 msgstr "تعذّر إنشاء مفضلة."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "تلك الحالة ليست مفضلة!"
+msgstr "تلك الحالة ليست مفضلة."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -285,19 +340,18 @@ msgid "Could not unfollow user: User not found."
 msgstr ""
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "لا يمكنك منع نفسك!"
+msgstr "لا يمكنك عدم متابعة نفسك."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
-msgstr ""
+msgstr "تعذّر تحديد المستخدم المصدر."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "تعذّر إيجاد المستخدم الهدف."
 
@@ -311,7 +365,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
@@ -319,7 +373,8 @@ msgstr ""
 msgid "Not a valid nickname."
 msgstr "ليس اسمًا مستعارًا صحيحًا."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -331,7 +386,8 @@ msgstr "الصفحة الرئيسية ليست عنونًا صالحًا."
 msgid "Full name is too long (max 255 chars)."
 msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr ""
@@ -346,7 +402,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
@@ -367,7 +423,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "لم توجد المجموعة!"
 
@@ -380,18 +436,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr ""
 
 #: 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 "تعذّر إنشاء المجموعة."
+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
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %1$s from group %2$s."
-msgstr "تعذّر إنشاء المجموعة."
+msgstr "لم يمكن إزالة المستخدم %1$s من المجموعة %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -408,6 +464,113 @@ msgstr "مجموعات %s"
 msgid "groups on %s"
 msgstr "مجموعات %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "حجم غير صالح."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "اسم/كلمة سر غير صحيحة!"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "خطأ قاعدة البيانات أثناء حذف المستخدم OAuth app"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "الحساب"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "الاسم المستعار"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "كلمة السر"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "ارفض"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "اسمح"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -435,19 +598,19 @@ msgstr "حُذِفت الحالة."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
-msgstr ""
+msgstr "لا حالة وُجدت بهذه الهوية."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "لم يوجد"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -461,7 +624,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 ""
@@ -472,7 +635,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!"
@@ -488,27 +651,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "كرر إلى %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "تكرارات %s"
@@ -518,7 +676,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 ""
@@ -578,8 +736,8 @@ msgstr "الأصلي"
 msgid "Preview"
 msgstr "عاين"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "احذف"
 
@@ -591,29 +749,6 @@ msgstr "ارفع"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -649,8 +784,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "لا"
 
@@ -658,13 +794,13 @@ msgstr "لا"
 msgid "Do not block this user"
 msgstr "لا تمنع هذا المستخدم"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "امنع هذا المستخدم"
 
@@ -688,9 +824,9 @@ msgid "%s blocked profiles"
 msgstr ""
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "مشتركو %s، الصفحة %d"
+msgstr "%1$s ملفات ممنوعة, الصفحة %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -747,8 +883,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "تعذّر حذف تأكيد البريد الإلكتروني."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
-msgstr "عÙ\86Ù\88اÙ\86 Ø§Ù\84تأÙ\83Ù\8aد"
+msgid "Confirm address"
+msgstr "Ø£Ù\83د Ø§Ù\84عÙ\86Ù\88اÙ\86"
 
 #: actions/confirmaddress.php:159
 #, php-format
@@ -764,10 +900,53 @@ msgstr "محادثة"
 msgid "Notices"
 msgstr "الإشعارات"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "لم يوجد رمز التأكيد."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "أنت لست مالك هذا التطبيق."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "عدّل التطبيق"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "لا تحذف هذا الإشعار"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "احذف هذا الإشعار"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -796,7 +975,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
 msgid "Do not delete this notice"
 msgstr "لا تحذف هذا الإشعار"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "احذف هذا الإشعار"
 
@@ -924,16 +1103,6 @@ msgstr "استعد التصميمات المبدئية"
 msgid "Reset back to default"
 msgstr "ارجع إلى المبدئي"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "أرسل"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "احفظ التصميم"
@@ -946,10 +1115,77 @@ msgstr "هذا الشعار ليس مفضلًا!"
 msgid "Add to favorites"
 msgstr "أضف إلى المفضلات"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "لا مستند كهذا."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "عدّل التطبيق"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "لا تطبيق كهذا."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "استخدم هذا النموذج لتعدل تطبيقك."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "الاسم مطلوب."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "الاسم طويل جدا (الأقصى 255 حرفا)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "الوصف مطلوب."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "مسار المصدر ليس صحيحا."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "المنظمة مطلوبة."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "المنظمة طويلة جدا (الأقصى 255 حرفا)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "صفحة المنظمة الرئيسية مطلوبة."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "لم يمكن تحديث التطبيق."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -961,9 +1197,8 @@ msgstr "يجب أن تكون والجًا لتنشئ مجموعة."
 
 #: 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 "يجب أن تكون إداريًا لتعدّل المجموعة"
+msgstr "يجب أن تكون إداريا لتعدل المجموعة."
 
 #: actions/editgroup.php:154
 msgid "Use this form to edit the group."
@@ -978,7 +1213,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:433
 msgid "Could not create aliases."
 msgstr "تعذّر إنشاء الكنى."
 
@@ -987,7 +1222,6 @@ msgid "Options saved."
 msgstr "حُفظت الخيارات."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
 msgstr "إعدادات البريد الإلكتروني"
 
@@ -1018,14 +1252,14 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "ألغِ"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "عناوين البريد الإلكتروني"
+msgstr "عنوان البريد الإلكتروني"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1099,7 +1333,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "ليس عنوان بريد صالح."
 
@@ -1111,7 +1345,7 @@ msgstr "هذا هو عنوان بريدك الإكتروني سابقًا."
 msgid "That email address already belongs to another user."
 msgstr "هذا البريد الإلكتروني ملك مستخدم آخر بالفعل."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "تعذّر إدراج رمز التأكيد."
@@ -1147,7 +1381,7 @@ msgstr "أزيل هذا العنوان."
 
 #: actions/emailsettings.php:446 actions/smssettings.php:518
 msgid "No incoming email address."
-msgstr ""
+msgstr "لا عنوان بريد إلكتروني وارد."
 
 #: actions/emailsettings.php:456 actions/emailsettings.php:478
 #: actions/smssettings.php:528 actions/smssettings.php:552
@@ -1170,7 +1404,7 @@ msgstr "هذا الإشعار مفضلة مسبقًا!"
 msgid "Disfavor favorite"
 msgstr "ألغِ تفضيل المفضلة"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "إشعارات مشهورة"
@@ -1253,7 +1487,7 @@ msgstr "المستخدم الذي تستمع إليه غير موجود."
 
 #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59
 msgid "You can use the local subscription!"
-msgstr ""
+msgstr "تستطيع استخدام الاشتراك المحلي!"
 
 #: actions/finishremotesubscribe.php:99
 msgid "That user has blocked you from subscribing."
@@ -1312,7 +1546,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 "امنع المستخدم من المجموعة"
 
@@ -1374,9 +1608,8 @@ msgid ""
 msgstr ""
 
 #: actions/grouplogo.php:178
-#, fuzzy
 msgid "User without matching profile."
-msgstr "ليس للمستخدم ملف شخصي."
+msgstr "المستخدم بدون ملف مطابق."
 
 #: actions/grouplogo.php:362
 msgid "Pick a square area of the image to be the logo."
@@ -1396,31 +1629,31 @@ msgid "%s group members"
 msgstr "أعضاء مجموعة %s"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "مجموعات %s، صفحة %d"
+msgstr "%1$s أعضاء المجموعة, الصفحة %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "قائمة بمستخدمي هذه المجموعة."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "اجعل هذا المستخدم إداريًا"
 
@@ -1496,7 +1729,6 @@ msgid "Error removing the block."
 msgstr "خطأ أثناء منع الحجب."
 
 #: actions/imsettings.php:59
-#, fuzzy
 msgid "IM settings"
 msgstr "إعدادات المراسلة الفورية"
 
@@ -1523,7 +1755,6 @@ msgid ""
 msgstr ""
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
 msgstr "عنوان المراسلة الفورية"
 
@@ -1581,6 +1812,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "هذه ليست هويتك في جابر."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1657,7 +1893,7 @@ msgstr "رسالة شخصية"
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "أرسل"
 
@@ -1699,25 +1935,25 @@ msgstr ""
 
 #: actions/joingroup.php:60
 msgid "You must be logged in to join a group."
-msgstr ""
+msgstr "يجب أن تلج لتنضم إلى مجموعة."
 
 #: actions/joingroup.php:131
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s joined group %2$s"
-msgstr "%s انضم إلى مجموعة %s"
+msgstr "%1$s انضم للمجموعة %2$s"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
-msgstr ""
+msgstr "يجب أن تلج لتغادر مجموعة."
 
 #: actions/leavegroup.php:90 lib/command.php:265
 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."
@@ -1731,7 +1967,7 @@ msgstr "اسم المستخدم أو كلمة السر غير صحيحان."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطأ أثناء ضبط المستخدم. لست مُصرحًا على الأرجح."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "لُج"
@@ -1740,17 +1976,6 @@ msgstr "لُج"
 msgid "Login to site"
 msgstr "لُج إلى الموقع"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "الاسم المستعار"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "كلمة السر"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "تذكّرني"
@@ -1776,29 +2001,50 @@ 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
-#, fuzzy, php-format
+#: actions/makeadmin.php:133
+#, php-format
 msgid "Can't get membership record for %1$s in group %2$s."
-msgstr "تعذّر إنشاء المجموعة."
+msgstr "لم يمكن الحصول على تسجيل العضوية ل%1$s في المجموعة %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 "تعذّر إنشاء المجموعة."
+msgstr "لم يمكن جعل %1$s إداريا للمجموعة %2$s."
 
 #: actions/microsummary.php:69
 msgid "No current status"
 msgstr "لا حالة حالية"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "تطبيق جديد"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "يجب أن تكون مسجل الدخول لتسجل تطبيقا."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "استخدم هذا النموذج لتسجل تطبيقا جديدا."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "لم يمكن إنشاء التطبيق."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "مجموعة جديدة"
@@ -1813,7 +2059,7 @@ msgstr "رسالة جديدة"
 
 #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:358
 msgid "You can't send a message to this user."
-msgstr ""
+msgstr "لا يمكنك إرسال رسائل إلى هذا المستخدم."
 
 #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:342
 #: lib/command.php:475
@@ -1834,9 +2080,9 @@ msgid "Message sent"
 msgstr "أُرسلت الرسالة"
 
 #: actions/newmessage.php:185
-#, fuzzy, php-format
+#, 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"
@@ -1856,15 +2102,17 @@ msgid ""
 "Search for notices on %%site.name%% by their contents. Separate search terms "
 "by spaces; they must be 3 characters or more."
 msgstr ""
+"ابحث عن إشعارات على %%site.name%% عبر محتوياتها. افصل عبارات البحث بمسافات؛ "
+"ويجب أن تتكون هذه العبارات من 3 أحرف أو أكثر."
 
 #: actions/noticesearch.php:78
 msgid "Text search"
 msgstr "بحث في النصوص"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%1$s\" on %2$s"
-msgstr "نتائج البحث عن \"%s\"  في %s"
+msgstr "نتائج البحث ل\"%1$s\" على %2$s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -1903,6 +2151,48 @@ msgstr "أرسل التنبيه"
 msgid "Nudge sent!"
 msgstr "أُرسل التنبيه!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "يجب أن تكون مسجل الدخول لعرض تطبيقاتك."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "تطبيقات OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "لست مستخدما لهذا التطبيق."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1910,7 +2200,7 @@ msgstr ""
 #: actions/oembed.php:86 actions/shownotice.php:180
 #, php-format
 msgid "%1$s's status on %2$s"
-msgstr ""
+msgstr "حالة %1$s في يوم %2$s"
 
 #: actions/oembed.php:157
 msgid "content type "
@@ -1920,8 +2210,8 @@ msgstr "نوع المحتوى "
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "ليس نسق بيانات مدعوم."
 
@@ -1934,7 +2224,7 @@ msgid "Notice Search"
 msgstr "بحث الإشعارات"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "إعدادات أخرى"
 
 #: actions/othersettings.php:71
@@ -1966,29 +2256,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr ""
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Ù\84ا Ù\85جÙ\85Ù\88عة Ù\85Ù\8fحدÙ\91دة."
+msgstr "Ù\84ا Ù\87Ù\88Ù\8aØ© Ù\85ستخدÙ\85 Ù\85حددة."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "لا ملاحظة محددة."
+msgstr "لا محتوى دخول محدد."
 
 #: actions/otp.php:90
-#, fuzzy
 msgid "No login token requested."
-msgstr "لا طلب استيثاق!"
+msgstr "لا طلب استيثاق."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "لا ملاحظة محددة."
+msgstr "توكن دخول غير صحيح محدد."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "لُج إلى الموقع"
+msgstr "توكن الدخول انتهى."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
 
 #: actions/outbox.php:61
 #, php-format
@@ -2060,7 +2350,7 @@ msgstr "تعذّر حفظ كلمة السر الجديدة."
 msgid "Password saved."
 msgstr "حُفظت كلمة السر."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "المسارات"
 
@@ -2068,133 +2358,148 @@ msgstr "المسارات"
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "لا يمكن قراءة دليل السمات: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "لا يمكن الكتابة في دليل الأفتارات: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "لا يمكن الكتابة في دليل الخلفيات: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "لا يمكن قراءة دليل المحليات: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "الموقع"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "خادوم"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "اسم مضيف خادوم الموقع."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "المسار"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "مسار الموقع"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "مسار المحليات"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "مسار دليل المحليات"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "مسارات فاخرة"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "أأستخدم مسارات فاخرة (يمكن قراءتها وتذكرها بسهولة أكبر)؟"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "السمة"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "خادوم السمات"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "مسار السمات"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "دليل السمات"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "أفتارات"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "خادوم الأفتارات"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "مسار الأفتارات"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "دليل الأفتار."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "خلفيات"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "خادوم الخلفيات"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "مسار الخلفيات"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "دليل الخلفيات"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "مطلقا"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "أحيانًا"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "دائمًا"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "استخدم SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
-msgstr "خادÙ\88Ù\85 SSL"
+msgstr "خادم SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "احفظ المسارات"
 
@@ -2235,7 +2540,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"
@@ -2252,18 +2557,18 @@ msgid "Full name"
 msgstr "الاسم الكامل"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 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"
@@ -2275,18 +2580,18 @@ msgstr "السيرة"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 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"
-msgstr ""
+msgstr "شارك مكاني الحالي عند إرسال إشعارات"
 
 #: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
@@ -2298,8 +2603,9 @@ msgstr "الوسوم"
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
+"سِم نفسك (حروف وأرقام و \"-\" و \".\" و \"_\")، افصلها بفاصلة (',') أو مسافة."
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "اللغة"
 
@@ -2318,14 +2624,14 @@ 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
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "لم تُختر المنطقة الزمنية."
 
@@ -2338,23 +2644,23 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "وسم غير صالح: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "لم يمكن حفظ تفضيلات الموقع."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "تعذّر حفظ الملف الشخصي."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "تعذّر حفظ الوسوم."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "حُفظت الإعدادات."
 
@@ -2376,36 +2682,36 @@ msgstr "المسار الزمني العام، صفحة %d"
 msgid "Public timeline"
 msgstr "المسار الزمني العام"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "كن أول من يُرسل!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2418,7 +2724,7 @@ msgstr ""
 "الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
 "([اقرأ المزيد](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2453,7 +2759,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "سحابة الوسوم"
 
@@ -2589,7 +2895,7 @@ msgstr "عذرا، رمز دعوة غير صالح."
 msgid "Registration successful"
 msgstr "نجح التسجيل"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "سجّل"
@@ -2629,7 +2935,7 @@ msgid "Same as password above. Required."
 msgstr "نفس كلمة السر أعلاه. مطلوب."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "البريد الإلكتروني"
 
@@ -2713,7 +3019,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "اشترك"
 
@@ -2735,7 +3041,7 @@ msgstr ""
 
 #: actions/repeat.php:57
 msgid "Only logged-in users can repeat notices."
-msgstr ""
+msgstr "يستطيع المستخدمون الوالجون وحدهم تكرار الإشعارات."
 
 #: actions/repeat.php:64 actions/repeat.php:71
 msgid "No notice specified."
@@ -2749,7 +3055,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصية."
 msgid "You already repeated that notice."
 msgstr "أنت كررت هذه الملاحظة بالفعل."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "مكرر"
 
@@ -2763,6 +3069,11 @@ msgstr "مكرر!"
 msgid "Replies to %s"
 msgstr "الردود على %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "الردود على %s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2804,6 +3115,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "ستاتس نت"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2812,6 +3127,121 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "الجلسات"
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "الإعدادات الأساسية لموقع StatusNet هذا."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "تنقيح الجلسة"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "مكّن تنقيح مُخرجات الجلسة."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "اذف إعدادت الموقع"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "يجب أن تكون مسجل الدخول لرؤية تطبيق."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "أيقونة"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "الاسم"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "المنظمة"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "الوصف"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "إحصاءات"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "اسمح بالمسار"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "إشعارات %s المُفضلة"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2865,17 +3295,22 @@ msgstr "إنها إحدى وسائل مشاركة ما تحب."
 msgid "%s group"
 msgstr "مجموعة %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s أعضاء المجموعة, الصفحة %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "ملف المجموعة الشخصي"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "مسار"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "ملاحظة"
 
@@ -2921,10 +3356,6 @@ msgstr "(لا شيء)"
 msgid "All members"
 msgstr "جميع الأعضاء"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "إحصاءات"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "أنشئ"
@@ -2979,6 +3410,11 @@ msgstr "حُذف الإشعار."
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s والأصدقاء, الصفحة %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3004,25 +3440,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3031,7 +3467,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3039,10 +3475,10 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
-msgstr "تكرارات %s"
+msgstr "تكرار ل%s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 msgid "You cannot silence users on this site."
@@ -3056,198 +3492,144 @@ msgstr "المستخدم مسكت من قبل."
 msgid "Basic settings for this StatusNet site."
 msgstr "الإعدادات الأساسية لموقع StatusNet هذا."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "يجب ألا يكون طول اسم الموقع صفرًا."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
-msgstr "Ù\8aجب Ø£Ù\86 ØªÙ\85Ù\84Ù\83 Ø¹Ù\86Ù\88اÙ\86 Ø¨Ø±Ù\8aد Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a ØµØ§Ù\84Ø­ Ù\84Ù\84اتصاÙ\84"
+msgstr "Ù\8aجب Ø£Ù\86 ØªÙ\85Ù\84Ù\83 Ø¹Ù\86Ù\88اÙ\86 Ø¨Ø±Ù\8aد Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a ØµØ­Ù\8aØ­."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "لغة غير معروفة \"%s\""
+msgstr "لغة غير معروفة \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "حد النص الأدنى هو 140 حرفًا."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "عام"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "اسم الموقع"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "اسم موقعك، \"التدوين المصغر لشركتك\" مثلا"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "عنوان البريد الإلكتروني للاتصال بموقعك"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "محلي"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "المنطقة الزمنية المبدئية"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "المنطقة الزمنية المبدئية للموقع؛ ت‌ع‌م عادة."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "لغة الموقع المبدئية"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "مسارات"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "خادوم"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "اسم مضيف خادوم الموقع."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "مسارات فاخرة"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "أأستخدم مسارات فاخرة (يمكن قراءتها وتذكرها بسهولة أكبر)؟"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "نفاذ"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "خاص"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "أأمنع المستخدمين المجهولين (غير الوالجين) من عرض الموقع؟"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "بالدعوة فقط"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "مُغلق"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "عطّل التسجيل الجديد."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "في مهمة مُجدولة"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "التكرار"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "بلّغ عن المسار"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "الحدود"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "حد النص"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "أقصى عدد للحروف في الإشعارات."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "اذف إعدادت الموقع"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
 msgstr "إعدادات الرسائل القصيرة"
 
@@ -3277,9 +3659,8 @@ msgid "Enter the code you received on your phone."
 msgstr ""
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
-msgstr "لا رقم هاتف."
+msgstr "رقم هاتف SMS"
 
 #: actions/smssettings.php:140
 msgid "Phone number, no punctuation or spaces, with area code"
@@ -3344,15 +3725,25 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "تعذّر حفظ الاشتراك."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "ليس مُستخدمًا محليًا."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "لا ملف كهذا."
+
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "مُشترك"
 
@@ -3362,9 +3753,9 @@ msgid "%s subscribers"
 msgstr "مشتركو %s"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "مشتركو %s، الصفحة %d"
+msgstr "مشتركو %1$s, الصفحة %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3399,9 +3790,9 @@ msgid "%s subscriptions"
 msgstr "اشتراكات %s"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "اشتراكات %s، الصفحة %d"
+msgstr "اشتراكات%1$s, الصفحة %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3412,7 +3803,7 @@ msgstr "هؤلاء الأشخاص الذي تستمع إليهم."
 msgid "These are the people whose notices %s listens to."
 msgstr "هؤلاء الأشخاص الذي يستمع %s إليهم."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3422,19 +3813,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "جابر"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "رسائل قصيرة"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "الإشعارات الموسومة ب%s"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3463,7 +3859,8 @@ msgstr ""
 msgid "User profile"
 msgstr "ملف المستخدم الشخصي"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "صورة"
 
@@ -3518,7 +3915,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3533,84 +3930,64 @@ msgstr "المستخدم"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "رسالة ترحيب غير صالحة. أقصى طول هو 255 حرف."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "الملف الشخصي"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "حد السيرة"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "مستخدمون جدد"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "ترحيب المستخدمين الجدد"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "نص الترحيب بالمستخدمين الجدد (255 حرفًا كحد أقصى)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "الاشتراك المبدئي"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "أشرك المستخدمين الجدد بهذا المستخدم تلقائيًا."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "الدعوات"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "الدعوات مُفعلة"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "الجلسات"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "تنقيح الجلسة"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "مكّن تنقيح مُخرجات الجلسة."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr ""
@@ -3622,84 +3999,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "الرخصة"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "اقبل"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "اشترك بهذا المستخدم"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "ارفض"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "ارفض هذا الاشتراك"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "لا طلب استيثاق!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "رُفض الاشتراك"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3718,9 +4095,14 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "استمتع بالنقانق!"
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s أعضاء المجموعة, الصفحة %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
-msgstr ""
+msgstr "ابحث عن المزيد من المجموعات"
 
 #: actions/usergroups.php:153
 #, php-format
@@ -3733,9 +4115,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 "ستاتس Ù\86ت %s"
 
 #: actions/version.php:153
 #, php-format
@@ -3744,11 +4126,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "حُذِفت الحالة."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3778,26 +4155,15 @@ msgstr ""
 
 #: actions/version.php:189
 msgid "Plugins"
-msgstr ""
-
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "الاسم المستعار"
+msgstr "ملحقات"
 
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "الجلسات"
+msgstr "النسخة"
 
 #: actions/version.php:197
-#, fuzzy
 msgid "Author(s)"
-msgstr "المؤلف"
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "الوصف"
+msgstr "المؤلف(ون)"
 
 #: classes/File.php:144
 #, php-format
@@ -3817,19 +4183,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr ""
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "ملف المجموعة الشخصي"
+msgstr "الانضمام للمجموعة فشل."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "تعذر تحديث المجموعة."
+msgstr "ليس جزءا من المجموعة."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "ملف المجموعة الشخصي"
+msgstr "ترك المجموعة فشل."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -3848,58 +4211,82 @@ msgstr "تعذّر إدراج الرسالة."
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "مشكلة في حفظ الإشعار. طويل جدًا."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "مشكلة في حفظ الإشعار. مستخدم غير معروف."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "مشكلة أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr ""
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "مشكلة أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "آر تي @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "مُشترك أصلا!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "لقد منعك المستخدم."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "غير مشترك!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "لم يمكن حذف اشتراك ذاتي."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "تعذّر حذف الاشتراك."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "أهلا بكم في %1$s يا @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "تعذّر إنشاء المجموعة."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "تعذّر ضبط عضوية المجموعة."
 
@@ -3932,136 +4319,132 @@ msgid "Other options"
 msgstr "خيارات أخرى"
 
 #: 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"
 msgstr "صفحة غير مُعنونة"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "الرئيسية"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "الملف الشخصي ومسار الأصدقاء الزمني"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "الحساب"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "اتصل"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "غيّر ضبط الموقع"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ادعُ"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "اخرج"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "اخرج من الموقع"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "أنشئ حسابًا"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "لُج إلى الموقع"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "مساعدة"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "ساعدني!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "ابحث"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "ابحث عن أشخاص أو نص"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "إشعار الموقع"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "المشاهدات المحلية"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "إشعار الصفحة"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "عن"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "الأسئلة المكررة"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "الشروط"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "خصوصية"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "المصدر"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "اتصل"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
-msgstr ""
+msgstr "رخصة برنامج StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4070,12 +4453,12 @@ msgstr ""
 "**%%site.name%%** خدمة تدوين مصغر يقدمها لك [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4086,32 +4469,54 @@ msgstr ""
 "المتوفر تحت [رخصة غنو أفيرو العمومية](http://www.fsf.org/licensing/licenses/"
 "agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "رخصة محتوى الموقع"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "الرخصة."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "بعد"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "قبل"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4119,9 +4524,8 @@ msgid "You cannot make changes to this site."
 msgstr ""
 
 #: lib/adminpanelaction.php:107
-#, fuzzy
 msgid "Changes to that panel are not allowed."
-msgstr "لا يُسمح بالتسجيل."
+msgstr "التغييرات لهذه اللوحة غير مسموح بها."
 
 #: lib/adminpanelaction.php:206
 msgid "showForm() not implemented."
@@ -4143,10 +4547,99 @@ msgstr "ضبط الموقع الأساسي"
 msgid "Design configuration"
 msgstr "ضبط التصميم"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "ضبط المسارات"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "ضبط التصميم"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "ضبط المسارات"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "ضبط التصميم"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "عدّل التطبيق"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr ""
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "صف تطبيقك"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "مسار المصدر"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "اسحب"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "مرفقات"
@@ -4167,15 +4660,13 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "وسوم هذا المرفق"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
-#, fuzzy
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
-msgstr "تغيير كلمة السر"
+msgstr "تغيير كلمة السر فشل"
 
-#: lib/authenticationplugin.php:197
-#, fuzzy
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
-msgstr "تغيير كلمة السر"
+msgstr "تغيير كلمة السر غير مسموح به"
 
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
@@ -4194,18 +4685,18 @@ msgid "Sorry, this command is not yet implemented."
 msgstr ""
 
 #: lib/command.php:88
-#, fuzzy, php-format
+#, php-format
 msgid "Could not find a user with nickname %s"
-msgstr "تعذّر إيجاد المستخدم الهدف."
+msgstr "لم يمكن إيجاد مستخدم بالاسم %s"
 
 #: lib/command.php:92
 msgid "It does not make a lot of sense to nudge yourself!"
 msgstr ""
 
 #: lib/command.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "Nudge sent to %s"
-msgstr "أرسÙ\84 Ø§Ù\84تÙ\86بÙ\8aÙ\87"
+msgstr "اÙ\84تÙ\86بÙ\8aÙ\87 ØªÙ\85 Ø¥Ø±Ø³Ø§Ù\84Ù\87 Ø¥Ù\84Ù\89 %s"
 
 #: lib/command.php:126
 #, php-format
@@ -4219,9 +4710,8 @@ msgstr ""
 "الإشعارات: %3$s"
 
 #: lib/command.php:152 lib/command.php:390 lib/command.php:451
-#, fuzzy
 msgid "Notice with that id does not exist"
-msgstr "لا ملف بهذه الهوية."
+msgstr "الملاحظة بهذا الرقم غير موجودة"
 
 #: lib/command.php:168 lib/command.php:406 lib/command.php:467
 #: lib/command.php:523
@@ -4233,14 +4723,13 @@ msgid "Notice marked as fave."
 msgstr ""
 
 #: lib/command.php:217
-#, fuzzy
 msgid "You are already a member of that group"
-msgstr "لست عضوا في تلك المجموعة."
+msgstr "أنت بالفعل عضو في هذه المجموعة"
 
 #: lib/command.php:231
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s"
-msgstr "تعذّر إنشاء المجموعة."
+msgstr "لم يمكن ضم المستخدم %s إلى المجموعة %s"
 
 #: lib/command.php:236
 #, php-format
@@ -4248,14 +4737,14 @@ msgid "%s joined group %s"
 msgstr "%s انضم إلى مجموعة %s"
 
 #: lib/command.php:275
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "تعذّر إنشاء المجموعة."
+msgstr "لم يمكن إزالة المستخدم %s من المجموعة %s"
 
 #: lib/command.php:280
-#, fuzzy, php-format
+#, php-format
 msgid "%s left group %s"
-msgstr "%s Ø§Ù\86ضÙ\85 Ø¥Ù\84Ù\89 مجموعة %s"
+msgstr "%s ØªØ±Ù\83 Ø§Ù\84مجموعة %s"
 
 #: lib/command.php:309
 #, php-format
@@ -4283,18 +4772,17 @@ msgid "Message too long - maximum is %d characters, you sent %d"
 msgstr ""
 
 #: lib/command.php:367
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent"
-msgstr "رسالة مباشرة %s"
+msgstr "رسالة مباشرة إلى %s تم إرسالها"
 
 #: lib/command.php:369
 msgid "Error sending direct message."
 msgstr ""
 
 #: lib/command.php:413
-#, fuzzy
 msgid "Cannot repeat your own notice"
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªÙ\83رار Ù\85Ù\84Ø­Ù\88ظتÙ\83 Ø§Ù\84خاصة."
+msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªÙ\83رار Ù\85Ù\84احظتÙ\83 Ø§Ù\84خاصة"
 
 #: lib/command.php:418
 msgid "Already repeated that notice"
@@ -4327,54 +4815,64 @@ msgstr "خطأ أثناء حفظ الإشعار."
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "لا مستخدم كهذا."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "مُشترك ب%s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "ألغِ الاشتراك"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "لست مُشتركًا بأي أحد."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "لست مشتركًا بأحد."
@@ -4384,11 +4882,11 @@ msgstr[3] "أنت مشترك بهؤلاء الأشخاص:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "لا أحد مشترك بك."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "لا أحد مشترك بك."
@@ -4398,11 +4896,11 @@ msgstr[3] "هؤلاء الأشخاص مشتركون بك:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "لست عضوًا في أي مجموعة."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "لست عضوًا في أي مجموعة."
@@ -4412,7 +4910,7 @@ msgstr[3] "أنت عضو في هذه المجموعات:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4426,6 +4924,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4453,19 +4952,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr ""
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "اذهب إلى المُثبّت."
 
@@ -4481,6 +4980,14 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "اتصالات"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "خطأ قاعدة بيانات"
@@ -4607,7 +5114,7 @@ msgstr "أضف أو عدّل شعار %s"
 #: lib/groupnav.php:120
 #, php-format
 msgid "Add or edit %s design"
-msgstr ""
+msgstr "أضف أو عدل تصميم %s"
 
 #: lib/groupsbymemberssection.php:71
 msgid "Groups with most members"
@@ -4620,7 +5127,7 @@ msgstr "المجموعات الأكثر مرسلات"
 #: lib/grouptagcloudsection.php:56
 #, php-format
 msgid "Tags in %s group's notices"
-msgstr ""
+msgstr "وسوم في إشعارات المجموعة %s"
 
 #: lib/htmloutputter.php:103
 msgid "This page is not available in a media type you accept"
@@ -4663,15 +5170,15 @@ msgstr "ميجابايت"
 msgid "kB"
 msgstr "كيلوبايت"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Ù\84غة ØºÙ\8aر Ù\85عرÙ\88Ù\81Ø© \"%s\""
+msgstr "Ù\85صدر ØµÙ\86دÙ\88Ù\82 Ù\88ارد ØºÙ\8aر Ù\85عرÙ\88Ù\81 %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4713,7 +5220,7 @@ msgstr ""
 #: lib/mail.php:236
 #, php-format
 msgid "%1$s is now listening to your notices on %2$s."
-msgstr ""
+msgstr "%1$s يستمع الآن إلى إشعاراتك على %2$s."
 
 #: lib/mail.php:241
 #, php-format
@@ -4729,11 +5236,21 @@ msgid ""
 "----\n"
 "Change your email address or notification options at %8$s\n"
 msgstr ""
+"%1$s يستمع الآن إلى إشعاراتك على %2$s.\n"
+"\n"
+"%3$s\n"
+"\n"
+"%4$s%5$s%6$s\n"
+"بوفاء،\n"
+"%7$s.\n"
+"\n"
+"----\n"
+"غيّر خيارات البريد الإلكتروني والإشعار في %8$s\n"
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr "السيرة: %s\n"
+msgstr "السيرة: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -4863,7 +5380,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "من"
 
@@ -4884,9 +5401,9 @@ msgid "Sorry, no incoming email allowed."
 msgstr ""
 
 #: lib/mailhandler.php:228
-#, fuzzy, php-format
+#, php-format
 msgid "Unsupported message type: %s"
-msgstr "نسق غير مدعوم."
+msgstr "نوع رسالة غير مدعوم: %s"
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
@@ -4927,9 +5444,8 @@ msgid "File could not be moved to destination directory."
 msgstr ""
 
 #: lib/mediafile.php:201 lib/mediafile.php:237
-#, fuzzy
 msgid "Could not determine file's MIME type."
-msgstr "تعذّر حذف المفضلة."
+msgstr "لم يمكن تحديد نوع MIME للملف."
 
 #: lib/mediafile.php:270
 #, php-format
@@ -4971,67 +5487,61 @@ msgid "Attach a file"
 msgstr "أرفق ملفًا"
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "لم يمكن حفظ تفضيلات الموقع."
+msgstr "شارك موقعي"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "لم يمكن حفظ تفضيلات الموقع."
+msgstr "لا تشارك موقعي"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "ش"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "ج"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "ر"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "غ"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "في"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "في السياق"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "مكرر بواسطة"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "رُد على هذا الإشعار"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "رُد"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
@@ -5063,11 +5573,7 @@ msgstr "خطأ أثناء إدراج الملف الشخصي البعيد"
 msgid "Duplicate notice"
 msgstr "ضاعف الإشعار"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "تعذّر إدراج اشتراك جديد."
 
@@ -5083,31 +5589,30 @@ msgstr "الردود"
 msgid "Favorites"
 msgstr "المفضلات"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "صندوق الوارد"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "رسائلك الواردة"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "صندوق الصادر"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "رسائلك المُرسلة"
 
 #: lib/personaltagcloudsection.php:56
 #, php-format
 msgid "Tags in %s's notices"
-msgstr ""
+msgstr "وسوم في إشعارات %s"
 
 #: lib/plugin.php:114
-#, fuzzy
 msgid "Unknown"
-msgstr "إجراء ØºÙ\8aر Ù\85عرÙ\88Ù\81"
+msgstr "غير معروف"
 
 #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
 msgid "Subscriptions"
@@ -5167,11 +5672,15 @@ msgstr "مشهورة"
 
 #: lib/repeatform.php:107
 msgid "Repeat this notice?"
-msgstr "كرر هذا الإشعار؟"
+msgstr "أأكرّر هذا الإشعار؟ّ"
 
 #: lib/repeatform.php:132
 msgid "Repeat this notice"
-msgstr "كرر هذا الإشعار"
+msgstr "كرّر هذا الإشعار"
+
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
 
 #: lib/sandboxform.php:67
 msgid "Sandbox"
@@ -5240,34 +5749,6 @@ msgstr "الأشخاص المشتركون ب%s"
 msgid "Groups %s is a member of"
 msgstr "المجموعات التي %s عضو فيها"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "مُشترك أصلا!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "لقد منعك المستخدم."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "تعذّر الاشتراك."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "غير مشترك!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "لم يمكن حذف اشتراك ذاتي."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "تعذّر حذف الاشتراك."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5318,67 +5799,67 @@ msgstr "عدّل الأفتار"
 msgid "User actions"
 msgstr "تصرفات المستخدم"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "عدّل إعدادات الملف الشخصي"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "عدّل"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "أرسل رسالة مباشرة إلى هذا المستخدم"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "رسالة"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "قبل لحظات قليلة"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "قبل دقيقة تقريبًا"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr ""
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "قبل ساعة تقريبًا"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr ""
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "قبل يوم تقريبا"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr ""
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "قبل شهر تقريبًا"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr ""
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "قبل سنة تقريبًا"
 
@@ -5392,7 +5873,7 @@ msgstr "%s ليس لونًا صحيحًا!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index fbdc0106315543591d48466d8fa2085c32ad1a33..cd86407530496ede718b281442762be0cc3e2ac7 100644 (file)
@@ -1,5 +1,7 @@
 # Translation of StatusNet to Egyptian Spoken Arabic
 #
+# Author@translatewiki.net: Dudi
+# Author@translatewiki.net: Ghaly
 # Author@translatewiki.net: Meno25
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -8,18 +10,73 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:44+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:08+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "نفاذ"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "اذف إعدادت الموقع"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "سجّل"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "خاص"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "أأمنع المستخدمين المجهولين (غير الوالجين) من عرض الموقع؟"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "بالدعوه فقط"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "مُغلق"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "عطّل التسجيل الجديد."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "أرسل"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "اذف إعدادت الموقع"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +91,29 @@ msgstr "لا صفحه كهذه"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "لا مستخدم كهذا."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s و الصحاب, صفحه %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -93,7 +154,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +165,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "أنت والأصدقاء"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -115,25 +176,25 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
-msgstr "لم يتم العثور على وسيله API."
+msgstr "الـ API method مش موجوده."
 
 #: actions/apiaccountupdatedeliverydevice.php:85
 #: actions/apiaccountupdateprofile.php:89
@@ -145,7 +206,7 @@ msgstr "لم يتم العثور على وسيله API."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "تتطلب هذه الطريقه POST."
 
@@ -174,8 +235,9 @@ msgstr "لم يمكن حفظ الملف."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -200,7 +262,7 @@ msgstr "تعذّر تحديث تصميمك."
 
 #: actions/apiblockcreate.php:105
 msgid "You cannot block yourself!"
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 منع نفسك!"
+msgstr "Ù\85ا Ù\8aÙ\86Ù\81عش Øªمنع نفسك!"
 
 #: actions/apiblockcreate.php:126
 msgid "Block user failed."
@@ -253,18 +315,16 @@ msgid "No status found with that ID."
 msgstr ""
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 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."
 msgstr "تعذّر إنشاء مفضله."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "تÙ\84Ù\83 Ø§Ù\84حاÙ\84Ù\87 Ù\84Ù\8aست Ù\85Ù\81ضÙ\84Ø©!"
+msgstr "اÙ\84حاÙ\84Ù\87 Ø¯Ù\89 Ù\85Ø´ Ù\85حطÙ\88Ø·Ù\87 Ù\81Ù\89 Ø§Ù\84تÙ\81ضÙ\8aÙ\84ات."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -284,19 +344,18 @@ msgid "Could not unfollow user: User not found."
 msgstr ""
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 Ù\85Ù\86ع Ù\86Ù\81سÙ\83!"
+msgstr "Ù\85ا Ù\8aÙ\86Ù\81عش Ø¹Ø¯Ù\85 Ù\85تابعة Ù\86Ù\81سÙ\83."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "تعذّر إيجاد المستخدم الهدف."
 
@@ -318,7 +377,8 @@ msgstr ""
 msgid "Not a valid nickname."
 msgstr "ليس اسمًا مستعارًا صحيحًا."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -330,7 +390,8 @@ msgstr "الصفحه الرئيسيه ليست عنونًا صالحًا."
 msgid "Full name is too long (max 255 chars)."
 msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr ""
@@ -366,7 +427,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "لم توجد المجموعة!"
 
@@ -379,18 +440,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr ""
 
 #: 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 "تعذّر إنشاء المجموعه."
+msgstr "ما نفعش يضم %1$s للجروپ %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
 msgstr ""
 
 #: 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 "تعذّر إنشاء المجموعه."
+msgstr "ما نفعش يتشال اليوزر %1$s من الجروپ %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -407,6 +468,113 @@ msgstr "مجموعات %s"
 msgid "groups on %s"
 msgstr "مجموعات %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "حجم غير صالح."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "نيكنيم / پاسوورد مش مظبوطه!"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "خطأ قاعده البيانات أثناء حذف المستخدم OAuth app"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "الحساب"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "الاسم المستعار"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "كلمه السر"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "ارفض"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "اسمح"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -422,11 +590,11 @@ msgstr "لا إشعار كهذا."
 
 #: actions/apistatusesretweet.php:83
 msgid "Cannot repeat your own notice."
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªÙ\83رار Ù\85Ù\84Ø­Ù\88ظتÙ\83 Ø§Ù\84خاصÙ\87."
+msgstr "Ù\85Ø´ Ù\86اÙ\81عÙ\87 ØªØªÙ\83رر Ø§Ù\84Ù\85Ù\84احظتÙ\83 Ø¨ØªØ§Ø¹ØªÙ\83."
 
 #: actions/apistatusesretweet.php:91
 msgid "Already repeated that notice."
-msgstr "كرر بالفعل هذه الملاحظه."
+msgstr "الملاحظه اتكررت فعلا."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
@@ -436,17 +604,17 @@ msgstr "حُذِفت الحاله."
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "لم يوجد"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -460,7 +628,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 ""
@@ -471,7 +639,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!"
@@ -487,27 +655,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "كرر إلى %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "تكرارات %s"
@@ -517,7 +680,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 ""
@@ -577,8 +740,8 @@ msgstr "الأصلي"
 msgid "Preview"
 msgstr "عاين"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "احذف"
 
@@ -590,29 +753,6 @@ msgstr "ارفع"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -648,8 +788,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "لا"
 
@@ -657,13 +798,13 @@ msgstr "لا"
 msgid "Do not block this user"
 msgstr "لا تمنع هذا المستخدم"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "امنع هذا المستخدم"
 
@@ -687,9 +828,9 @@ msgid "%s blocked profiles"
 msgstr ""
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "مشتركو %s، الصفحه %d"
+msgstr "%1$s فايلات معمول ليها بلوك, الصفحه %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -746,8 +887,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "تعذّر حذف تأكيد البريد الإلكترونى."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
-msgstr "عÙ\86Ù\88اÙ\86 Ø§Ù\84تأÙ\83Ù\8aد"
+msgid "Confirm address"
+msgstr "اÙ\83د Ø§Ù\84عÙ\86Ù\88اÙ\86"
 
 #: actions/confirmaddress.php:159
 #, php-format
@@ -763,10 +904,53 @@ msgstr "محادثة"
 msgid "Notices"
 msgstr "الإشعارات"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "لم يوجد رمز التأكيد."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "انت مش بتملك الapplication دى."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "لا تطبيق كهذا."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "لا تحذف هذا الإشعار"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "احذف هذا الإشعار"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -795,7 +979,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
 msgid "Do not delete this notice"
 msgstr "لا تحذف هذا الإشعار"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "احذف هذا الإشعار"
 
@@ -923,16 +1107,6 @@ msgstr "استعد التصميمات المبدئية"
 msgid "Reset back to default"
 msgstr "ارجع إلى المبدئي"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "أرسل"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "احفظ التصميم"
@@ -945,10 +1119,77 @@ msgstr "هذا الشعار ليس مفضلًا!"
 msgid "Add to favorites"
 msgstr "أضف إلى المفضلات"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "لا مستند كهذا."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "تطبيقات OAuth"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "لازم يكون متسجل دخولك علشان تعدّل application."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "ما فيش application زى كده."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "استعمل الفورمه دى علشان تعدّل الapplication بتاعتك."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "الاسم مطلوب."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "الاسم طويل جدا (اكتر حاجه 255 رمز)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "الوصف مطلوب."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "الSource URL مش مظبوط."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "المنظمه طويله جدا (اكتر حاجه 255 رمز)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "ما نفعش تحديث الapplication."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -960,9 +1201,8 @@ msgstr "يجب أن تكون والجًا لتنشئ مجموعه."
 
 #: 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 "Ù\8aجب Ø£Ù\86 ØªÙ\83Ù\88Ù\86 Ø¥Ø¯Ø§Ø±Ù\8aÙ\8bا Ù\84تعدÙ\91Ù\84 Ø§Ù\84Ù\85جÙ\85Ù\88عة"
+msgstr "Ù\84ازÙ\85 ØªÙ\83Ù\88Ù\86 Ø§Ø¯Ø§Ø±Ù\89 Ø¹Ù\84شاÙ\86 ØªØ¹Ø¯Ù\91Ù\84 Ø§Ù\84جرÙ\88Ù¾."
 
 #: actions/editgroup.php:154
 msgid "Use this form to edit the group."
@@ -977,7 +1217,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:433
 msgid "Could not create aliases."
 msgstr "تعذّر إنشاء الكنى."
 
@@ -986,9 +1226,8 @@ msgid "Options saved."
 msgstr "حُفظت الخيارات."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
-msgstr "إعدادات Ø§Ù\84برÙ\8aد Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a"
+msgstr "تظبÙ\8aطات Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84"
 
 #: actions/emailsettings.php:71
 #, php-format
@@ -1017,14 +1256,14 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "ألغِ"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "عناوين البريد الإلكتروني"
+msgstr "عنوان الايميل"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1098,7 +1337,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "ليس عنوان بريد صالح."
 
@@ -1110,7 +1349,7 @@ msgstr "هذا هو عنوان بريدك الإكترونى سابقًا."
 msgid "That email address already belongs to another user."
 msgstr "هذا البريد الإلكترونى ملك مستخدم آخر بالفعل."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "تعذّر إدراج رمز التأكيد."
@@ -1169,7 +1408,7 @@ msgstr "هذا الإشعار مفضله مسبقًا!"
 msgid "Disfavor favorite"
 msgstr "ألغِ تفضيل المفضلة"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "إشعارات مشهورة"
@@ -1228,11 +1467,11 @@ msgstr "اختيار لبعض المستخدمين المتميزين على %s"
 
 #: actions/file.php:34
 msgid "No notice ID."
-msgstr "Ù\84ا Ø±Ù\82Ù\85 Ù\85Ù\84احظÙ\87."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ Ù\85Ù\84احظة ID."
 
 #: actions/file.php:38
 msgid "No notice."
-msgstr "Ù\84ا ملاحظه."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ ملاحظه."
 
 #: actions/file.php:42
 msgid "No attachments."
@@ -1240,7 +1479,7 @@ msgstr "لا مرفقات."
 
 #: actions/file.php:51
 msgid "No uploaded attachments."
-msgstr "Ù\84ا Ù\85رÙ\81Ù\82ات Ù\85رÙ\81Ù\88عÙ\87."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ Ù\81اÙ\8aÙ\84ات Ø§ØªØ¹Ù\85Ù\84Ù\84Ù\87ا upload."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
@@ -1311,7 +1550,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 "امنع المستخدم من المجموعة"
 
@@ -1373,9 +1612,8 @@ msgid ""
 msgstr ""
 
 #: actions/grouplogo.php:178
-#, fuzzy
 msgid "User without matching profile."
-msgstr "Ù\84Ù\8aس Ù\84Ù\84Ù\85ستخدÙ\85 Ù\85Ù\84Ù\81 Ø´Ø®ØµÙ\89."
+msgstr "Ù\8aÙ\88زر Ù\85Ù\86-غÙ\8aر Ù¾Ø±Ù\88Ù\81اÙ\8aÙ\84 Ø²Ù\8aÙ\91Ù\87."
 
 #: actions/grouplogo.php:362
 msgid "Pick a square area of the image to be the logo."
@@ -1395,31 +1633,31 @@ msgid "%s group members"
 msgstr "أعضاء مجموعه %s"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "مجموعات %s، صفحه %d"
+msgstr "%1$s اعضاء الجروپ, صفحه %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "قائمه بمستخدمى هذه المجموعه."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "اجعل هذا المستخدم إداريًا"
 
@@ -1495,9 +1733,8 @@ msgid "Error removing the block."
 msgstr "خطأ أثناء منع الحجب."
 
 #: actions/imsettings.php:59
-#, fuzzy
 msgid "IM settings"
-msgstr "إعدادات Ø§Ù\84Ù\85راسÙ\84Ù\87 Ø§Ù\84Ù\81Ù\88رÙ\8aØ©"
+msgstr "تظبÙ\8aطات Ø¨Ø¹Øª Ø§Ù\84رساÙ\8aÙ\84 Ø§Ù\84Ù\81Ù\88رÙ\8aÙ\87"
 
 #: actions/imsettings.php:70
 #, php-format
@@ -1522,9 +1759,8 @@ msgid ""
 msgstr ""
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
-msgstr "عنوان المراسله الفورية"
+msgstr "عنوان الرساله الفوريه"
 
 #: actions/imsettings.php:126
 #, php-format
@@ -1580,6 +1816,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "هذه ليست هويتك فى جابر."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1656,7 +1897,7 @@ msgstr "رساله شخصية"
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "أرسل"
 
@@ -1701,9 +1942,9 @@ msgid "You must be logged in to join a group."
 msgstr ""
 
 #: actions/joingroup.php:131
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s joined group %2$s"
-msgstr "%s انضم إلى مجموعه %s"
+msgstr "%1$s دخل جروپ %2$s"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
@@ -1714,9 +1955,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."
@@ -1730,7 +1971,7 @@ msgstr "اسم المستخدم أو كلمه السر غير صحيحان."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطأ أثناء ضبط المستخدم. لست مُصرحًا على الأرجح."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "لُج"
@@ -1739,17 +1980,6 @@ msgstr "لُج"
 msgid "Login to site"
 msgstr "لُج إلى الموقع"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "الاسم المستعار"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "كلمه السر"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "تذكّرني"
@@ -1775,29 +2005,50 @@ 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
-#, fuzzy, php-format
+#: actions/makeadmin.php:133
+#, php-format
 msgid "Can't get membership record for %1$s in group %2$s."
-msgstr "تعذّر إنشاء المجموعه."
+msgstr "مش نافع يتجاب سجل العضويه لـ%1$s فى جروپ %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 "تعذّر إنشاء المجموعه."
+msgstr "%1$s مش نافع يبقى ادارى لجروپ %2$s."
 
 #: actions/microsummary.php:69
 msgid "No current status"
 msgstr "لا حاله حالية"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "لا تطبيق كهذا."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "لازم تكون مسجل دخوللك علشان تسجل application."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "استعمل الفورمه دى علشان تسجل application جديد."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "مش ممكن إنشاء الapplication."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "مجموعه جديدة"
@@ -1833,9 +2084,9 @@ msgid "Message sent"
 msgstr "أُرسلت الرسالة"
 
 #: actions/newmessage.php:185
-#, fuzzy, php-format
+#, 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"
@@ -1861,9 +2112,9 @@ msgid "Text search"
 msgstr "بحث فى النصوص"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%1$s\" on %2$s"
-msgstr "نتائج البحث عن \"%s\"  فى %s"
+msgstr "نتايج التدوير لـ\"%1$s\" على %2$s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -1902,6 +2153,48 @@ msgstr "أرسل التنبيه"
 msgid "Nudge sent!"
 msgstr "أُرسل التنبيه!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "لازم تكون مسجل دخولك علشان تشوف ليستة الapplications بتاعتك."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "OAuth applications"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "انت مش يوزر للapplication دى."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1919,22 +2212,22 @@ msgstr "نوع المحتوى "
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
-msgstr "ليس نسق بيانات مدعوم."
+msgstr " مش نظام بيانات مدعوم."
 
 #: actions/opensearch.php:64
 msgid "People Search"
-msgstr "بحث فى الأشخاص"
+msgstr "تدÙ\88Ù\8aر فى الأشخاص"
 
 #: actions/opensearch.php:67
 msgid "Notice Search"
 msgstr "بحث الإشعارات"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
-msgstr "إعدادات Ø£Ø®Ø±Ù\89"
+msgid "Other settings"
+msgstr "تظبÙ\8aطات ØªØ§Ù\86Ù\8aÙ\87"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
@@ -1965,29 +2258,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr ""
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Ù\84ا Ù\85جÙ\85Ù\88عÙ\87 Ù\85Ù\8fحدÙ\91دÙ\87."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ ID Ù\85تحدد Ù\84Ù\84Ù\8aÙ\88زر."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Ù\84ا Ù\85Ù\84احظÙ\87 Ù\85حدده."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ Ø§Ù\85ارة Ø¯Ø®Ù\88Ù\84 Ù\85تحدده."
 
 #: actions/otp.php:90
-#, fuzzy
 msgid "No login token requested."
-msgstr "Ù\84ا Ø·Ù\84ب Ø§Ø³ØªÙ\8aثاÙ\82!"
+msgstr "Ù\85ا Ù\81Ù\8aØ´ Ø·Ù\84ب ØªØ³Ø¬Ù\8aÙ\84 Ø¯Ø®Ù\88Ù\84 Ù\85Ø·Ù\84Ù\88ب."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "لا ملاحظه محدده."
+msgstr "امارة تسجيل الدخول اللى اتحطت مش موجوده."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "لُج إلى الموقع"
+msgstr "تاريخ صلاحية الاماره خلص."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
 
 #: actions/outbox.php:61
 #, php-format
@@ -2059,7 +2352,7 @@ msgstr "تعذّر حفظ كلمه السر الجديده."
 msgid "Password saved."
 msgstr "حُفظت كلمه السر."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "المسارات"
 
@@ -2067,133 +2360,148 @@ msgstr "المسارات"
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "لا يمكن قراءه دليل السمات: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "لا يمكن الكتابه فى دليل الأفتارات: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "لا يمكن الكتابه فى دليل الخلفيات: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "لا يمكن قراءه دليل المحليات: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "الموقع"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "خادوم"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "اسم مضيف خادوم الموقع."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "المسار"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "مسار الموقع"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "مسار المحليات"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "مسار دليل المحليات"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "مسارات فاخرة"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "أأستخدم مسارات فاخره (يمكن قراءتها وتذكرها بسهوله أكبر)؟"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "السمة"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "خادوم السمات"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "مسار السمات"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "دليل السمات"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "أفتارات"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "خادوم الأفتارات"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "مسار الأفتارات"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "دليل الأفتار."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "خلفيات"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "خادوم الخلفيات"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "مسار الخلفيات"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "دليل الخلفيات"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "مطلقا"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "أحيانًا"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "دائمًا"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "استخدم SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
-msgstr "خادوم SSL"
+msgstr "SSL server"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "احفظ المسارات"
 
@@ -2251,7 +2559,7 @@ msgid "Full name"
 msgstr "الاسم الكامل"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "الصفحه الرئيسية"
 
@@ -2274,7 +2582,7 @@ msgstr "السيرة"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "الموقع"
@@ -2298,7 +2606,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "اللغة"
 
@@ -2324,7 +2632,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "لم تُختر المنطقه الزمنيه."
 
@@ -2337,23 +2645,23 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "وسم غير صالح: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "لم يمكن حفظ تفضيلات الموقع."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "تعذّر حفظ الملف الشخصى."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "تعذّر حفظ الوسوم."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "حُفظت الإعدادات."
 
@@ -2375,36 +2683,36 @@ msgstr "المسار الزمنى العام، صفحه %d"
 msgid "Public timeline"
 msgstr "المسار الزمنى العام"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "كن أول من يُرسل!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2417,7 +2725,7 @@ msgstr ""
 "الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
 "([اقرأ المزيد](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2452,7 +2760,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "سحابه الوسوم"
 
@@ -2588,7 +2896,7 @@ msgstr "عذرا، رمز دعوه غير صالح."
 msgid "Registration successful"
 msgstr "نجح التسجيل"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "سجّل"
@@ -2628,7 +2936,7 @@ msgid "Same as password above. Required."
 msgstr "نفس كلمه السر أعلاه. مطلوب."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "البريد الإلكتروني"
 
@@ -2712,7 +3020,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "اشترك"
 
@@ -2738,17 +3046,17 @@ msgstr ""
 
 #: actions/repeat.php:64 actions/repeat.php:71
 msgid "No notice specified."
-msgstr "Ù\84ا Ù\85Ù\84احظÙ\87 Ù\85حدده."
+msgstr "Ù\85ا Ù\81Ù\8aØ´ Ù\85Ù\84احظÙ\87 Ù\85تحدده."
 
 #: actions/repeat.php:76
 msgid "You can't repeat your own notice."
-msgstr "Ù\84ا Ù\8aÙ\85Ù\83Ù\86Ù\83 ØªÙ\83رار Ù\85Ù\84احظتÙ\83 Ø§Ù\84شخصÙ\8aÙ\87."
+msgstr "Ù\85ا Ù\8aÙ\86Ù\81عش ØªÙ\83رر Ø§Ù\84Ù\85Ù\84احظÙ\87 Ø¨ØªØ§Ø¹ØªÙ\83."
 
 #: actions/repeat.php:90
 msgid "You already repeated that notice."
-msgstr "Ø£Ù\86ت Ù\83ررت Ù\87Ø°Ù\87 Ø§Ù\84Ù\85Ù\84احظÙ\87 Ø¨Ø§Ù\84Ù\81عÙ\84."
+msgstr "اÙ\86ت Ø¹Ù\8aدت Ø§Ù\84Ù\85Ù\84احظÙ\87 Ø¯Ù\89 Ù\81عÙ\84ا."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "مكرر"
 
@@ -2762,6 +3070,11 @@ msgstr "مكرر!"
 msgid "Replies to %s"
 msgstr "الردود على %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "الردود على %s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2803,6 +3116,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2811,6 +3128,121 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "الجلسات"
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "الإعدادات الأساسيه لموقع StatusNet هذا."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "تنقيح الجلسة"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "مكّن تنقيح مُخرجات الجلسه."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "اذف إعدادت الموقع"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "لازم تكون مسجل دخولك علشان تشوف اى application."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "الاسم"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "المنظمه"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "الوصف"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "إحصاءات"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "اسمح للURL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "إشعارات %s المُفضلة"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2864,17 +3296,22 @@ msgstr "إنها إحدى وسائل مشاركه ما تحب."
 msgid "%s group"
 msgstr "مجموعه %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s أعضاء المجموعة, الصفحه %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "ملف المجموعه الشخصي"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "مسار"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "ملاحظة"
 
@@ -2920,10 +3357,6 @@ msgstr "(لا شيء)"
 msgid "All members"
 msgstr "جميع الأعضاء"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "إحصاءات"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "أنشئ"
@@ -2978,6 +3411,11 @@ msgstr "حُذف الإشعار."
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s والأصدقاء, الصفحه %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3003,25 +3441,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3030,7 +3468,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3038,7 +3476,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "تكرارات %s"
@@ -3055,200 +3493,146 @@ msgstr "المستخدم مسكت من قبل."
 msgid "Basic settings for this StatusNet site."
 msgstr "الإعدادات الأساسيه لموقع StatusNet هذا."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "يجب ألا يكون طول اسم الموقع صفرًا."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
-msgstr "Ù\8aجب Ø£Ù\86 ØªÙ\85Ù\84Ù\83 Ø¹Ù\86Ù\88اÙ\86 Ø¨Ø±Ù\8aد Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\89 ØµØ§Ù\84Ø­ Ù\84Ù\84اتصاÙ\84"
+msgstr "Ù\84ازÙ\85 Ù\8aÙ\83Ù\88Ù\86 Ø¹Ù\86دÙ\83 Ø¹Ù\86Ù\88اÙ\86 Ø§Ù\8aÙ\85Ù\8aÙ\84 ØµØ§Ù\84Ø­."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "لغه غير معروفه \"%s\""
+msgstr "لغه مش معروفه \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "حد النص الأدنى هو 140 حرفًا."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "عام"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "اسم الموقع"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "اسم موقعك، \"التدوين المصغر لشركتك\" مثلا"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "عنوان البريد الإلكترونى للاتصال بموقعك"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "محلي"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "المنطقه الزمنيه المبدئية"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "المنطقه الزمنيه المبدئيه للموقع؛ ت‌ع‌م عاده."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "لغه الموقع المبدئية"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "مسارات"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "خادوم"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "اسم مضيف خادوم الموقع."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "مسارات فاخرة"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "أأستخدم مسارات فاخره (يمكن قراءتها وتذكرها بسهوله أكبر)؟"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "نفاذ"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "خاص"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "أأمنع المستخدمين المجهولين (غير الوالجين) من عرض الموقع؟"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "بالدعوه فقط"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "مُغلق"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "عطّل التسجيل الجديد."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "فى مهمه مُجدولة"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "التكرار"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "بلّغ عن المسار"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "الحدود"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "حد النص"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "أقصى عدد للحروف فى الإشعارات."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "اذف إعدادت الموقع"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "إعدادات Ø§Ù\84رسائÙ\84 Ø§Ù\84Ù\82صÙ\8aرة"
+msgstr "تظبÙ\8aطات Ø§Ù\84Ù\80SMS"
 
 #: actions/smssettings.php:69
 #, php-format
@@ -3276,9 +3660,8 @@ msgid "Enter the code you received on your phone."
 msgstr ""
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
-msgstr "Ù\84ا Ø±Ù\82Ù\85 Ù\87اتÙ\81."
+msgstr "Ù\86Ù\85رة ØªÙ\84Ù\8aÙ\81Ù\88Ù\86 Ø§Ù\84Ù\80SMS"
 
 #: actions/smssettings.php:140
 msgid "Phone number, no punctuation or spaces, with area code"
@@ -3343,15 +3726,25 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "تعذّر حفظ الاشتراك."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "ليس مُستخدمًا محليًا."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "لا ملف كهذا."
+
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "مُشترك"
 
@@ -3361,9 +3754,9 @@ msgid "%s subscribers"
 msgstr "مشتركو %s"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "مشتركو %s، الصفحه %d"
+msgstr "%1$s مشتركين, صفحه %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3398,9 +3791,9 @@ msgid "%s subscriptions"
 msgstr "اشتراكات %s"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "اشتراكات %s، الصفحه %d"
+msgstr "%1$s اشتراكات, صفحه %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3411,7 +3804,7 @@ msgstr "هؤلاء الأشخاص الذى تستمع إليهم."
 msgid "These are the people whose notices %s listens to."
 msgstr "هؤلاء الأشخاص الذى يستمع %s إليهم."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3421,19 +3814,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "جابر"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "رسائل قصيرة"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "الإشعارات الموسومه ب%s"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3462,13 +3860,14 @@ msgstr ""
 msgid "User profile"
 msgstr "ملف المستخدم الشخصي"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "صورة"
 
 #: actions/tagother.php:141
 msgid "Tag user"
-msgstr "اوسم المستخدم"
+msgstr "اعمل tag لليوزر"
 
 #: actions/tagother.php:151
 msgid ""
@@ -3503,7 +3902,7 @@ msgstr "لم تمنع هذا المستخدم."
 
 #: actions/unsandbox.php:72
 msgid "User is not sandboxed."
-msgstr "اÙ\84Ù\85ستخدÙ\85 Ù\84Ù\8aس Ù\81Ù\89 ØµÙ\86دÙ\88Ù\82 Ø§Ù\84رÙ\85Ù\84."
+msgstr "اÙ\84Ù\8aÙ\88زر Ù\85Ø´ Ù\81Ù\89 Ø§Ù\84سبÙ\88رÙ\87."
 
 #: actions/unsilence.php:72
 msgid "User is not silenced."
@@ -3517,7 +3916,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3532,84 +3931,64 @@ msgstr "المستخدم"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "رساله ترحيب غير صالحه. أقصى طول هو 255 حرف."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "الملف الشخصي"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "حد السيرة"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "مستخدمون جدد"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "ترحيب المستخدمين الجدد"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "نص الترحيب بالمستخدمين الجدد (255 حرفًا كحد أقصى)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "الاشتراك المبدئي"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "أشرك المستخدمين الجدد بهذا المستخدم تلقائيًا."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "الدعوات"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "الدعوات مُفعلة"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "الجلسات"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "تنقيح الجلسة"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "مكّن تنقيح مُخرجات الجلسه."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr ""
@@ -3621,84 +4000,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "الرخصة"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "اقبل"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "اشترك بهذا المستخدم"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "ارفض"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "ارفض هذا الاشتراك"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "لا طلب استيثاق!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "رُفض الاشتراك"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3717,6 +4096,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "استمتع بالنقانق!"
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s أعضاء المجموعة, الصفحه %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3732,9 +4116,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
@@ -3743,11 +4127,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "حُذِفت الحاله."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3779,24 +4158,13 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "الاسم المستعار"
-
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "الجلسات"
+msgstr "النسخه"
 
 #: actions/version.php:197
-#, fuzzy
 msgid "Author(s)"
-msgstr "المؤلف"
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "الوصف"
+msgstr "المؤلف/ين"
 
 #: classes/File.php:144
 #, php-format
@@ -3816,24 +4184,21 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr ""
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "ملف المجموعه الشخصي"
+msgstr "دخول الجروپ فشل."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "تعذر تحديث المجموعه."
+msgstr "مش جزء من الجروپ."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "ملف المجموعه الشخصي"
+msgstr "الخروج من الجروپ فشل."
 
 #: classes/Login_token.php:76
 #, php-format
 msgid "Could not create login token for %s"
-msgstr "Ù\84Ù\85 Ù\8aÙ\85Ù\83Ù\86 Ø¥Ù\86شاء ØªÙ\88Ù\83Ù\86 Ø§Ù\84Ù\88Ù\84Ù\88ج Ù\84%s"
+msgstr "Ù\85ا Ù\86Ù\81عش Ù\8aتعÙ\85Ù\84 Ø§Ù\85ارة ØªØ³Ø¬Ù\8aÙ\84 Ø¯Ø®Ù\88Ù\84 Ù\84Ù\80 %s"
 
 #: classes/Message.php:45
 msgid "You are banned from sending direct messages."
@@ -3847,58 +4212,82 @@ msgstr "تعذّر إدراج الرساله."
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "مشكله فى حفظ الإشعار. طويل جدًا."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "مشكله فى حفظ الإشعار. مستخدم غير معروف."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "مشكله أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr ""
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "مشكله أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "آر تى @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "مُشترك أصلا!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "لقد منعك المستخدم."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "غير مشترك!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "ما نفعش يمسح الاشتراك الشخصى."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "تعذّر حذف الاشتراك."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "أهلا بكم فى %1$s يا @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "تعذّر إنشاء المجموعه."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "تعذّر ضبط عضويه المجموعه."
 
@@ -3931,136 +4320,132 @@ msgid "Other options"
 msgstr "خيارات أخرى"
 
 #: 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"
 msgstr "صفحه غير مُعنونة"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "الرئيسية"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "الملف الشخصى ومسار الأصدقاء الزمني"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "الحساب"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "اتصل"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "غيّر ضبط الموقع"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ادعُ"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "اخرج"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "اخرج من الموقع"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "أنشئ حسابًا"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "لُج إلى الموقع"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "مساعدة"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "ساعدني!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "ابحث"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "ابحث عن أشخاص أو نص"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "إشعار الموقع"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "المشاهدات المحلية"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "إشعار الصفحة"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "عن"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "الأسئله المكررة"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "الشروط"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "خصوصية"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "المصدر"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "اتصل"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4069,12 +4454,12 @@ msgstr ""
 "**%%site.name%%** خدمه تدوين مصغر يقدمها لك [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4085,32 +4470,54 @@ msgstr ""
 "المتوفر تحت [رخصه غنو أفيرو العمومية](http://www.fsf.org/licensing/licenses/"
 "agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "رخصه محتوى الموقع"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "الرخصه."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "بعد"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "قبل"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4118,9 +4525,8 @@ msgid "You cannot make changes to this site."
 msgstr ""
 
 #: lib/adminpanelaction.php:107
-#, fuzzy
 msgid "Changes to that panel are not allowed."
-msgstr "لا يُسمح بالتسجيل."
+msgstr "التغييرات مش مسموحه للـ لوحه دى."
 
 #: lib/adminpanelaction.php:206
 msgid "showForm() not implemented."
@@ -4142,10 +4548,99 @@ msgstr "ضبط الموقع الأساسي"
 msgid "Design configuration"
 msgstr "ضبط التصميم"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "ضبط المسارات"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "ضبط التصميم"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "ضبط المسارات"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "ضبط التصميم"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr ""
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "اوصف الapplication بتاعتك"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "Source URL"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "بطّل"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "مرفقات"
@@ -4166,15 +4661,13 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "وسوم هذا المرفق"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
-#, fuzzy
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
-msgstr "تغيير كلمه السر"
+msgstr "تغيير الپاسوورد فشل"
 
-#: lib/authenticationplugin.php:197
-#, fuzzy
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
-msgstr "تغيير كلمه السر"
+msgstr "تغيير الپاسوورد مش مسموح"
 
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
@@ -4193,18 +4686,18 @@ msgid "Sorry, this command is not yet implemented."
 msgstr ""
 
 #: lib/command.php:88
-#, fuzzy, php-format
+#, php-format
 msgid "Could not find a user with nickname %s"
-msgstr "تعذّر إيجاد المستخدم الهدف."
+msgstr "ما نفعش يلاقى يوزر بإسم %s"
 
 #: lib/command.php:92
 msgid "It does not make a lot of sense to nudge yourself!"
 msgstr ""
 
 #: lib/command.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "Nudge sent to %s"
-msgstr "أرسل التنبيه"
+msgstr "Nudge اتبعتت لـ %s"
 
 #: lib/command.php:126
 #, php-format
@@ -4218,9 +4711,8 @@ msgstr ""
 "الإشعارات: %3$s"
 
 #: lib/command.php:152 lib/command.php:390 lib/command.php:451
-#, fuzzy
 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
@@ -4232,14 +4724,13 @@ msgid "Notice marked as fave."
 msgstr ""
 
 #: lib/command.php:217
-#, fuzzy
 msgid "You are already a member of that group"
-msgstr "لست عضوا فى تلك المجموعه."
+msgstr "انت اصلا عضو فى الجروپ ده"
 
 #: lib/command.php:231
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s"
-msgstr "تعذّر إنشاء المجموعه."
+msgstr "ما نفعش يدخل اليوزر %s لجروپ %s"
 
 #: lib/command.php:236
 #, php-format
@@ -4247,14 +4738,14 @@ msgid "%s joined group %s"
 msgstr "%s انضم إلى مجموعه %s"
 
 #: lib/command.php:275
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "تعذّر إنشاء المجموعه."
+msgstr "ما نفعش يشيل اليوزر %s لجروپ %s"
 
 #: lib/command.php:280
-#, fuzzy, php-format
+#, php-format
 msgid "%s left group %s"
-msgstr "%s Ø§Ù\86ضÙ\85 Ø¥Ù\84Ù\89 Ù\85جÙ\85Ù\88عÙ\87 %s"
+msgstr "%s Ø³Ø§Ø¨ Ø§Ù\84جرÙ\88Ù¾ %s"
 
 #: lib/command.php:309
 #, php-format
@@ -4282,18 +4773,17 @@ msgid "Message too long - maximum is %d characters, you sent %d"
 msgstr ""
 
 #: lib/command.php:367
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent"
-msgstr "رساله مباشره %s"
+msgstr "رساله مباشره اتبعتت لـ %s"
 
 #: lib/command.php:369
 msgid "Error sending direct message."
 msgstr ""
 
 #: lib/command.php:413
-#, fuzzy
 msgid "Cannot repeat your own notice"
-msgstr "لا يمكنك تكرار ملحوظتك الخاصه."
+msgstr "الملاحظه بتاعتك مش نافعه تتكرر"
 
 #: lib/command.php:418
 msgid "Already repeated that notice"
@@ -4326,54 +4816,64 @@ msgstr "خطأ أثناء حفظ الإشعار."
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "لا مستخدم كهذا."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "مُشترك ب%s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "ألغِ الاشتراك"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "لست مُشتركًا بأى أحد."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "لست مشتركًا بأحد."
@@ -4383,11 +4883,11 @@ msgstr[3] "أنت مشترك بهؤلاء الأشخاص:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "لا أحد مشترك بك."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "لا أحد مشترك بك."
@@ -4397,11 +4897,11 @@ msgstr[3] "هؤلاء الأشخاص مشتركون بك:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "لست عضوًا فى أى مجموعه."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "لست عضوًا فى أى مجموعه."
@@ -4411,7 +4911,7 @@ msgstr[3] "أنت عضو فى هذه المجموعات:"
 msgstr[4] ""
 msgstr[5] ""
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4425,6 +4925,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4452,19 +4953,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr ""
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "اذهب إلى المُثبّت."
 
@@ -4480,6 +4981,14 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "كونيكشونات (Connections)"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "خطأ قاعده بيانات"
@@ -4662,15 +5171,15 @@ msgstr "ميجابايت"
 msgid "kB"
 msgstr "كيلوبايت"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Ù\84غÙ\87 ØºÙ\8aر Ù\85عرÙ\88Ù\81Ù\87 \"%s\""
+msgstr "Ù\85صدر Ø§Ù\84Ù\80inbox Ù\85Ø´ Ù\85عرÙ\88Ù\81 %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4730,9 +5239,9 @@ msgid ""
 msgstr ""
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr "اÙ\84سÙ\8aرة: %s\n"
+msgstr "عÙ\86 Ù\86Ù\81سÙ\83: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -4862,7 +5371,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "من"
 
@@ -4883,9 +5392,9 @@ msgid "Sorry, no incoming email allowed."
 msgstr ""
 
 #: lib/mailhandler.php:228
-#, fuzzy, php-format
+#, php-format
 msgid "Unsupported message type: %s"
-msgstr "نسق غير مدعوم."
+msgstr "نوع رساله مش مدعوم: %s"
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
@@ -4926,9 +5435,8 @@ msgid "File could not be moved to destination directory."
 msgstr ""
 
 #: lib/mediafile.php:201 lib/mediafile.php:237
-#, fuzzy
 msgid "Could not determine file's MIME type."
-msgstr "تعذّر حذف المفضله."
+msgstr "مش نافع يتحدد نوع الـMIME بتاع الفايل."
 
 #: lib/mediafile.php:270
 #, php-format
@@ -4970,67 +5478,61 @@ msgid "Attach a file"
 msgstr "أرفق ملفًا"
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "لم يمكن حفظ تفضيلات الموقع."
+msgstr "اعمل مشاركه لمكانى"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Ù\84Ù\85 Ù\8aÙ\85Ù\83Ù\86 Ø­Ù\81ظ ØªÙ\81ضÙ\8aÙ\84ات Ø§Ù\84Ù\85Ù\88Ù\82ع."
+msgstr "Ù\85ا ØªØ¹Ù\85Ù\84Ø´ Ù\85شارÙ\83Ù\87 Ù\84Ù\85Ù\83اÙ\86Ù\89"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "ش"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "ج"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "ر"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "غ"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "في"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "فى السياق"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
-msgstr "مكرر بواسطة"
+msgstr "متكرر من"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "رُد على هذا الإشعار"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "رُد"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
@@ -5062,11 +5564,7 @@ msgstr "خطأ أثناء إدراج الملف الشخصى البعيد"
 msgid "Duplicate notice"
 msgstr "ضاعف الإشعار"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "تعذّر إدراج اشتراك جديد."
 
@@ -5082,19 +5580,19 @@ msgstr "الردود"
 msgid "Favorites"
 msgstr "المفضلات"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "صندوق الوارد"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "رسائلك الواردة"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "صندوق الصادر"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "رسائلك المُرسلة"
 
@@ -5104,9 +5602,8 @@ msgid "Tags in %s's notices"
 msgstr ""
 
 #: lib/plugin.php:114
-#, fuzzy
 msgid "Unknown"
-msgstr "إجراء غير معروف"
+msgstr "مش معروف"
 
 #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
 msgid "Subscriptions"
@@ -5172,6 +5669,10 @@ msgstr "كرر هذا الإشعار؟"
 msgid "Repeat this notice"
 msgstr "كرر هذا الإشعار"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5239,34 +5740,6 @@ msgstr "الأشخاص المشتركون ب%s"
 msgid "Groups %s is a member of"
 msgstr "المجموعات التى %s عضو فيها"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "مُشترك أصلا!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "لقد منعك المستخدم."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "تعذّر الاشتراك."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "غير مشترك!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "لم يمكن حذف اشتراك ذاتى."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "تعذّر حذف الاشتراك."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5317,67 +5790,67 @@ msgstr "عدّل الأفتار"
 msgid "User actions"
 msgstr "تصرفات المستخدم"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "عدّل إعدادات الملف الشخصي"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "عدّل"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "أرسل رساله مباشره إلى هذا المستخدم"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "رسالة"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "قبل لحظات قليلة"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "قبل دقيقه تقريبًا"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr ""
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "قبل ساعه تقريبًا"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr ""
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "قبل يوم تقريبا"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr ""
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "قبل شهر تقريبًا"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr ""
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "قبل سنه تقريبًا"
 
@@ -5391,7 +5864,7 @@ msgstr "%s ليس لونًا صحيحًا!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 7fe8ac423c91de63dea26d3f740d29b673b45f6e..3cb1216285914d2ef100db78cb7855550d0fa365 100644 (file)
@@ -9,17 +9,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:47+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:11+0000\n"
 "Language-Team: Bulgarian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Достъп"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Настройки за достъп до сайта"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Регистриране"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Частен"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Само с покани"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Новите регистрации да са само с покани."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Затворен"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Изключване на новите регистрации."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Запазване"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Запазване настройките за достъп"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +86,29 @@ msgstr "Няма такака страница."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Няма такъв потребител"
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s и приятели, страница %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -93,7 +149,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +160,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Вие и приятелите"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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."
@@ -115,23 +171,23 @@ msgstr "Бележки от %1$s и приятели в %2$s."
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Не е открит методът в API."
 
@@ -145,7 +201,7 @@ msgstr "Не е открит методът в API."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Този метод изисква заявка POST."
 
@@ -174,8 +230,9 @@ msgstr "Грешка при запазване на профила."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -296,12 +353,12 @@ msgstr "Не можете да спрете да следите себе си!"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Трябва да се дадат два идентификатора или имена на потребители."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Грешка при изтегляне на общия поток"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Целевият потребител не беше открит."
 
@@ -325,7 +382,8 @@ msgstr "Опитайте друг псевдоним, този вече е за
 msgid "Not a valid nickname."
 msgstr "Неправилен псевдоним."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -337,7 +395,8 @@ msgstr "Адресът на личната страница не е правил
 msgid "Full name is too long (max 255 chars)."
 msgstr "Пълното име е твърде дълго (макс. 255 знака)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Описанието е твърде дълго (до %d символа)."
@@ -362,9 +421,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 "Ð\9eпиÑ\82айÑ\82е Ð´Ñ\80Ñ\83г Ð¿Ñ\81евдоним, Ñ\82ози Ð²ÐµÑ\87е Ðµ Ð·Ð°ÐµÑ\82."
+msgstr "Ð\9fÑ\81евдонимÑ\8aÑ\82 \"%s\" Ð²ÐµÑ\87е Ðµ Ð·Ð°ÐµÑ\82. Ð\9eпиÑ\82айÑ\82е Ð´Ñ\80Ñ\83г."
 
 #: actions/apigroupcreate.php:286 actions/editgroup.php:234
 #: actions/newgroup.php:178
@@ -373,7 +432,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Групата не е открита."
 
@@ -414,6 +473,115 @@ msgstr "Групи на %s"
 msgid "groups on %s"
 msgstr "групи в %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Неправилен размер."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Имаше проблем със сесията ви в сайта. Моля, опитайте отново!"
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Неправилно име или парола."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Грешка в настройките на потребителя."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Неочаквано изпращане на форма."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Сметка"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Псевдоним"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Парола"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Всички"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Този метод изисква заявка POST или DELETE."
@@ -443,17 +611,17 @@ msgstr "Бележката е изтрита."
 msgid "No status with that ID found."
 msgstr "Не е открита бележка с такъв идентификатор."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Твърде дълга бележка. Трябва да е най-много 140 знака."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Не е открито."
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -467,7 +635,7 @@ msgstr "Неподдържан формат."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Отбелязани като любими от %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s бележки отбелязани като любими от %s / %s."
@@ -478,7 +646,7 @@ msgstr "%s бележки отбелязани като любими от %s / %
 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!"
@@ -494,27 +662,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Повторено от %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Повторено за %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Повторения на %s"
@@ -524,7 +687,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
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Бележки от %1$s в %2$s."
@@ -586,8 +749,8 @@ msgstr "Оригинал"
 msgid "Preview"
 msgstr "Преглед"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Изтриване"
 
@@ -599,29 +762,6 @@ msgstr "Качване"
 msgid "Crop"
 msgstr "Изрязване"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Имаше проблем със сесията ви в сайта. Моля, опитайте отново!"
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Неочаквано изпращане на форма."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Изберете квадратна област от изображението за аватар"
@@ -657,8 +797,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Не"
 
@@ -666,13 +807,13 @@ msgstr "Не"
 msgid "Do not block this user"
 msgstr "Да не се блокира този потребител"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "Блокиране на потребителя"
 
@@ -757,8 +898,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Грешка при изтриване потвърждението по е-поща."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
-msgstr "Потвърждаване на адреса"
+msgid "Confirm address"
+msgstr "Потвърждаване на адрес"
 
 #: actions/confirmaddress.php:159
 #, php-format
@@ -774,10 +915,54 @@ msgstr "Разговор"
 msgid "Notices"
 msgstr "Бележки"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "За да редактирате група, трябва да сте влезли."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Бележката няма профил"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Не членувате в тази група."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Имаше проблем със сесията ви в сайта."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Няма такава бележка."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Да не се изтрива бележката"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Изтриване на бележката"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -806,7 +991,7 @@ msgstr "Наистина ли искате да изтриете тази бел
 msgid "Do not delete this notice"
 msgstr "Да не се изтрива бележката"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Изтриване на бележката"
 
@@ -939,16 +1124,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Запазване"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -961,10 +1136,87 @@ msgstr "Тази бележка не е отбелязана като любим
 msgid "Add to favorites"
 msgstr "Добавяне към любимите"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Няма такъв документ."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Други настройки"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "За да редактирате група, трябва да сте влезли."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Няма такава бележка."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Използвайте тази бланка за създаване на нова група."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Същото като паролата по-горе. Задължително поле."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Пълното име е твърде дълго (макс. 255 знака)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Опитайте друг псевдоним, този вече е зает."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Описание"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Адресът на личната страница не е правилен URL."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Името на местоположението е твърде дълго (макс. 255 знака)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Грешка при обновяване на групата."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -993,7 +1245,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:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Грешка при отбелязване като любима."
@@ -1003,7 +1255,6 @@ msgid "Options saved."
 msgstr "Настройките са запазени."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
 msgstr "Настройки на е-поща"
 
@@ -1036,14 +1287,14 @@ msgstr ""
 "спам) за съобщение с указания."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Отказ"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "Адреси на е-поща"
+msgstr "Адрес на е-поща"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1118,7 +1369,7 @@ msgid "Cannot normalize that email address"
 msgstr "Грешка при нормализиране адреса на е-пощата"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Неправилен адрес на е-поща."
 
@@ -1130,7 +1381,7 @@ msgstr "Това и сега е адресът на е-пощата ви."
 msgid "That email address already belongs to another user."
 msgstr "Тази е-поща вече се използва от друг потребител."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Не може да се вмъкне код за потвърждение."
@@ -1193,7 +1444,7 @@ msgstr "Тази бележка вече е отбелязана като люб
 msgid "Disfavor favorite"
 msgstr "Нелюбимо"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Популярни бележки"
@@ -1340,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
 #, fuzzy
 msgid "Block user from group"
 msgstr "Блокиране на потребителя"
@@ -1439,24 +1690,24 @@ msgstr "Членове на групата %s, страница %d"
 msgid "A list of the users in this group."
 msgstr "Списък с потребителите в тази група."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1630,6 +1881,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Това не е вашият Jabber ID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Входяща кутия за %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1710,7 +1966,7 @@ msgstr "Лично съобщение"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Може да добавите и лично съобщение към поканата."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Прати"
 
@@ -1794,9 +2050,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."
@@ -1811,25 +2067,14 @@ msgstr "Грешно име или парола."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Забранено."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Вход"
 
 #: actions/login.php:227
 msgid "Login to site"
-msgstr ""
-
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Псевдоним"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Парола"
+msgstr "Вход в сайта"
 
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
@@ -1860,21 +2105,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 "За да редактирате групата, трябва да сте й администратор."
@@ -1883,6 +2128,30 @@ msgstr "За да редактирате групата, трябва да ст
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Няма такава бележка."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "За да създавате група, трябва да сте влезли."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Използвайте тази бланка за създаване на нова група."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Грешка при отбелязване като любима."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Нова група"
@@ -1991,6 +2260,51 @@ msgstr "Побутването е изпратено"
 msgid "Nudge sent!"
 msgstr "Побутването е изпратено!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "За да редактирате група, трябва да сте влезли."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Други настройки"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Не членувате в тази група."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Бележката няма профил"
@@ -2008,8 +2322,8 @@ msgstr "вид съдържание "
 msgid "Only "
 msgstr "Само "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Неподдържан формат на данните"
 
@@ -2022,7 +2336,7 @@ msgid "Notice Search"
 msgstr "Търсене на бележки"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Други настройки"
 
 #: actions/othersettings.php:71
@@ -2079,6 +2393,11 @@ msgstr "Невалидно съдържание на бележка"
 msgid "Login token expired."
 msgstr "Влизане в сайта"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Изходяща кутия за %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2150,7 +2469,7 @@ msgstr "Грешка при запазване на новата парола."
 msgid "Password saved."
 msgstr "Паролата е записана."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Пътища"
 
@@ -2158,133 +2477,148 @@ msgstr "Пътища"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Пътища и сървърни настройки за тази инсталация на StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Страницата не е достъпна във вида медия, който приемате"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Сайт"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Сървър"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Път"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Път до сайта"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
-msgid "Theme"
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Кратки URL-адреси"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
+msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Аватари"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Сървър на аватара"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Път до аватара"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Директория на аватара"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Фонове"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Сървър на фона"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Път до фона"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Директория на фона"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Никога"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Понякога"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Винаги"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Използване на SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Кога да се използва SSL"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-сървър"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Запазване на пътищата"
 
@@ -2344,7 +2678,7 @@ msgid "Full name"
 msgstr "Пълно име"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Лична страница"
 
@@ -2367,7 +2701,7 @@ msgstr "За мен"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Местоположение"
@@ -2391,7 +2725,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Език"
 
@@ -2419,7 +2753,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Биографията е твърде дълга (до %d символа)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Не е избран часови пояс"
 
@@ -2432,24 +2766,24 @@ msgstr "Името на езика е твърде дълго (може да е
 msgid "Invalid tag: \"%s\""
 msgstr "Неправилен етикет: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Грешка при запазване етикетите."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Грешка при запазване на профила."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Грешка при запазване етикетите."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Настройките са запазени."
 
@@ -2471,36 +2805,36 @@ msgstr "Общ поток, страница %d"
 msgid "Public timeline"
 msgstr "Общ поток"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Емисия на общия поток (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Емисия на общия поток (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Емисия на общия поток (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2509,7 +2843,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2543,7 +2877,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2682,7 +3016,7 @@ msgstr "Грешка в кода за потвърждение."
 msgid "Registration successful"
 msgstr "Записването е успешно."
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистриране"
@@ -2724,7 +3058,7 @@ msgid "Same as password above. Required."
 msgstr "Същото като паролата по-горе. Задължително поле."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Е-поща"
 
@@ -2752,7 +3086,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"
@@ -2769,9 +3103,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%%%%), които познавате или с които "
@@ -2829,7 +3163,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Адрес на профила ви в друга, съвместима услуга за микроблогване"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Абониране"
 
@@ -2867,7 +3201,7 @@ msgstr "Не можете да повтаряте собствена бележ
 msgid "You already repeated that notice."
 msgstr "Вече сте повторили тази бележка."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -2881,6 +3215,11 @@ msgstr "Повторено!"
 msgid "Replies to %s"
 msgstr "Отговори на %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Отговори до %1$s в %2$s!"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2922,6 +3261,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Отговори до %1$s в %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2932,6 +3275,124 @@ msgstr "Не може да изпращате съобщения до този 
 msgid "User is already sandboxed."
 msgstr "Потребителят ви е блокирал."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Сесии"
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Основни настройки на тази инсталация на StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Управление на сесии"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Запазване настройките на сайта"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "За напуснете група, трябва да сте влезли."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Бележката няма профил"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Икона"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Име"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Организация"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Описание"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Статистики"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "Автор"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Наистина ли искате да изтриете тази бележка?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Любими бележки на %1$s, страница %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Грешка при изтегляне на любимите бележки"
@@ -2981,23 +3442,28 @@ msgstr "Така можете да споделите какво харесва
 msgid "%s group"
 msgstr "Група %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Членове на групата %s, страница %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Профил на групата"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
-msgstr ""
+msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Бележка"
 
 #: actions/showgroup.php:284 lib/groupeditform.php:184
 msgid "Aliases"
-msgstr ""
+msgstr "Псевдоними"
 
 #: actions/showgroup.php:293
 msgid "Group actions"
@@ -3037,10 +3503,6 @@ msgstr ""
 msgid "All members"
 msgstr "Всички членове"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Статистики"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Създадена на"
@@ -3095,6 +3557,11 @@ msgstr "Бележката е изтрита."
 msgid " tagged %s"
 msgstr "Бележки с етикет %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, страница %2$d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3120,25 +3587,25 @@ msgstr "Емисия с бележки на %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF за %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3147,7 +3614,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3155,7 +3622,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Отговори на %s"
@@ -3172,199 +3639,146 @@ msgstr "Потребителят вече е заглушен."
 msgid "Basic settings for this StatusNet site."
 msgstr "Основни настройки на тази инсталация на StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Името на сайта е задължително."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Адресът на е-поща за контакт е задължителен"
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "Непознат език \"%s\""
+msgstr "Непознат език \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Минималното ограничение на текста е 140 знака."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Общи"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Име на сайта"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Адрес на е-поща за контакт със сайта"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Местоположение"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Часови пояс по подразбиране"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Часови пояс по подразбиране за сайта (обикновено UTC)."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Език по подразбиране за сайта"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Сървър"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Кратки URL-адреси"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Достъп"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Частен"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Само с покани"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Новите регистрации да са само с покани."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Затворен"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Изключване на новите регистрации."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Честота"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Ограничения"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Запазване настройките на сайта"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
 msgstr "Настройки за SMS"
 
@@ -3395,7 +3809,6 @@ msgid "Enter the code you received on your phone."
 msgstr "Въведете кода, който получихте по телефона."
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
 msgstr "Телефонен номер за SMS"
 
@@ -3470,16 +3883,27 @@ msgstr "Не е въведен код."
 msgid "You are not subscribed to that profile."
 msgstr "Не сте абонирани за този профил"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Грешка при създаване на нов абонамент."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Не е локален потребител."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Няма такъв файл."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Не сте абонирани за този профил"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "Абониране"
@@ -3540,7 +3964,7 @@ msgstr "Няма хора, чийто бележки четете."
 msgid "These are the people whose notices %s listens to."
 msgstr "Хора, чийто бележки %s чете."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3550,19 +3974,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s не получава ничии бележки."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Бележки с етикет %s, страница %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3592,7 +4021,8 @@ msgstr "Етикети"
 msgid "User profile"
 msgstr "Потребителски профил"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Снимка"
 
@@ -3651,7 +4081,7 @@ msgstr "Сървърът не е върнал адрес на профила."
 msgid "Unsubscribed"
 msgstr "Отписване"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3666,88 +4096,68 @@ msgstr "Потребител"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Профил"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Нови потребители"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Всички абонаменти"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Автоматично абониране за всеки, който се абонира за мен (подходящо за "
 "ботове)."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Покани"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Поканите са включени"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Сесии"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Управление на сесии"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Одобряване на абонамента"
@@ -3762,37 +4172,37 @@ msgstr ""
 "Проверете тези детайли и се уверете, че искате да се абонирате за бележките "
 "на този потребител. Ако не искате абонамента, натиснете \"Cancel\" (Отказ)."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Лиценз"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Приемане"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Абониране за този потребител"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Охвърляне"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Абонаменти на %s"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Няма заявка за одобрение."
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Абонаментът е одобрен"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3802,11 +4212,11 @@ msgstr ""
 "Абонаментът е одобрен, но не е зададен callback URL. За да завършите "
 "одобряването, проверете инструкциите на сайта. Вашият token за абонамент е:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Абонаментът е отказан"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3816,37 +4226,37 @@ msgstr ""
 "Абонаментът е отказан, но не е зададен callback URL. За да откажете напълно "
 "абонамента, проверете инструкциите на сайта."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Грешка при четене адреса на аватара '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Грешен вид изображение за '%s'"
@@ -3866,10 +4276,14 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Членове на групата %s, страница %d"
+
 #: actions/usergroups.php:130
-#, fuzzy
 msgid "Search for more groups"
-msgstr "ТÑ\8aÑ\80Ñ\81ене Ð·Ð° Ñ\85оÑ\80а Ð¸Ð»Ð¸ Ð±ÐµÐ»ÐµÐ¶Ðºи"
+msgstr "ТÑ\8aÑ\80Ñ\81ене Ð½Ð° Ð¾Ñ\89е Ð³Ñ\80Ñ\83пи"
 
 #: actions/usergroups.php:153
 #, php-format
@@ -3882,9 +4296,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
@@ -3893,11 +4307,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Бележката е изтрита."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3927,26 +4336,15 @@ msgstr ""
 
 #: actions/version.php:189
 msgid "Plugins"
-msgstr ""
-
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Псевдоним"
+msgstr "Приставки"
 
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "СеÑ\81ии"
+msgstr "Ð\92еÑ\80Ñ\81иÑ\8f"
 
 #: actions/version.php:197
-#, fuzzy
 msgid "Author(s)"
-msgstr "Автор"
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Описание"
+msgstr "Автор(и)"
 
 #: classes/File.php:144
 #, php-format
@@ -3998,28 +4396,28 @@ msgstr "Грешка при вмъкване на съобщението."
 msgid "Could not update message with new URI."
 msgstr "Грешка при обновяване на бележката с нов URL-адрес."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Проблем при записване на бележката."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Грешка при записване на бележката. Непознат потребител."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте "
 "отново след няколко минути."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4028,34 +4426,61 @@ msgstr ""
 "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте "
 "отново след няколко минути."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Забранено ви е да публикувате бележки в този сайт."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Проблем при записване на бележката."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Ð\93Ñ\80еÑ\88ка Ð² Ð±Ð°Ð·Ð°Ñ\82а Ð¾Ñ\82 Ð´Ð°Ð½Ð½Ð¸ â\80\94 Ð¾Ñ\82говоÑ\80 Ð¿Ñ\80и Ð²Ð¼Ñ\8aкванеÑ\82о: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Ð\9fÑ\80облем Ð¿Ñ\80и Ð·Ð°Ð¿Ð¸Ñ\81ване Ð½Ð° Ð±ÐµÐ»ÐµÐ¶ÐºÐ°Ñ\82а."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "Потребителят е забранил да се абонирате за него."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Потребителят ви е блокирал."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Не сте абонирани!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Грешка при изтриване на абонамента."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Грешка при изтриване на абонамента."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Добре дошли в %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Грешка при създаване на групата."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Грешка при създаване на нов абонамент."
@@ -4090,140 +4515,136 @@ msgid "Other options"
 msgstr "Други настройки"
 
 #: 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"
 msgstr "Неозаглавена страница"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Начало"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Сметка"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Промяна на поща, аватар, парола, профил"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Свързване"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Свързване към услуги"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Промяна настройките на сайта"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Покани"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Поканете приятели и колеги да се присъединят към вас в %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Изход"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Излизане от сайта"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Създаване на нова сметка"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Влизане в сайта"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Помощ"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "Помощ"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Търсене"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Търсене за хора или бележки"
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "Нова бележка"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "Нова бележка"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Абонаменти"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Относно"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Въпроси"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Условия"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Поверителност"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Изходен код"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Табелка"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Лиценз на програмата StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4232,12 +4653,12 @@ msgstr ""
 "**%%site.name%%** е услуга за микроблогване, предоставена ви от [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** е услуга за микроблогване. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4248,33 +4669,55 @@ msgstr ""
 "достъпна под [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Лиценз на съдържанието"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Всички "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "лиценз."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Страниране"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "След"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Преди"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Имаше проблем със сесията ви в сайта."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4308,10 +4751,104 @@ msgstr "Основна настройка на сайта"
 msgid "Design configuration"
 msgstr "Настройка на оформлението"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Настройка на пътищата"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Настройка на оформлението"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Настройка на пътищата"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Настройка на оформлението"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Опишете групата или темата в до %d букви"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Опишете групата или темата"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Изходен код"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "Адрес на страница, блог или профил в друг сайт на групата"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "Адрес на страница, блог или профил в друг сайт на групата"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Премахване"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4332,12 +4869,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Паролата е записана."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Паролата е записана."
@@ -4492,80 +5029,89 @@ msgstr "Грешка при записване на бележката."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Уточнете името на потребителя, за когото се абонирате."
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Няма такъв потребител"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Абонирани сте за %s."
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Уточнете името на потребителя, от когото се отписвате."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Отписани сте от %s."
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Командата все още не се поддържа."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Уведомлението е изключено."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Грешка при изключване на уведомлението."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Уведомлението е включено."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Грешка при включване на уведомлението."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Отписани сте от %s."
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Не сте абонирани за никого."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Вече сте абонирани за следните потребители:"
 msgstr[1] "Вече сте абонирани за следните потребители:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Никой не е абониран за вас."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Грешка при абониране на друг потребител за вас."
 msgstr[1] "Грешка при абониране на друг потребител за вас."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Не членувате в нито една група."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Не членувате в тази група."
 msgstr[1] "Не членувате в тази група."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4579,6 +5125,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4606,19 +5153,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Не е открит файл с настройки. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "Влизане в сайта"
@@ -4635,6 +5182,15 @@ msgstr "Бележки през месинджър (IM)"
 msgid "Updates by SMS"
 msgstr "Бележки през SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Свързване"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Грешка в базата от данни"
@@ -4822,12 +5378,12 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, fuzzy, php-format
 msgid "Unknown inbox source %d."
 msgstr "Непознат език \"%s\""
@@ -4900,11 +5456,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
@@ -5034,7 +5588,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "от"
 
@@ -5152,57 +5706,53 @@ msgid "Do not share my location"
 msgstr "Грешка при запазване етикетите."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "С"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "Ю"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "И"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "З"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "в контекст"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Повторено от"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Отговаряне на тази бележка"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Отговор"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Бележката е повторена."
 
@@ -5235,12 +5785,7 @@ msgstr "Грешка при вмъкване на отдалечен профи
 msgid "Duplicate notice"
 msgstr "Изтриване на бележката"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Потребителят е забранил да се абонирате за него."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Грешка при добавяне на нов абонамент."
 
@@ -5256,19 +5801,19 @@ msgstr "Отговори"
 msgid "Favorites"
 msgstr "Любими"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Входящи"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Получените от вас съобщения"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Изходящи"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Изпратените от вас съобщения"
 
@@ -5348,6 +5893,10 @@ msgstr "Повтаряне на тази бележка"
 msgid "Repeat this notice"
 msgstr "Повтаряне на тази бележка"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5419,36 +5968,6 @@ msgstr "Абонирани за %s"
 msgid "Groups %s is a member of"
 msgstr "Групи, в които участва %s"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Потребителят ви е блокирал."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Грешка при абониране."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Грешка при абониране на друг потребител за вас."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Не сте абонирани!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Грешка при изтриване на абонамента."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Грешка при изтриване на абонамента."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5501,67 +6020,67 @@ msgstr "Редактиране на аватара"
 msgid "User actions"
 msgstr "Потребителски действия"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Редактиране на профила"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Редактиране"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Изпращате на пряко съобщение до този потребител."
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Съобщение"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "преди няколко секунди"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "преди около минута"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "преди около %d минути"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "преди около час"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "преди около %d часа"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "преди около ден"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "преди около %d дни"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "преди около месец"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "преди около %d месеца"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "преди около година"
 
@@ -5575,7 +6094,7 @@ msgstr "%s не е допустим цвят!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s не е допустим цвят! Използвайте 3 или 6 шестнадесетични знака."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 8ad8d18eca6ac4af520a0749f86aed07446cdf3d..d94ad84310f547308bf68adf1af4c5aa47bd4475 100644 (file)
@@ -1,5 +1,6 @@
 # Translation of StatusNet to Catalan
 #
+# Author@translatewiki.net: Aleator
 # Author@translatewiki.net: McDutchie
 # Author@translatewiki.net: Toniher
 # --
@@ -9,17 +10,74 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:50+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:15+0000\n"
 "Language-Team: Catalan\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Accés"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Desa els paràmetres del lloc"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Registre"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privat"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Voleu prohibir als usuaris anònims (que no han iniciat cap sessió) "
+"visualitzar el lloc?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Només invitació"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Fes que el registre sigui només amb invitacions."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Tancat"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Inhabilita els nous registres."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Guardar"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Desa els paràmetres del lloc"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +92,29 @@ msgstr "No existeix la pàgina."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "No existeix aquest usuari."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s perfils blocats, pàgina %d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -95,7 +157,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -106,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Un mateix i amics"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Actualitzacions de %1$s i amics a %2$s!"
@@ -117,23 +179,23 @@ msgstr "Actualitzacions de %1$s i amics a %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "No s'ha trobat el mètode API!"
@@ -148,7 +210,7 @@ msgstr "No s'ha trobat el mètode API!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Aquest mètode requereix POST."
 
@@ -179,8 +241,9 @@ msgstr "No s'ha pogut guardar el perfil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -304,11 +367,11 @@ msgstr "No podeu suprimir els usuaris."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Dos ids d'usuari o screen_names has de ser substituïts."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "No s'ha pogut determinar l'usuari d'origen."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "No es pot trobar cap estatus."
@@ -333,7 +396,8 @@ msgstr "Aquest sobrenom ja existeix. Prova un altre. "
 msgid "Not a valid nickname."
 msgstr "Sobrenom no vàlid."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -345,7 +409,8 @@ msgstr "La pàgina personal no és un URL vàlid."
 msgid "Full name is too long (max 255 chars)."
 msgstr "El teu nom és massa llarg (màx. 255 caràcters)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "La descripció és massa llarga (màx. %d caràcters)."
@@ -381,7 +446,7 @@ msgstr "L'àlies no pot ser el mateix que el sobrenom."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "No s'ha trobat el grup!"
 
@@ -422,6 +487,118 @@ msgstr "%s grups"
 msgid "groups on %s"
 msgstr "grups sobre %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Mida invàlida."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Sembla que hi ha hagut un problema amb la teva sessió. Prova-ho de nou, si "
+"us plau."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Nom d'usuari o contrasenya invàlids."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Error en configurar l'usuari."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Hashtag de l'error de la base de dades:%s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Enviament de formulari inesperat."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Compte"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Sobrenom"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Contrasenya"
+
+#: actions/apioauthauthorize.php:328
+#, fuzzy
+msgid "Deny"
+msgstr "Disseny"
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Tot"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Aquest mètode requereix POST o DELETE."
@@ -453,17 +630,17 @@ msgstr "S'ha suprimit l'estat."
 msgid "No status with that ID found."
 msgstr "No s'ha trobat cap estatus amb la ID trobada."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Massa llarg. La longitud màxima és de %d caràcters."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "No s'ha trobat"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -477,7 +654,7 @@ msgstr "El format no està implementat."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Preferits de %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s actualitzacions favorites per %s / %s."
@@ -488,7 +665,7 @@ msgstr "%s actualitzacions favorites per %s / %s."
 msgid "%s timeline"
 msgstr "%s línia temporal"
 
-#: 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!"
@@ -504,27 +681,22 @@ msgstr "%1$s / Notificacions contestant a %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s notificacions que responen a notificacions 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 "%s línia temporal pública"
 
-#: 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 notificacions de tots!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repetit per %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Respostes a %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Repeticions de %s"
@@ -534,7 +706,7 @@ msgstr "Repeticions de %s"
 msgid "Notices tagged with %s"
 msgstr "Aviso etiquetats amb %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 "Actualitzacions etiquetades amb %1$s el %2$s!"
@@ -595,8 +767,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Vista prèvia"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Suprimeix"
 
@@ -608,31 +780,6 @@ msgstr "Puja"
 msgid "Crop"
 msgstr "Retalla"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Sembla que hi ha hagut un problema amb la teva sessió. Prova-ho de nou, si "
-"us plau."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Enviament de formulari inesperat."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -670,8 +817,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -679,13 +827,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "No bloquis l'usuari"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -769,7 +917,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "No s'ha pogut eliminar la confirmació de correu electrònic."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Confirmar adreça"
 
 #: actions/confirmaddress.php:159
@@ -786,10 +935,54 @@ msgstr "Conversa"
 msgid "Notices"
 msgstr "Avisos"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Heu d'iniciar una sessió per editar un grup."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Avís sense perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "No sou un membre del grup."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Ha ocorregut algun problema amb la teva sessió."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "No existeix aquest avís."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "No es pot esborrar la notificació."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eliminar aquesta nota"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -822,7 +1015,7 @@ msgstr "N'estàs segur que vols eliminar aquesta notificació?"
 msgid "Do not delete this notice"
 msgstr "No es pot esborrar la notificació."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Eliminar aquesta nota"
 
@@ -951,16 +1144,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Guardar"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Desa el disseny"
@@ -973,10 +1156,87 @@ msgstr "Aquesta notificació no és un favorit!"
 msgid "Add to favorites"
 msgstr "Afegeix als preferits"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "No existeix aquest document."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Altres opcions"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Heu d'iniciar una sessió per editar un grup."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "No existeix aquest avís."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Utilitza aquest formulari per editar el grup."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Igual a la contrasenya de dalt. Requerit."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "El teu nom és massa llarg (màx. 255 caràcters)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Aquest sobrenom ja existeix. Prova un altre. "
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Descripció"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "La pàgina personal no és un URL vàlid."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "La ubicació és massa llarga (màx. 255 caràcters)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "No s'ha pogut actualitzar el grup."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1005,7 +1265,7 @@ msgstr "la descripció és massa llarga (màx. %d caràcters)."
 msgid "Could not update group."
 msgstr "No s'ha pogut actualitzar el grup."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "No s'han pogut crear els àlies."
 
@@ -1047,7 +1307,8 @@ msgstr ""
 "carpeta de spam!) per al missatge amb les instruccions."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancel·la"
 
@@ -1133,7 +1394,7 @@ msgid "Cannot normalize that email address"
 msgstr "No es pot normalitzar l'adreça electrònica."
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Adreça de correu electrònic no vàlida."
 
@@ -1145,7 +1406,7 @@ msgstr "Ja és la vostra adreça electrònica."
 msgid "That email address already belongs to another user."
 msgstr "L'adreça electrònica ja pertany a un altre usuari."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "No s'ha pogut inserir el codi de confirmació."
@@ -1207,7 +1468,7 @@ msgstr "Aquesta nota ja és favorita."
 msgid "Disfavor favorite"
 msgstr "Desfavoritar favorit"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Notificacions populars"
@@ -1352,7 +1613,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"
 
@@ -1449,23 +1710,23 @@ msgstr "%s membre/s en el grup, pàgina %d"
 msgid "A list of the users in this group."
 msgstr "La llista dels usuaris d'aquest grup."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1638,6 +1899,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Aquest no és el teu Jabber ID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Safata d'entrada per %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1723,7 +1989,7 @@ msgstr "Missatge personal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Opcionalment pots afegir un missatge a la invitació."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Envia"
 
@@ -1824,7 +2090,7 @@ msgstr "Nom d'usuari o contrasenya incorrectes."
 msgid "Error setting user. You are probably not authorized."
 msgstr "No autoritzat."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inici de sessió"
@@ -1833,17 +2099,6 @@ msgstr "Inici de sessió"
 msgid "Login to site"
 msgstr "Accedir al lloc"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Sobrenom"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Contrasenya"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Recorda'm"
@@ -1876,21 +2131,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"
@@ -1899,6 +2154,30 @@ msgstr "No es pot fer %s un administrador del grup %s"
 msgid "No current status"
 msgstr "No té cap estatus ara mateix"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "No existeix aquest avís."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Has d'haver entrat per crear un grup."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Utilitza aquest formulari per crear un nou grup."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "No s'han pogut crear els àlies."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nou grup"
@@ -2008,6 +2287,51 @@ msgstr "Reclamació enviada"
 msgid "Nudge sent!"
 msgstr "Reclamació enviada!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Heu d'iniciar una sessió per editar un grup."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Altres opcions"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "No ets membre d'aquest grup."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Avís sense perfil"
@@ -2025,8 +2349,8 @@ msgstr "tipus de contingut "
 msgid "Only "
 msgstr "Només "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Format de data no suportat."
 
@@ -2039,7 +2363,8 @@ msgid "Notice Search"
 msgstr "Cerca de notificacions"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Altres configuracions"
 
 #: actions/othersettings.php:71
@@ -2096,6 +2421,11 @@ msgstr "El contingut de l'avís és invàlid"
 msgid "Login token expired."
 msgstr "Accedir al lloc"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Safata de sortida per %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2168,7 +2498,7 @@ msgstr "No es pot guardar la nova contrasenya."
 msgid "Password saved."
 msgstr "Contrasenya guardada."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Camins"
 
@@ -2176,133 +2506,149 @@ msgstr "Camins"
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Aquesta pàgina no està disponible en "
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "No es pot escriure al directori de fons: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Lloc"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
-msgstr "Camí"
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Servidor"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Servidor central del lloc."
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr "Camí"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Camí del lloc"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Tema"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Servidor dels temes"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Camí dels temes"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Directori de temes"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatars"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Servidor d'avatars"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Camí de l'avatar"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Directori d'avatars"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Fons"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Servidor de fons"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Camí dels fons"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Directori de fons"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Mai"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "A vegades"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Sempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Utilitza l'SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Servidor SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Avís del lloc"
@@ -2366,7 +2712,7 @@ msgid "Full name"
 msgstr "Nom complet"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Pàgina personal"
 
@@ -2390,7 +2736,7 @@ msgstr "Biografia"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Ubicació"
@@ -2416,7 +2762,7 @@ msgstr ""
 "Etiquetes per a tu mateix (lletres, números, -, ., i _), per comes o separat "
 "por espais"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Idioma"
 
@@ -2444,7 +2790,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "La biografia és massa llarga (màx. %d caràcters)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Franja horària no seleccionada."
 
@@ -2457,23 +2803,23 @@ msgstr "L'idioma és massa llarg (màx 50 caràcters)."
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta no vàlida: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "No es pot actualitzar l'usuari per autosubscriure."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "No s'han pogut desar les preferències d'ubicació."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "No s'ha pogut guardar el perfil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "No s'han pogut guardar les etiquetes."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Configuració guardada."
 
@@ -2495,19 +2841,19 @@ msgstr "Línia temporal pública, pàgina %d"
 msgid "Public timeline"
 msgstr "Línia temporal pública"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Flux de canal públic (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Flux de canal públic (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Flux de canal públic (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2516,11 +2862,11 @@ msgstr ""
 "Aquesta és la línia temporal pública de %%site.name%%, però ningú no hi ha "
 "enviat res encara."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Sigueu el primer en escriure-hi!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2528,7 +2874,7 @@ msgstr ""
 "Per què no [registreu un compte](%%action.register%%) i sou el primer en "
 "escriure-hi!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2537,7 +2883,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2572,7 +2918,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Núvol d'etiquetes"
 
@@ -2714,7 +3060,7 @@ msgstr "El codi d'invitació no és vàlid."
 msgid "Registration successful"
 msgstr "Registre satisfactori"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registre"
@@ -2757,7 +3103,7 @@ msgid "Same as password above. Required."
 msgstr "Igual a la contrasenya de dalt. Requerit."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Correu electrònic"
 
@@ -2863,7 +3209,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL del teu perfil en un altre servei de microblogging compatible"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subscriure's"
 
@@ -2906,7 +3252,7 @@ msgstr "No pots registrar-te si no estàs d'acord amb la llicència."
 msgid "You already repeated that notice."
 msgstr "Ja heu blocat l'usuari."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Repetit"
 
@@ -2920,6 +3266,11 @@ msgstr "Repetit!"
 msgid "Replies to %s"
 msgstr "Respostes a %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Respostes a %1$s el %2$s!"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2963,6 +3314,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Respostes a %1$s el %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "S'ha suprimit l'estat."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2973,6 +3329,125 @@ msgstr "No pots enviar un missatge a aquest usuari."
 msgid "User is already sandboxed."
 msgstr "Un usuari t'ha bloquejat."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessions"
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Paràmetres de disseny d'aquest lloc StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gestiona les sessions"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Depuració de la sessió"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Activa la sortida de depuració per a les sessions."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Desa els paràmetres del lloc"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Has d'haver entrat per a poder marxar d'un grup."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Avís sense perfil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nom"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Paginació"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Descripció"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Estadístiques"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "Autoria"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "N'estàs segur que vols eliminar aquesta notificació?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s's notes favorites"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "No s'han pogut recuperar els avisos preferits."
@@ -3022,17 +3497,22 @@ msgstr "És una forma de compartir allò que us agrada."
 msgid "%s group"
 msgstr "%s grup"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s membre/s en el grup, pàgina %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Perfil del grup"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Avisos"
 
@@ -3078,10 +3558,6 @@ msgstr "(Cap)"
 msgid "All members"
 msgstr "Tots els membres"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Estadístiques"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "S'ha creat"
@@ -3139,6 +3615,11 @@ msgstr "Notificació publicada"
 msgid " tagged %s"
 msgstr "Aviso etiquetats amb %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s perfils blocats, pàgina %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3164,27 +3645,27 @@ msgstr "Feed d'avisos de %s"
 msgid "FOAF for %s"
 msgstr "Safata de sortida per %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "Aquesta és la línia temporal de %s i amics, però ningú hi ha enviat res "
 "encara."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3193,7 +3674,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3203,7 +3684,7 @@ msgstr ""
 "**%s** té un compte a %%%%site.name%%%%, un servei de [microblogging](http://"
 "ca.wikipedia.org/wiki/Microblogging) "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Repetició de %s"
@@ -3220,204 +3701,149 @@ msgstr "L'usuari ja està silenciat."
 msgid "Basic settings for this StatusNet site."
 msgstr "Paràmetres bàsic d'aquest lloc basat en l'StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "El nom del lloc ha de tenir una longitud superior a zero."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Heu de tenir una adreça electrònica de contacte vàlida"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, fuzzy, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Llengua desconeguda «%s»"
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "General"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nom del lloc"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "El nom del vostre lloc, com ara «El microblog de l'empresa»"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "El text que s'utilitza a l'enllaç dels crèdits al peu de cada pàgina"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Adreça electrònica de contacte del vostre lloc"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Local"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Fus horari per defecte"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Fus horari per defecte del lloc; normalment UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Llengua per defecte del lloc"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Servidor"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Servidor central del lloc."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Accés"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privat"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Voleu prohibir als usuaris anònims (que no han iniciat cap sessió) "
-"visualitzar el lloc?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Només invitació"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Fes que el registre sigui només amb invitacions."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Tancat"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Inhabilita els nous registres."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Instantànies"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "En una tasca planificada"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Instantànies de dades"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Freqüència"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Les instantànies s'enviaran a aquest URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Límits"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Límits del text"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Límit de duplicats"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Quant de temps cal que esperin els usuaris (en segons) per enviar el mateix "
 "de nou."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Desa els paràmetres del lloc"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "Configuració SMS"
+msgstr "Paràmetres de l'SMS"
 
 #: actions/smssettings.php:69
 #, php-format
@@ -3447,9 +3873,8 @@ msgid "Enter the code you received on your phone."
 msgstr "Escriu el codi que has rebut en el teu telèfon mòbil."
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
-msgstr "Número de telèfon pels SMS"
+msgstr "Número de telèfon per als SMS"
 
 #: actions/smssettings.php:140
 msgid "Phone number, no punctuation or spaces, with area code"
@@ -3523,15 +3948,26 @@ msgstr "No hi ha cap codi entrat"
 msgid "You are not subscribed to that profile."
 msgstr "No estàs subscrit a aquest perfil."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "No s'ha pogut guardar la subscripció."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "No existeix aquest usuari."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "No existeix el fitxer."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "No estàs subscrit a aquest perfil."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Subscrit"
 
@@ -3595,7 +4031,7 @@ msgstr "Aquestes són les persones que escoltes."
 msgid "These are the people whose notices %s listens to."
 msgstr "Aquestes són les persones que %s escolta."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3605,19 +4041,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s no escolta a ningú."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Usuaris que s'han etiquetat %s - pàgina %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3647,7 +4088,8 @@ msgstr "Etiqueta %s"
 msgid "User profile"
 msgstr "Perfil de l'usuari"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3709,7 +4151,7 @@ msgstr "No id en el perfil sol·licitat."
 msgid "Unsubscribed"
 msgstr "No subscrit"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3724,84 +4166,64 @@ msgstr "Usuari"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Perfil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Límit de la biografia"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Límit màxim de la biografia d'un perfil (en caràcters)."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Usuaris nous"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Benvinguda als usuaris nous"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Subscripció per defecte"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Subscriviu automàticament els usuaris nous a aquest usuari."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Invitacions"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "S'han habilitat les invitacions"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessions"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Gestiona les sessions"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Depuració de la sessió"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Activa la sortida de depuració per a les sessions."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autoritzar subscripció"
@@ -3817,36 +4239,36 @@ msgstr ""
 "subscriure't als avisos d'aquest usuari. Si no has demanat subscriure't als "
 "avisos de ningú, clica \"Cancel·lar\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Llicència"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Accepta"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Subscriure's a aquest usuari"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Rebutja"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Rebutja la subscripció"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Cap petició d'autorització!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Subscripció autoritzada"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3857,11 +4279,11 @@ msgstr ""
 "Llegeix de nou les instruccions per a saber com autoritzar la subscripció. "
 "El teu identificador de subscripció és:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Subscripció rebutjada"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3871,37 +4293,37 @@ msgstr ""
 "S'ha rebutjat la subscripció, però no s'ha enviat un URL de retorn. Llegeix "
 "de nou les instruccions per a saber com rebutjar la subscripció completament."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "No es pot llegir l'URL de l'avatar '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Tipus d'imatge incorrecte per a '%s'"
@@ -3922,6 +4344,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Gaudiu de l'entrepà!"
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s membre/s en el grup, pàgina %d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Cerca més grups"
@@ -3948,11 +4375,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "S'ha suprimit l'estat."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Col·laboració"
@@ -3984,11 +4406,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Connectors"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Nom"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Sessions"
@@ -3998,10 +4416,6 @@ msgstr "Sessions"
 msgid "Author(s)"
 msgstr "Autoria"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Descripció"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4051,28 +4465,28 @@ msgstr "No s'ha pogut inserir el missatge."
 msgid "Could not update message with new URI."
 msgstr "No s'ha pogut inserir el missatge amb la nova URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Hashtag de l'error de la base de dades:%s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Problema en guardar l'avís."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problema al guardar la notificació. Usuari desconegut."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Masses notificacions massa ràpid; pren un respir i publica de nou en uns "
 "minuts."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4081,34 +4495,60 @@ msgstr ""
 "Masses notificacions massa ràpid; pren un respir i publica de nou en uns "
 "minuts."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Ha estat bandejat de publicar notificacions en aquest lloc."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problema en guardar l'avís."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Error de BD en inserir resposta: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Problema en guardar l'avís."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Se us ha banejat la subscripció."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Ja hi esteu subscrit!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Un usuari t'ha bloquejat."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "No estàs subscrit!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "No s'ha pogut eliminar la subscripció."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "No s'ha pogut eliminar la subscripció."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Us donem la benvinguda a %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "No s'ha pogut crear el grup."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "No s'ha pogut establir la pertinença d'aquest grup."
 
@@ -4150,129 +4590,125 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Pàgina sense titol"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navegació primària del lloc"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Inici"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Perfil personal i línia temporal dels amics"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Compte"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Canviar correu electrònic, avatar, contrasenya, perfil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Connexió"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "No s'ha pogut redirigir al servidor: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Canvia la configuració del lloc"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convida"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Convidar amics i companys perquè participin a %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Finalitza la sessió"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Finalitza la sessió del lloc"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Crea un compte"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Inicia una sessió al lloc"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Ajuda'm"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Cerca"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Cerca gent o text"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Avís del lloc"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Vistes locals"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Notificació pàgina"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Navegació del lloc secundària"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Quant a"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Preguntes més freqüents"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privadesa"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Font"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contacte"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Insígnia"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Llicència del programari StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4281,12 +4717,12 @@ msgstr ""
 "**%%site.name%%** és un servei de microblogging de [%%site.broughtby%%**](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** és un servei de microblogging."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4297,33 +4733,55 @@ msgstr ""
 "%s, disponible sota la [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Llicència de contingut del lloc"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Tot "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "llicència."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginació"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Posteriors"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Anteriors"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Ha ocorregut algun problema amb la teva sessió."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4357,10 +4815,104 @@ msgstr "Configuració bàsica del lloc"
 msgid "Design configuration"
 msgstr "Configuració del disseny"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Configuració dels camins"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Configuració del disseny"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Configuració dels camins"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Configuració del disseny"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Descriu el grup amb 140 caràcters"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Descriu el grup amb 140 caràcters"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Font"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL del teu web, blog del grup u tema"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL del teu web, blog del grup u tema"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Suprimeix"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Adjuncions"
@@ -4381,11 +4933,11 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "Etiquetes de l'adjunció"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "El canvi de contrasenya ha fallat"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Contrasenya canviada."
@@ -4539,82 +5091,91 @@ msgstr "Problema en guardar l'avís."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Especifica el nom de l'usuari a que vols subscriure't"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "No existeix aquest usuari."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Subscrit a %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Especifica el nom de l'usuari del que vols deixar d'estar subscrit"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Has deixat d'estar subscrit a %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Comanda encara no implementada."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificacions off."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "No es poden posar en off les notificacions."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificacions on."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "No es poden posar en on les notificacions."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Has deixat d'estar subscrit a %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "No estàs subscrit a aquest perfil."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Ja estàs subscrit a aquests usuaris:"
 msgstr[1] "Ja estàs subscrit a aquests usuaris:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "No pots subscriure a un altre a tu mateix."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "No pots subscriure a un altre a tu mateix."
 msgstr[1] "No pots subscriure a un altre a tu mateix."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "No sou membre de cap grup."
 
-#: lib/command.php:714
+#: lib/command.php:755
 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
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4628,6 +5189,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4655,19 +5217,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "No s'ha trobat cap fitxer de configuració. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Podeu voler executar l'instal·lador per a corregir-ho."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Vés a l'instal·lador."
 
@@ -4683,6 +5245,14 @@ msgstr "Actualitzacions per Missatgeria Instantània"
 msgid "Updates by SMS"
 msgstr "Actualitzacions per SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Connexions"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Aplicacions de connexió autoritzades"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Error de la base de dades"
@@ -4742,9 +5312,8 @@ msgid "All"
 msgstr "Tot"
 
 #: lib/galleryaction.php:139
-#, fuzzy
 msgid "Select tag to filter"
-msgstr "Selecciona un transport"
+msgstr "Seleccioneu l'etiqueta per filtrar"
 
 #: lib/galleryaction.php:140
 msgid "Tag"
@@ -4763,14 +5332,13 @@ msgid "URL of the homepage or blog of the group or topic"
 msgstr "URL del teu web, blog del grup u tema"
 
 #: lib/groupeditform.php:168
-#, fuzzy
 msgid "Describe the group or topic"
-msgstr "Descriu el grup amb 140 caràcters"
+msgstr "Descriviu el grup o el tema"
 
 #: lib/groupeditform.php:170
-#, fuzzy, php-format
+#, php-format
 msgid "Describe the group or topic in %d characters"
-msgstr "Descriu el grup amb 140 caràcters"
+msgstr "Descriviu el grup o el tema en %d caràcters"
 
 #: lib/groupeditform.php:179
 msgid ""
@@ -4792,9 +5360,9 @@ msgid "Blocked"
 msgstr "Blocat"
 
 #: lib/groupnav.php:102
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked users"
-msgstr "Usuari bloquejat."
+msgstr "%susuaris blocats"
 
 #: lib/groupnav.php:108
 #, php-format
@@ -4811,9 +5379,9 @@ msgid "Add or edit %s logo"
 msgstr "Afegir o editar logo %s"
 
 #: lib/groupnav.php:120
-#, fuzzy, php-format
+#, php-format
 msgid "Add or edit %s design"
-msgstr "Afegir o editar logo %s"
+msgstr "Afegeix o edita el disseny %s"
 
 #: lib/groupsbymemberssection.php:71
 msgid "Groups with most members"
@@ -4863,18 +5431,18 @@ msgstr "Tipus de fitxer desconegut"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "MB"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, fuzzy, php-format
 msgid "Unknown inbox source %d."
 msgstr "Llengua desconeguda «%s»"
@@ -5085,7 +5653,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "de"
 
@@ -5203,58 +5771,54 @@ msgid "Do not share my location"
 msgstr "Comparteix la vostra ubicació"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "en context"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Repetit per"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "respondre a aquesta nota"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Respon"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Notificació publicada"
@@ -5288,11 +5852,7 @@ msgstr "Error en inserir perfil remot"
 msgid "Duplicate notice"
 msgstr "Eliminar nota."
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Se us ha banejat la subscripció."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "No s'ha pogut inserir una nova subscripció."
 
@@ -5308,19 +5868,19 @@ msgstr "Respostes"
 msgid "Favorites"
 msgstr "Preferits"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Safata d'entrada"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Els teus missatges rebuts"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Safata de sortida"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Els teus missatges enviats"
 
@@ -5400,6 +5960,10 @@ msgstr "Repeteix l'avís"
 msgid "Repeat this notice"
 msgstr "Repeteix l'avís"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5469,36 +6033,6 @@ msgstr "Persones subscrites a %s"
 msgid "Groups %s is a member of"
 msgstr "%s grups són membres de"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Ja hi esteu subscrit!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Un usuari t'ha bloquejat."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "No pots subscriure."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "No pots subscriure a un altre a tu mateix."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "No estàs subscrit!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "No s'ha pogut eliminar la subscripció."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "No s'ha pogut eliminar la subscripció."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5550,67 +6084,67 @@ msgstr "Edita l'avatar"
 msgid "User actions"
 msgstr "Accions de l'usuari"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Edita la configuració del perfil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Edita"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Enviar un missatge directe a aquest usuari"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Missatge"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Modera"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "fa pocs segons"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "fa un minut"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "fa %d minuts"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "fa una hora"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "fa %d hores"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "fa un dia"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "fa %d dies"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "fa un mes"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "fa %d mesos"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "fa un any"
 
@@ -5624,7 +6158,7 @@ msgstr "%s no és un color vàlid!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s no és un color vàlid! Feu servir 3 o 6 caràcters hexadecimals."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Missatge massa llarg - màxim és 140 caràcters, tu has enviat %d"
index 6d4ee65b6446f3bdf8985e677e5942361ae7bb90..dd51424e69b4785edc09a6e38d51de7d64854b2f 100644 (file)
@@ -9,17 +9,75 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:54+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:18+0000\n"
 "Language-Team: Czech\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n< =4) ? 1 : 2 ;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Přijmout"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Nastavení"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Registrovat"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Soukromí"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Žádný takový uživatel."
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Uložit"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Nastavení"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -35,25 +93,29 @@ msgstr "Žádné takové oznámení."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Žádný takový uživatel."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s a přátelé"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -94,7 +156,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -106,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s a přátelé"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -117,23 +179,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Potvrzující kód nebyl nalezen"
@@ -148,7 +210,7 @@ msgstr "Potvrzující kód nebyl nalezen"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -179,8 +241,9 @@ msgstr "Nelze uložit profil"
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -299,12 +362,12 @@ msgstr "Nelze aktualizovat uživatele"
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Nelze aktualizovat uživatele"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Nelze aktualizovat uživatele"
@@ -327,7 +390,8 @@ msgstr "Přezdívku již někdo používá. Zkuste jinou"
 msgid "Not a valid nickname."
 msgstr "Není platnou přezdívkou."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -339,7 +403,8 @@ msgstr "Stránka není platnou URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
@@ -375,7 +440,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "Žádný požadavek nebyl nalezen!"
@@ -419,6 +484,116 @@ msgstr ""
 msgid "groups on %s"
 msgstr ""
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Neplatná velikost"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Neplatné jméno nebo heslo"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Chyba nastavení uživatele"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Chyba v DB při vkládání odpovědi: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Nečekaná forma submission."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "O nás"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Přezdívka"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Heslo"
+
+#: actions/apioauthauthorize.php:328
+#, fuzzy
+msgid "Deny"
+msgstr "Vzhled"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -451,17 +626,17 @@ msgstr "Obrázek nahrán"
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Je to příliš dlouhé. Maximální sdělení délka je 140 znaků"
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -476,7 +651,7 @@ msgstr "Nepodporovaný formát obrázku."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1 statusů na %2"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "Mikroblog od %s"
@@ -487,7 +662,7 @@ msgstr "Mikroblog od %s"
 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!"
@@ -503,27 +678,22 @@ msgstr "%1 statusů na %2"
 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Odpovědi na %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Odpovědi na %s"
@@ -533,7 +703,7 @@ msgstr "Odpovědi na %s"
 msgid "Notices tagged with %s"
 msgstr ""
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Mikroblog od %s"
@@ -596,8 +766,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Odstranit"
 
@@ -609,29 +779,6 @@ msgstr "Upload"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Nečekaná forma submission."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -669,8 +816,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Ne"
 
@@ -679,13 +827,13 @@ msgstr "Ne"
 msgid "Do not block this user"
 msgstr "Žádný takový uživatel."
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -771,7 +919,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Nelze smazat potvrzení emailu"
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Potvrď adresu"
 
 #: actions/confirmaddress.php:159
@@ -789,10 +938,54 @@ msgstr "Umístění"
 msgid "Notices"
 msgstr "Sdělení"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Nelze aktualizovat uživatele"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Sdělení nemá profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Neodeslal jste nám profil"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Žádné takové oznámení."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Žádné takové oznámení."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Odstranit toto oznámení"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -822,7 +1015,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "Žádné takové oznámení."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Odstranit toto oznámení"
 
@@ -958,16 +1151,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Uložit"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -980,10 +1163,84 @@ msgstr ""
 msgid "Add to favorites"
 msgstr "Přidat do oblíbených"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Žádný takový dokument."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Sdělení nemá profil"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Žádné takové oznámení."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Přezdívku již někdo používá. Zkuste jinou"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Odběry"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Stránka není platnou URL."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Umístění příliš dlouhé (maximálně 255 znaků)"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Nelze aktualizovat uživatele"
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1012,7 +1269,7 @@ msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
 msgid "Could not update group."
 msgstr "Nelze aktualizovat uživatele"
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Nelze uložin informace o obrázku"
@@ -1053,7 +1310,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Zrušit"
 
@@ -1134,7 +1392,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Není platnou mailovou adresou."
 
@@ -1146,7 +1404,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Nelze vložit potvrzující kód"
@@ -1205,7 +1463,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1360,7 +1618,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."
@@ -1460,23 +1718,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1653,6 +1911,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Toto není váš Jabber"
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1729,7 +1992,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Odeslat"
 
@@ -1805,7 +2068,7 @@ msgstr "Neplatné jméno nebo heslo"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Neautorizován."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Přihlásit"
@@ -1814,17 +2077,6 @@ msgstr "Přihlásit"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Přezdívka"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Heslo"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Zapamatuj si mě"
@@ -1853,21 +2105,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."
@@ -1876,6 +2128,28 @@ msgstr "Uživatel nemá profil."
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Žádné takové oznámení."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Nelze uložin informace o obrázku"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nová skupina"
@@ -1983,6 +2257,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Neodeslal jste nám profil"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Sdělení nemá profil"
@@ -2001,8 +2318,8 @@ msgstr "Připojit"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -2016,7 +2333,7 @@ msgstr ""
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Nastavení"
 
 #: actions/othersettings.php:71
@@ -2073,6 +2390,11 @@ msgstr "Neplatný obsah sdělení"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2145,7 +2467,7 @@ msgstr "Nelze uložit nové heslo"
 msgid "Password saved."
 msgstr "Heslo uloženo"
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2153,140 +2475,157 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Tato stránka není k dispozici v typu média která přijímáte."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "Obnovit"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Nové sdělení"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
-msgid "Theme"
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
-msgid "Theme server"
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:259
+msgid "Theme"
+msgstr ""
+
+#: actions/pathsadminpanel.php:264
+msgid "Theme server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Obrázek"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Nastavení"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Obrázek nahrán"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Obrázek nahrán"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Obnovit"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Sdělení"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Obnovit"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Nové sdělení"
@@ -2350,7 +2689,7 @@ msgid "Full name"
 msgstr "Celé jméno"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Moje stránky"
 
@@ -2373,7 +2712,7 @@ msgstr "O mě"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Umístění"
@@ -2397,7 +2736,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Jazyk"
 
@@ -2423,7 +2762,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2436,25 +2775,25 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "Neplatná adresa '%s'"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Nelze uložit profil"
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Nelze uložit profil"
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Nelze uložit profil"
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Nastavení uloženo"
 
@@ -2476,39 +2815,39 @@ msgstr "Veřejné zprávy"
 msgid "Public timeline"
 msgstr "Veřejné zprávy"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Veřejný Stream Feed"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Veřejný Stream Feed"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Veřejný Stream Feed"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2517,7 +2856,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2551,7 +2890,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2690,7 +3029,7 @@ msgstr "Chyba v ověřovacím kódu"
 msgid "Registration successful"
 msgstr "Registrace úspěšná"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrovat"
@@ -2730,7 +3069,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Email"
 
@@ -2821,7 +3160,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Adresa profilu na jiných kompatibilních mikroblozích."
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Odebírat"
 
@@ -2862,7 +3201,7 @@ msgstr "Nemůžete se registrovat, pokud nesouhlasíte s licencí."
 msgid "You already repeated that notice."
 msgstr "Již jste přihlášen"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Vytvořit"
@@ -2878,6 +3217,11 @@ msgstr "Vytvořit"
 msgid "Replies to %s"
 msgstr "Odpovědi na %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Odpovědi na %s"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2919,6 +3263,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Odpovědi na %s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Obrázek nahrán"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2929,6 +3278,124 @@ msgstr "Neodeslal jste nám profil"
 msgid "User is already sandboxed."
 msgstr "Uživatel nemá profil."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Nastavení"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Sdělení nemá profil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Přezdívka"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Umístění"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "Odběry"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistiky"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s a přátelé"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2978,18 +3445,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Všechny odběry"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Žádné takové oznámení."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Poznámka"
 
@@ -3036,10 +3508,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistiky"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3096,6 +3564,11 @@ msgstr "Sdělení"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s a přátelé"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3121,25 +3594,25 @@ msgstr "Feed sdělení pro %s"
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3148,7 +3621,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3156,7 +3629,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Odpovědi na %s"
@@ -3174,204 +3647,147 @@ msgstr "Uživatel nemá profil."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Není platnou mailovou adresou."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Nové sdělení"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Žádný registrovaný email pro tohoto uživatele."
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Umístění"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Obnovit"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Přijmout"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Soukromí"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Žádný takový uživatel."
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Nastavení"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3473,17 +3889,27 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr "Neodeslal jste nám profil"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Nelze vytvořit odebírat"
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "Žádný takový uživatel."
+msgid "No such profile."
+msgstr "Žádné takové oznámení."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Neodeslal jste nám profil"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "Odebírat"
@@ -3544,7 +3970,7 @@ msgstr "Toto jsou lidé, jejiž sdělením nasloucháte"
 msgid "These are the people whose notices %s listens to."
 msgstr "Toto jsou lidé, jejiž sdělením %s naslouchá"
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3554,20 +3980,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1 od teď naslouchá tvým sdělením v %2"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "Žádné Jabber ID."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Mikroblog od %s"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3598,7 +4029,8 @@ msgstr ""
 msgid "User profile"
 msgstr "Uživatel nemá profil."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3660,7 +4092,7 @@ msgstr "Nebylo vráceno žádné URL profilu od servu."
 msgid "Unsubscribed"
 msgstr "Odhlásit"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3675,87 +4107,67 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr ""
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Všechny odběry"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "Odběr autorizován"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Umístění"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizovaný odběr"
@@ -3771,38 +4183,38 @@ msgstr ""
 "sdělení tohoto uživatele. Pokud ne, ask to subscribe to somone's notices, "
 "klikněte na \"Zrušit\""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licence"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Přijmout"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "Odběr autorizován"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Odmítnout"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Všechny odběry"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Žádné potvrení!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Odběr autorizován"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3813,11 +4225,11 @@ msgstr ""
 "nápovědě jak správně postupovat při potvrzování odběru. Váš řetězec odběru "
 "je:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Odběr odmítnut"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3827,37 +4239,37 @@ msgstr ""
 "Odebírání bylo zamítnuto, ale neprošla žádná callback adresa. Zkontrolujte v "
 "nápovědě jak správně postupovat při zamítání odběru"
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Nelze přečíst adresu obrázku '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Neplatný typ obrázku pro '%s'"
@@ -3877,6 +4289,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Všechny odběry"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3903,11 +4320,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Obrázek nahrán"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3939,12 +4351,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Přezdívka"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Osobní"
@@ -3953,11 +4360,6 @@ msgstr "Osobní"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "Odběry"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4007,61 +4409,88 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Problém při ukládání sdělení"
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "Problém při ukládání sdělení"
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problém při ukládání sdělení"
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Chyba v DB při vkládání odpovědi: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Problém při ukládání sdělení"
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+#, fuzzy
+msgid "User has blocked you."
+msgstr "Uživatel nemá profil."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Nepřihlášen!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Nelze smazat odebírání"
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Nelze smazat odebírání"
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "Nelze uložin informace o obrázku"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Nelze vytvořit odebírat"
@@ -4105,135 +4534,130 @@ msgstr "%1 statusů na %2"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Domů"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "O nás"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Připojit"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Nelze přesměrovat na server: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Odběry"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Odhlásit"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "Vytvořit nový účet"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Nápověda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Pomoci mi!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Hledat"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "Nové sdělení"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "Nové sdělení"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Odběry"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "O nás"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Soukromí"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Zdroj"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4242,12 +4666,12 @@ msgstr ""
 "**%%site.name%%** je služba microblogů, kterou pro vás poskytuje [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** je služba mikroblogů."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4258,35 +4682,57 @@ msgstr ""
 "dostupná pod [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "Nové sdělení"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "« Novější"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "Starší »"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4319,11 +4765,105 @@ msgstr "Potvrzení emailové adresy"
 msgid "Design configuration"
 msgstr "Potvrzení emailové adresy"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Potvrzení emailové adresy"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Potvrzení emailové adresy"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "Potvrzení emailové adresy"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Potvrzení emailové adresy"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Popiš sebe a své zájmy ve 140 znacích"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Popiš sebe a své zájmy ve 140 znacích"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Zdroj"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "Adresa vašich stránek, blogu nebo profilu na jiných stránkách."
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "Adresa vašich stránek, blogu nebo profilu na jiných stránkách."
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Odstranit"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4344,12 +4884,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Heslo uloženo"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Heslo uloženo"
@@ -4505,86 +5045,96 @@ msgstr "Problém při ukládání sdělení"
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Žádný takový uživatel."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Odhlásit"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Neodeslal jste nám profil"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Neodeslal jste nám profil"
 msgstr[1] "Neodeslal jste nám profil"
 msgstr[2] ""
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Vzdálený odběr"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Vzdálený odběr"
 msgstr[1] "Vzdálený odběr"
 msgstr[2] ""
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Neodeslal jste nám profil"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Neodeslal jste nám profil"
 msgstr[1] "Neodeslal jste nám profil"
 msgstr[2] ""
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4598,6 +5148,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4625,20 +5176,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Žádný potvrzující kód."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4654,6 +5205,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Připojit"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4844,12 +5404,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5053,7 +5613,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " od "
@@ -5174,60 +5734,56 @@ msgid "Do not share my location"
 msgstr "Nelze uložit profil"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "Žádný obsah!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Vytvořit"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "odpověď"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Sdělení"
@@ -5261,11 +5817,7 @@ msgstr "Chyba při vkládaní vzdáleného profilu"
 msgid "Duplicate notice"
 msgstr "Nové sdělení"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Nelze vložit odebírání"
 
@@ -5281,19 +5833,19 @@ msgstr "Odpovědi"
 msgid "Favorites"
 msgstr "Oblíbené"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5374,6 +5926,10 @@ msgstr "Odstranit toto oznámení"
 msgid "Repeat this notice"
 msgstr "Odstranit toto oznámení"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5446,37 +6002,6 @@ msgstr "Vzdálený odběr"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-#, fuzzy
-msgid "User has blocked you."
-msgstr "Uživatel nemá profil."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Nepřihlášen!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Nelze smazat odebírání"
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Nelze smazat odebírání"
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5529,68 +6054,68 @@ msgstr "Upravit avatar"
 msgid "User actions"
 msgstr "Akce uživatele"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Nastavené Profilu"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Zpráva"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "před pár sekundami"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "asi před minutou"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "asi před %d minutami"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "asi před hodinou"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "asi před %d hodinami"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "asi přede dnem"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "před %d dny"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "asi před měsícem"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "asi před %d mesíci"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "asi před rokem"
 
@@ -5604,7 +6129,7 @@ msgstr "Stránka není platnou URL."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index d8572b24476724f0e39fe85274ae4b07ae525167..053187a860ad415e967feca7264c14a932a312e1 100644 (file)
@@ -3,6 +3,7 @@
 # Author@translatewiki.net: Bavatar
 # Author@translatewiki.net: Lutzgh
 # Author@translatewiki.net: March
+# Author@translatewiki.net: McDutchie
 # Author@translatewiki.net: Pill
 # Author@translatewiki.net: Umherirrender
 # --
@@ -12,17 +13,70 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:04:57+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:21+0000\n"
 "Language-Team: German\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Zugang"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Zugangseinstellungen speichern"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registrieren"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privat"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Anonymen (nicht eingeloggten) Nutzern das Betrachten der Seite verbieten?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Nur auf Einladung"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Registrierung nur bei vorheriger Einladung erlauben."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Geschlossen"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Neuregistrierungen deaktivieren."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Speichern"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Zugangs-Einstellungen speichern"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -37,25 +91,29 @@ msgstr "Seite nicht vorhanden"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Unbekannter Benutzer."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s und Freunde, Seite% 2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -103,7 +161,7 @@ msgstr ""
 "posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
 "zu erregen."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -117,8 +175,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Du und Freunde"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Aktualisierungen von %1$s und Freunden auf %2$s!"
@@ -128,23 +186,23 @@ msgstr "Aktualisierungen von %1$s und Freunden auf %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API-Methode nicht gefunden."
 
@@ -158,7 +216,7 @@ msgstr "API-Methode nicht gefunden."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Diese Methode benötigt ein POST."
 
@@ -187,8 +245,9 @@ msgstr "Konnte Profil nicht speichern."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -305,11 +364,11 @@ msgstr "Du kannst dich nicht selbst entfolgen!"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Zwei IDs oder Benutzernamen müssen angegeben werden."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Konnte öffentlichen Stream nicht abrufen."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Konnte keine Statusmeldungen finden."
 
@@ -333,7 +392,8 @@ msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus."
 msgid "Not a valid nickname."
 msgstr "Ungültiger Nutzername."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -346,7 +406,8 @@ msgstr ""
 msgid "Full name is too long (max 255 chars)."
 msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Die Beschreibung ist zu lang (max. %d Zeichen)."
@@ -382,7 +443,7 @@ msgstr "Alias kann nicht das gleiche wie der Spitznamen sein."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Gruppe nicht gefunden!"
 
@@ -404,9 +465,9 @@ msgid "You are not a member of this group."
 msgstr "Du bist kein Mitglied dieser Gruppe."
 
 #: 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 "Konnte Benutzer %s nicht aus der Gruppe %s entfernen."
+msgstr "Konnte Benutzer %1$s nicht aus der Gruppe %2$s entfernen."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -423,6 +484,114 @@ msgstr "%s Gruppen"
 msgid "groups on %s"
 msgstr "Gruppen von %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ungültige Größe."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Es gab ein Problem mit deinem Sitzungstoken. Bitte versuche es erneut."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Benutzername oder Passwort falsch."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Fehler bei den Nutzereinstellungen."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Datenbankfehler beim Einfügen des Hashtags: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Unerwartete Formulareingabe."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Nutzername"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Passwort"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Alle"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Diese Methode benötigt ein POST oder DELETE."
@@ -452,18 +621,18 @@ msgstr "Status gelöscht."
 msgid "No status with that ID found."
 msgstr "Keine Nachricht mit dieser ID gefunden."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 "Das war zu lang. Die Länge einer Nachricht ist auf %d Zeichen beschränkt."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Nicht gefunden"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -479,7 +648,7 @@ msgstr "Bildformat wird nicht unterstützt."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Favoriten von %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s Aktualisierung in den Favoriten von %s / %s."
@@ -490,7 +659,7 @@ msgstr "%s Aktualisierung in den Favoriten von %s / %s."
 msgid "%s timeline"
 msgstr "%s Zeitleiste"
 
-#: 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!"
@@ -506,27 +675,22 @@ msgstr "%1$s / Aktualisierungen erwähnen %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "Nachrichten von %1$, die auf Nachrichten von %2$ / %3$ antworten."
 
-#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
+#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
 #, php-format
 msgid "%s public timeline"
 msgstr "%s öffentliche Zeitleiste"
 
-#: 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 Nachrichten von allen!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Von %s wiederholt"
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Antworten an %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Antworten an %s"
@@ -536,7 +700,7 @@ msgstr "Antworten an %s"
 msgid "Notices tagged with %s"
 msgstr "Nachrichten, die mit %s getagt sind"
 
-#: 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 "Aktualisierungen mit %1$s getagt auf %2$s!"
@@ -597,8 +761,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Vorschau"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Löschen"
 
@@ -610,29 +774,6 @@ msgstr "Hochladen"
 msgid "Crop"
 msgstr "Zuschneiden"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Es gab ein Problem mit deinem Sitzungstoken. Bitte versuche es erneut."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Unerwartete Formulareingabe."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -669,8 +810,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nein"
 
@@ -678,13 +820,13 @@ msgstr "Nein"
 msgid "Do not block this user"
 msgstr "Diesen Benutzer freigeben"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -767,7 +909,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Konnte E-Mail-Bestätigung nicht löschen."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Adresse bestätigen"
 
 #: actions/confirmaddress.php:159
@@ -784,10 +927,54 @@ msgstr "Unterhaltung"
 msgid "Notices"
 msgstr "Nachrichten"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Nachricht hat kein Profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Du bist kein Mitglied dieser Gruppe."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Es gab ein Problem mit deinem Sessiontoken."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Unbekannte Nachricht."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Diese Nachricht nicht löschen"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Nachricht löschen"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -818,7 +1005,7 @@ msgstr "Bist du sicher, dass du diese Nachricht löschen möchtest?"
 msgid "Do not delete this notice"
 msgstr "Diese Nachricht nicht löschen"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Nachricht löschen"
 
@@ -948,16 +1135,6 @@ msgstr "Standard-Design wiederherstellen"
 msgid "Reset back to default"
 msgstr "Standard wiederherstellen"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Speichern"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Design speichern"
@@ -970,10 +1147,88 @@ msgstr "Diese Nachricht ist kein Favorit!"
 msgid "Add to favorites"
 msgstr "Zu Favoriten hinzufügen"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Unbekanntes Dokument."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Sonstige Optionen"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Unbekannte Nachricht."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Benutze dieses Formular, um die Gruppe zu bearbeiten."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Gleiches Passwort wie zuvor. Pflichteingabe."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Beschreibung"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr ""
+"Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Der eingegebene Aufenthaltsort ist zu lang (maximal 255 Zeichen)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Konnte Gruppe nicht aktualisieren."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1002,7 +1257,7 @@ msgstr "Die Beschreibung ist zu lang (max. %d Zeichen)."
 msgid "Could not update group."
 msgstr "Konnte Gruppe nicht aktualisieren."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Konnte keinen Favoriten erstellen."
 
@@ -1044,7 +1299,8 @@ msgstr ""
 "(auch den Spam-Ordner) auf eine Nachricht mit weiteren Instruktionen."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -1129,7 +1385,7 @@ msgid "Cannot normalize that email address"
 msgstr "Konnte diese E-Mail-Adresse nicht normalisieren"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Ungültige E-Mail-Adresse."
 
@@ -1141,7 +1397,7 @@ msgstr "Dies ist bereits deine E-Mail-Adresse."
 msgid "That email address already belongs to another user."
 msgstr "Diese E-Mail-Adresse gehört einem anderen Nutzer."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Konnte keinen Bestätigungscode einfügen."
@@ -1203,7 +1459,7 @@ msgstr "Diese Nachricht ist bereits ein Favorit!"
 msgid "Disfavor favorite"
 msgstr "Aus Favoriten entfernen"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Beliebte Nachrichten"
@@ -1345,7 +1601,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"
 
@@ -1440,23 +1696,23 @@ msgstr "%s Gruppen-Mitglieder, Seite %d"
 msgid "A list of the users in this group."
 msgstr "Liste der Benutzer in dieser Gruppe."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1636,6 +1892,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Dies ist nicht deine JabberID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Posteingang von %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1723,7 +1984,7 @@ msgstr ""
 "Wenn du möchtest kannst du zu der Einladung eine persönliche Nachricht "
 "anfügen."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Senden"
 
@@ -1823,7 +2084,7 @@ msgid "Error setting user. You are probably not authorized."
 msgstr ""
 "Fehler beim setzen des Benutzers. Du bist vermutlich nicht autorisiert."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Anmelden"
@@ -1832,17 +2093,6 @@ msgstr "Anmelden"
 msgid "Login to site"
 msgstr "An Seite anmelden"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Nutzername"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Passwort"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Anmeldedaten merken"
@@ -1872,21 +2122,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"
@@ -1895,6 +2145,30 @@ msgstr "Konnte %s nicht zum Administrator der Gruppe %s machen"
 msgid "No current status"
 msgstr "Kein aktueller Status"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Unbekannte Nachricht."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Du musst angemeldet sein, um eine Gruppe zu erstellen."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Benutzer dieses Formular, um eine neue Gruppe zu erstellen."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Konnte keinen Favoriten erstellen."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Neue Gruppe"
@@ -2005,6 +2279,51 @@ msgstr "Stups abgeschickt"
 msgid "Nudge sent!"
 msgstr "Stups gesendet!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Sonstige Optionen"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Du bist kein Mitglied dieser Gruppe."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Nachricht hat kein Profil"
@@ -2022,8 +2341,8 @@ msgstr "Content-Typ "
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Kein unterstütztes Datenformat."
 
@@ -2036,7 +2355,7 @@ msgid "Notice Search"
 msgstr "Nachrichtensuche"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Andere Einstellungen"
 
 #: actions/othersettings.php:71
@@ -2061,16 +2380,15 @@ msgstr "Profil-Einstellungen ansehen"
 
 #: actions/othersettings.php:123
 msgid "Show or hide profile designs."
-msgstr ""
+msgstr "Prifil-Designs anzeigen oder verstecken."
 
 #: actions/othersettings.php:153
 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
@@ -2092,6 +2410,11 @@ msgstr "Token ungültig oder abgelaufen."
 msgid "Login token expired."
 msgstr "An Seite anmelden"
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Postausgang für %1$s - Seite %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2163,7 +2486,7 @@ msgstr "Konnte neues Passwort nicht speichern"
 msgid "Password saved."
 msgstr "Passwort gespeichert."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2171,134 +2494,148 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Theme-Verzeichnis nicht lesbar: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Avatar-Verzeichnis ist nicht beschreibbar: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Hintergrund Verzeichnis ist nicht beschreibbar: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Ungültiger SSL-Server. Die maximale Länge ist 255 Zeichen."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Seite"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Server"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Server Name der Seite"
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Pfad"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Seitenpfad"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Schicke URLs."
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Schicke URLs (lesbarer und besser zu merken) verwenden?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Theme-Verzeichnis"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatare"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Avatar-Server"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Avatarpfad"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Avatarverzeichnis"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
-msgstr ""
+msgstr "Hintergrundbilder"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
-msgstr ""
+msgstr "Server für Hintergrundbilder"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
-msgstr ""
+msgstr "Pfad zu den Hintergrundbildern"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Hintergrund Verzeichnis"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
-#, fuzzy
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
-msgstr "Wiederherstellung"
+msgstr "Nie"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Manchmal"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Immer"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "SSL verwenden"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Wann soll SSL verwendet werden"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-Server"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Server an den SSL Anfragen gerichtet werden sollen"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Speicherpfade"
 
@@ -2322,20 +2659,20 @@ msgid "Not a valid people tag: %s"
 msgstr "Ungültiger Personen-Tag: %s"
 
 #: actions/peopletag.php:144
-#, fuzzy, php-format
+#, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
-msgstr "Benutzer die sich selbst mit %s getagged haben - Seite %d"
+msgstr "Benutzer die sich selbst mit %1$s getagged haben - Seite %2$d"
 
 #: actions/postnotice.php:84
 msgid "Invalid notice content"
 msgstr "Ungültiger Nachrichteninhalt"
 
 #: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"Die Nachrichtenlizenz '%s' ist nicht kompatibel mit der Lizenz der Seite '%"
-"s'."
+"Die Nachrichtenlizenz '%1$s' ist nicht kompatibel mit der Lizenz der Seite '%"
+"2$s'."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2363,7 +2700,7 @@ msgid "Full name"
 msgstr "Vollständiger Name"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Homepage"
 
@@ -2387,7 +2724,7 @@ msgstr "Biografie"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Aufenthaltsort"
@@ -2398,7 +2735,7 @@ msgstr "Wo du bist, beispielsweise „Stadt, Gebiet, Land“"
 
 #: actions/profilesettings.php:138
 msgid "Share my current location when posting notices"
-msgstr ""
+msgstr "Teile meine aktuelle Position wenn ich Nachrichten sende"
 
 #: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
@@ -2413,7 +2750,7 @@ msgstr ""
 "Tags über dich selbst (Buchstaben, Zahlen, -, ., und _) durch Kommas oder "
 "Leerzeichen getrennt"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Sprache"
 
@@ -2441,7 +2778,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Die Biografie ist zu lang (max. %d Zeichen)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Keine Zeitzone ausgewählt."
 
@@ -2454,31 +2791,30 @@ msgstr "Die eingegebene Sprache ist zu lang (maximal 50 Zeichen)"
 msgid "Invalid tag: \"%s\""
 msgstr "Ungültiger Tag: „%s“"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Autosubscribe konnte nicht aktiviert werden."
 
-#: actions/profilesettings.php:359
-#, fuzzy
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
-msgstr "Konnte Tags nicht speichern."
+msgstr "Konnte Positions-Einstellungen nicht speichern."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Konnte Profil nicht speichern."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Konnte Tags nicht speichern."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Einstellungen gespeichert."
 
 #: actions/public.php:83
 #, php-format
 msgid "Beyond the page limit (%s)"
-msgstr ""
+msgstr "Jenseits des Seitenlimits (%s)"
 
 #: actions/public.php:92
 msgid "Could not retrieve public stream."
@@ -2493,36 +2829,38 @@ msgstr "Öffentliche Zeitleiste, Seite %d"
 msgid "Public timeline"
 msgstr "Öffentliche Zeitleiste"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Feed des öffentlichen Streams (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Feed des öffentlichen Streams (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Feed des öffentlichen Streams (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
+"Dies ist die öffentliche Zeitlinie von %%site.name%% es wurde allerdings "
+"noch nichts gepostet."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
-msgstr ""
+msgstr "Sei der erste der etwas schreibt!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2531,7 +2869,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2555,6 +2893,8 @@ msgstr "Das sind die beliebtesten Tags auf %s "
 #, php-format
 msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet."
 msgstr ""
+"Bis jetzt hat noch niemand eine Nachricht mit dem Tag [hashtag](%%doc.tags%"
+"%) gepostet."
 
 #: actions/publictagcloud.php:72
 msgid "Be the first to post one!"
@@ -2567,7 +2907,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Tag-Wolke"
 
@@ -2615,7 +2955,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."
@@ -2705,7 +3045,7 @@ msgstr "Entschuldigung, ungültiger Bestätigungscode."
 msgid "Registration successful"
 msgstr "Registrierung erfolgreich"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrieren"
@@ -2748,7 +3088,7 @@ msgid "Same as password above. Required."
 msgstr "Gleiches Passwort wie zuvor. Pflichteingabe."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-Mail"
 
@@ -2857,7 +3197,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Profil-URL bei einem anderen kompatiblen Microbloggingdienst"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Abonnieren"
 
@@ -2879,27 +3219,23 @@ 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
 msgid "You already repeated that notice."
 msgstr "Du hast diesen Benutzer bereits blockiert."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Erstellt"
@@ -2915,6 +3251,11 @@ msgstr "Erstellt"
 msgid "Replies to %s"
 msgstr "Antworten an %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Antworten an %1$s, Seite %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2961,6 +3302,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Antworten an %1$s auf %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2971,6 +3316,125 @@ msgstr "Du kannst diesem Benutzer keine Nachricht schicken."
 msgid "User is already sandboxed."
 msgstr "Dieser Benutzer hat dich blockiert."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Design-Einstellungen für diese StatusNet-Website."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Site-Einstellungen speichern"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Du musst angemeldet sein, um aus einer Gruppe auszutreten."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Nachricht hat kein Profil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Name"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Seitenerstellung"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Beschreibung"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistiken"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "Autor"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Bist du sicher, dass du diese Nachricht löschen möchtest?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%ss favorisierte Nachrichten"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Konnte Favoriten nicht abrufen."
@@ -3013,24 +3477,29 @@ msgstr ""
 
 #: actions/showfavorites.php:242
 msgid "This is a way to share what you like."
-msgstr ""
+msgstr "Dies ist ein Weg Dinge zu teilen die dir gefallen."
 
 #: actions/showgroup.php:82 lib/groupnav.php:86
 #, php-format
 msgid "%s group"
 msgstr "%s Gruppe"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s Gruppen-Mitglieder, Seite %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Gruppenprofil"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Nachricht"
 
@@ -3076,10 +3545,6 @@ msgstr "(Kein)"
 msgid "All members"
 msgstr "Alle Mitglieder"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistiken"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Erstellt"
@@ -3138,6 +3603,11 @@ msgstr "Nachricht gelöscht."
 msgid " tagged %s"
 msgstr "Nachrichten, die mit %s getagt sind"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s blockierte Benutzerprofile, Seite %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3163,20 +3633,20 @@ msgstr "Feed der Nachrichten von %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF von %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "Dies ist die Zeitleiste für %s und Freunde aber bisher hat niemand etwas "
 "gepostet."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, fuzzy, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3186,7 +3656,7 @@ msgstr ""
 "posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
 "zu erregen."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3195,7 +3665,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3206,224 +3676,162 @@ msgstr ""
 "(http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der Freien "
 "Software [StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
-#, fuzzy, php-format
+#: actions/showstream.php:305
+#, php-format
 msgid "Repeat of %s"
-msgstr "Antworten an %s"
+msgstr "Wiederholung von %s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
-#, fuzzy
 msgid "You cannot silence users on this site."
-msgstr "Du kannst diesem Benutzer keine Nachricht schicken."
+msgstr "Du kannst Nutzer dieser Seite nicht ruhig stellen."
 
 #: actions/silence.php:72
-#, fuzzy
 msgid "User is already silenced."
-msgstr "Dieser Benutzer hat dich blockiert."
+msgstr "Nutzer ist bereits ruhig gestellt."
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
-msgstr ""
+msgstr "Grundeinstellungen für diese StatusNet Seite."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
-msgstr ""
+msgstr "Der Seiten Name darf nicht leer sein."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
-msgstr "Du musst eine gültige E-Mail-Adresse haben"
+msgstr "Du musst eine gültige E-Mail-Adresse haben."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Unbekannte Sprache „%s“"
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
-msgstr ""
+msgstr "Minimale Textlänge ist 140 Zeichen."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
-#, fuzzy
+#: actions/siteadminpanel.php:242
 msgid "Site name"
-msgstr "Seitennachricht"
+msgstr "Seitenname"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
-msgstr ""
+msgstr "Der Name deiner Seite, sowas wie \"DeinUnternehmen Mircoblog\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Kontakt-E-Mail-Adresse für Deine Site."
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Lokale Ansichten"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "Bevorzugte Sprache"
 
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Wiederherstellung"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Schicke URLs."
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Schicke URLs (lesbarer und besser zu merken) verwenden?"
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Akzeptieren"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Privatsphäre"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Einladen"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Blockieren"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequenz"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Site-Einstellungen speichern"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3531,15 +3939,26 @@ msgstr "Kein Code eingegeben"
 msgid "You are not subscribed to that profile."
 msgstr "Du hast dieses Profil nicht abonniert."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Konnte Abonnement nicht erstellen."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Kein lokaler Benutzer."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Datei nicht gefunden."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Du hast dieses Profil nicht abonniert."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Abonniert"
 
@@ -3549,9 +3968,9 @@ msgid "%s subscribers"
 msgstr "%s Abonnenten"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "%s Abonnenten, Seite %d"
+msgstr "%1$s Abonnenten, Seite %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3590,9 +4009,9 @@ msgid "%s subscriptions"
 msgstr "%s Abonnements"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "%s Abonnements, Seite %d"
+msgstr "%1$s Abonnements, Seite %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3603,7 +4022,7 @@ msgstr "Dies sind die Leute, deren Nachrichten du liest."
 msgid "These are the people whose notices %s listens to."
 msgstr "Dies sind die Leute, deren Nachrichten %s liest."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3613,33 +4032,38 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
-#, fuzzy, php-format
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
+#, php-format
 msgid "%s is not listening to anyone."
-msgstr "%1$s liest ab sofort "
+msgstr "%s hat niemanden abonniert."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Mit %1$s gekennzeichnete Nachrichten, Seite %2$d"
+
 #: actions/tag.php:86
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
-msgstr "Feed der Nachrichten von %s"
+msgstr "Nachrichten Feed für Tag %s (RSS 1.0)"
 
 #: actions/tag.php:92
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 2.0)"
-msgstr "Feed der Nachrichten von %s"
+msgstr "Nachrichten Feed für Tag %s (RSS 2.0)"
 
 #: actions/tag.php:98
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (Atom)"
-msgstr "Feed der Nachrichten von %s"
+msgstr "Nachrichten Feed für Tag %s (Atom)"
 
 #: actions/tagother.php:39
 #, fuzzy
@@ -3655,7 +4079,8 @@ msgstr "Tag %s"
 msgid "User profile"
 msgstr "Benutzerprofil"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3706,9 +4131,8 @@ msgid "User is not sandboxed."
 msgstr "Dieser Benutzer hat dich blockiert."
 
 #: actions/unsilence.php:72
-#, fuzzy
 msgid "User is not silenced."
-msgstr "Benutzer hat kein Profil."
+msgstr "Der Benutzer ist nicht ruhig gestellt."
 
 #: actions/unsubscribe.php:77
 msgid "No profile id in request."
@@ -3718,7 +4142,7 @@ msgstr "Keine Profil-ID in der Anfrage."
 msgid "Unsubscribed"
 msgstr "Abbestellt"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, fuzzy, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3733,91 +4157,65 @@ msgstr "Benutzer"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr ""
+msgstr "Nutzer Einstellungen dieser StatusNet Seite."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "Das Zeichenlimit der Biografie muss numerisch sein!"
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
-msgstr ""
+msgstr "Willkommens-Nachricht ungültig. Maximale Länge sind 255 Zeichen."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Neue Nutzer"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr ""
+msgstr "Willkommens-Nachricht für neue Nutzer (maximal 255 Zeichen)."
 
-#: actions/useradminpanel.php:241
-#, fuzzy
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
-msgstr "Alle Abonnements"
+msgstr "Standard Abonnement"
 
-#: actions/useradminpanel.php:242
-#, fuzzy
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
-msgstr ""
-"Abonniere automatisch alle Kontakte, die mich abonnieren (sinnvoll für Nicht-"
-"Menschen)"
+msgstr "Neue Nutzer abonnieren automatisch diesen Nutzer"
 
-#: actions/useradminpanel.php:251
-#, fuzzy
+#: actions/useradminpanel.php:250
 msgid "Invitations"
-msgstr "Einladung(en) verschickt"
+msgstr "Einladungen"
 
-#: actions/useradminpanel.php:256
-#, fuzzy
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
-msgstr "Einladung(en) verschickt"
+msgstr "Einladungen aktivieren"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
-msgstr ""
-
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
+msgstr "Ist es Nutzern erlaubt neue Nutzer einzuladen."
 
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
@@ -3833,38 +4231,37 @@ msgstr ""
 "dieses Nutzers abonnieren möchtest. Wenn du das nicht wolltest, klicke auf "
 "„Abbrechen“."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Lizenz"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Akzeptieren"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
-#, fuzzy
 msgid "Subscribe to this user"
 msgstr "Abonniere diesen Benutzer"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Ablehnen"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "%s Abonnements"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Keine Bestätigungsanfrage!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Abonnement autorisiert"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3875,11 +4272,11 @@ msgstr ""
 "zurückgegeben. Lies nochmal die Anweisungen der Site, wie Abonnements "
 "bestätigt werden. Dein Abonnement-Token ist:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Abonnement abgelehnt"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3890,37 +4287,37 @@ msgstr ""
 "zurückgegeben. Lies nochmal die Anweisungen der Site, wie Abonnements "
 "vollständig abgelehnt werden. Dein Abonnement-Token ist:"
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Konnte Avatar-URL nicht öffnen „%s“"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Falscher Bildtyp für „%s“"
@@ -3939,6 +4336,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s Gruppen-Mitglieder, Seite %d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Suche nach weiteren Gruppen"
@@ -3965,11 +4367,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status gelöscht."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4001,12 +4398,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Nutzername"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Eigene"
@@ -4016,10 +4408,6 @@ msgstr "Eigene"
 msgid "Author(s)"
 msgstr "Autor"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Beschreibung"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4070,27 +4458,27 @@ msgstr "Konnte Nachricht nicht einfügen."
 msgid "Could not update message with new URI."
 msgstr "Konnte Nachricht nicht mit neuer URI versehen."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Datenbankfehler beim Einfügen des Hashtags: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problem bei Speichern der Nachricht. Sie ist zu lang."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problem bei Speichern der Nachricht. Unbekannter Benutzer."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in "
 "ein paar Minuten ab."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4099,35 +4487,61 @@ msgstr ""
 "Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in "
 "ein paar Minuten ab."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 "Du wurdest für das Schreiben von Nachrichten auf dieser Seite gesperrt."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problem bei Speichern der Nachricht."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Datenbankfehler beim Einfügen der Antwort: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Problem bei Speichern der Nachricht."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Dieser Benutzer erlaubt dir nicht ihn zu abonnieren."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Bereits abonniert!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Dieser Benutzer hat dich blockiert."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Nicht abonniert!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Konnte Abonnement nicht löschen."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Konnte Abonnement nicht löschen."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Herzlich willkommen bei %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Konnte Gruppe nicht erstellen."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Konnte Gruppenmitgliedschaft nicht setzen."
 
@@ -4169,131 +4583,127 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Seite ohne Titel"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Hauptnavigation"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Startseite"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Persönliches Profil und Freundes-Zeitleiste"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Konto"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Ändere deine E-Mail, dein Avatar, Passwort, Profil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Verbinden"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Konnte nicht zum Server umleiten: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Hauptnavigation"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Einladen"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Lade Freunde und Kollegen ein dir auf %s zu folgen"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Abmelden"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Von der Seite abmelden"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Neues Konto erstellen"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Auf der Seite anmelden"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hilfe"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Hilf mir!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Suchen"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Suche nach Leuten oder Text"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Seitennachricht"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Lokale Ansichten"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Neue Nachricht"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Unternavigation"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Über"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "AGB"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privatsphäre"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Quellcode"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "Stups"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet-Software-Lizenz"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4302,12 +4712,12 @@ msgstr ""
 "**%%site.name%%** ist ein Microbloggingdienst von [%%site.broughtby%%](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** ist ein Microbloggingdienst."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4318,34 +4728,56 @@ msgstr ""
 "(Version %s) betrieben, die unter der [GNU Affero General Public License]"
 "(http://www.fsf.org/licensing/licenses/agpl-3.0.html) erhältlich ist."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "StatusNet-Software-Lizenz"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 #, fuzzy
 msgid "All "
 msgstr "Alle "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "Lizenz."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Seitenerstellung"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Später"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Vorher"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Es gab ein Problem mit deinem Sessiontoken."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4379,11 +4811,105 @@ msgstr "Bestätigung der E-Mail-Adresse"
 msgid "Design configuration"
 msgstr "SMS-Konfiguration"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS-Konfiguration"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS-Konfiguration"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS-Konfiguration"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS-Konfiguration"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Beschreibe die Gruppe oder das Thema in 140 Zeichen"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Beschreibe die Gruppe oder das Thema in 140 Zeichen"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Quellcode"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL der Homepage oder Blogs der Gruppe oder des Themas"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL der Homepage oder Blogs der Gruppe oder des Themas"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Entfernen"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Anhänge"
@@ -4404,12 +4930,12 @@ msgstr "Nachrichten in denen dieser Anhang erscheint"
 msgid "Tags for this attachment"
 msgstr "Tags für diesen Anhang"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Passwort geändert"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Passwort geändert"
@@ -4559,81 +5085,90 @@ msgstr "Problem beim Speichern der Nachricht."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Gib den Namen des Benutzers an, den du abonnieren möchtest"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Unbekannter Benutzer."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "%s abonniert"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Gib den Namen des Benutzers ein, den du nicht mehr abonnieren möchtest"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "%s nicht mehr abonniert"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Befehl noch nicht implementiert."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Benachrichtigung deaktiviert."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Konnte Benachrichtigung nicht deaktivieren."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Benachrichtigung aktiviert."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Konnte Benachrichtigung nicht aktivieren."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "%s nicht mehr abonniert"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Du hast dieses Profil nicht abonniert."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Du hast diese Benutzer bereits abonniert:"
 msgstr[1] "Du hast diese Benutzer bereits abonniert:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Niemand hat Dich abonniert."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Die Gegenseite konnte Dich nicht abonnieren."
 msgstr[1] "Die Gegenseite konnte Dich nicht abonnieren."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Du bist in keiner Gruppe Mitglied."
 
-#: lib/command.php:714
+#: lib/command.php:755
 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
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4647,6 +5182,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4674,19 +5210,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Keine Konfigurationsdatei gefunden."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Ich habe an folgenden Stellen nach Konfigurationsdateien gesucht: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "Auf der Seite anmelden"
@@ -4703,6 +5239,15 @@ msgstr "Aktualisierungen via Instant Messenger (IM)"
 msgid "Updates by SMS"
 msgstr "Aktualisierungen via SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Verbinden"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Datenbankfehler."
@@ -4738,19 +5283,19 @@ msgstr "Zu Favoriten hinzufügen"
 
 #: lib/feed.php:85
 msgid "RSS 1.0"
-msgstr ""
+msgstr "RSS 1.0"
 
 #: lib/feed.php:87
 msgid "RSS 2.0"
-msgstr ""
+msgstr "RSS 2.0"
 
 #: lib/feed.php:89
 msgid "Atom"
-msgstr ""
+msgstr "Atom"
 
 #: lib/feed.php:91
 msgid "FOAF"
-msgstr ""
+msgstr "FOAF"
 
 #: lib/feedlist.php:64
 msgid "Export data"
@@ -4817,12 +5362,12 @@ msgid "Blocked"
 msgstr "Blockiert"
 
 #: lib/groupnav.php:102
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked users"
-msgstr "Benutzer blockieren"
+msgstr "in %s blockierte Nutzer"
 
 #: lib/groupnav.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "Edit %s group properties"
 msgstr "%s Gruppeneinstellungen bearbeiten"
 
@@ -4831,14 +5376,14 @@ msgid "Logo"
 msgstr "Logo"
 
 #: lib/groupnav.php:114
-#, fuzzy, php-format
+#, php-format
 msgid "Add or edit %s logo"
 msgstr "%s Logo hinzufügen oder bearbeiten"
 
 #: lib/groupnav.php:120
-#, fuzzy, php-format
+#, php-format
 msgid "Add or edit %s design"
-msgstr "%s Logo hinzufügen oder bearbeiten"
+msgstr "%s Design hinzufügen oder bearbeiten"
 
 #: lib/groupsbymemberssection.php:71
 msgid "Groups with most members"
@@ -4849,7 +5394,7 @@ msgid "Groups with most posts"
 msgstr "Gruppen mit den meisten Beiträgen"
 
 #: lib/grouptagcloudsection.php:56
-#, fuzzy, php-format
+#, php-format
 msgid "Tags in %s group's notices"
 msgstr "Tags in den Nachrichten der Gruppe %s"
 
@@ -4888,18 +5433,18 @@ msgstr "Unbekannter Dateityp"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "MB"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
-msgstr ""
+msgstr "[%s]"
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, fuzzy, php-format
 msgid "Unknown inbox source %d."
 msgstr "Unbekannte Sprache „%s“"
@@ -4913,14 +5458,12 @@ msgid "Leave"
 msgstr "Verlassen"
 
 #: lib/logingroupnav.php:80
-#, fuzzy
 msgid "Login with a username and password"
-msgstr "Anmelden mit einem Benutzernamen und Passwort"
+msgstr "Mit Nutzernamen und Passwort anmelden"
 
 #: lib/logingroupnav.php:86
-#, fuzzy
 msgid "Sign up for a new account"
-msgstr "Für ein neues Konto registrieren"
+msgstr "Registriere ein neues Nutzerkonto"
 
 #: lib/mail.php:172
 msgid "Email address confirmation"
@@ -4988,11 +5531,9 @@ msgstr ""
 "$s ändern.\n"
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr ""
-"Biografie: %s\n"
-"\n"
+msgstr "Biografie: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -5158,8 +5699,7 @@ msgstr ""
 "schicken, um sie in eine Konversation zu verwickeln. Andere Leute können Dir "
 "Nachrichten schicken, die nur Du sehen kannst."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
-#, fuzzy
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "von"
 
@@ -5180,39 +5720,45 @@ msgid "Sorry, no incoming email allowed."
 msgstr "Sorry, keinen eingehenden E-Mails gestattet."
 
 #: lib/mailhandler.php:228
-#, fuzzy, php-format
+#, php-format
 msgid "Unsupported message type: %s"
-msgstr "Bildformat wird nicht unterstützt."
+msgstr "Nachrichten-Typ %s wird nicht unterstützt."
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
 msgstr ""
+"Beim Speichern der Datei trat ein Datenbank Fehler auf. Bitte versuche es "
+"noch einmal."
 
 #: lib/mediafile.php:142
 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
 msgstr ""
+"Die Größe der hoch geladenen Datei überschreitet die upload_max_filesize "
+"Angabe in der php.ini."
 
 #: lib/mediafile.php:147
 msgid ""
 "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
 "the HTML form."
 msgstr ""
+"Die Größe der hoch geladenen Datei überschreitet die MAX_FILE_SIZE Angabe, "
+"die im HTML Formular angegeben wurde."
 
 #: lib/mediafile.php:152
 msgid "The uploaded file was only partially uploaded."
-msgstr ""
+msgstr "Die Datei wurde nur teilweise auf den Server geladen."
 
 #: lib/mediafile.php:159
 msgid "Missing a temporary folder."
-msgstr ""
+msgstr "Kein temporäres Verzeichnis gefunden."
 
 #: lib/mediafile.php:162
 msgid "Failed to write file to disk."
-msgstr ""
+msgstr "Konnte die Datei nicht auf die Festplatte schreiben."
 
 #: lib/mediafile.php:165
 msgid "File upload stopped by extension."
-msgstr ""
+msgstr "Upload der Datei wurde wegen der Dateiendung gestoppt."
 
 #: lib/mediafile.php:179 lib/mediafile.php:216
 msgid "File exceeds user's quota."
@@ -5238,7 +5784,6 @@ msgid "%s is not a supported file type on this server."
 msgstr ""
 
 #: lib/messageform.php:120
-#, fuzzy
 msgid "Send a direct notice"
 msgstr "Versende eine direkte Nachricht"
 
@@ -5247,14 +5792,12 @@ msgid "To"
 msgstr "An"
 
 #: lib/messageform.php:159 lib/noticeform.php:185
-#, fuzzy
 msgid "Available characters"
 msgstr "Verfügbare Zeichen"
 
 #: lib/noticeform.php:160
-#, fuzzy
 msgid "Send a notice"
-msgstr "Nachricht versenden"
+msgstr "Nachricht senden"
 
 #: lib/noticeform.php:173
 #, php-format
@@ -5270,72 +5813,63 @@ msgid "Attach a file"
 msgstr ""
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "Konnte Tags nicht speichern."
+msgstr "Teile meinen Aufenthaltsort"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Konnte Tags nicht speichern."
+msgstr "Teile meinen Aufenthaltsort nicht"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
-#, fuzzy
+#: lib/noticelist.php:430
 msgid "N"
-msgstr "Nein"
+msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
-msgstr ""
+msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
-msgstr ""
+msgstr "O"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
-msgstr ""
+msgstr "W"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "im Zusammenhang"
 
-#: lib/noticelist.php:556
-#, fuzzy
+#: lib/noticelist.php:583
 msgid "Repeated by"
-msgstr "Erstellt"
+msgstr "Wiederholt von"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Auf diese Nachricht antworten"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Antworten"
 
-#: lib/noticelist.php:628
-#, fuzzy
+#: lib/noticelist.php:655
 msgid "Notice repeated"
-msgstr "Nachricht gelöscht."
+msgstr "Nachricht wiederholt"
 
 #: lib/nudgeform.php:116
 msgid "Nudge this user"
@@ -5366,12 +5900,7 @@ msgstr "Fehler beim Einfügen des entfernten Profils"
 msgid "Duplicate notice"
 msgstr "Notiz löschen"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Dieser Benutzer erlaubt dir nicht ihn zu abonnieren."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Konnte neues Abonnement nicht eintragen."
 
@@ -5387,24 +5916,24 @@ msgstr "Antworten"
 msgid "Favorites"
 msgstr "Favoriten"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Posteingang"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Deine eingehenden Nachrichten"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Postausgang"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Deine gesendeten Nachrichten"
 
 #: lib/personaltagcloudsection.php:56
-#, fuzzy, php-format
+#, php-format
 msgid "Tags in %s's notices"
 msgstr "Tags in %ss Nachrichten"
 
@@ -5471,24 +6000,24 @@ msgid "Popular"
 msgstr "Beliebt"
 
 #: lib/repeatform.php:107
-#, fuzzy
 msgid "Repeat this notice?"
-msgstr "Auf diese Nachricht antworten"
+msgstr "Diese Nachricht wiederholen?"
 
 #: lib/repeatform.php:132
-#, fuzzy
 msgid "Repeat this notice"
-msgstr "Auf diese Nachricht antworten"
+msgstr "Diese Nachricht wiederholen"
+
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
 
 #: lib/sandboxform.php:67
-#, fuzzy
 msgid "Sandbox"
-msgstr "Posteingang"
+msgstr "Spielwiese"
 
 #: lib/sandboxform.php:78
-#, fuzzy
 msgid "Sandbox this user"
-msgstr "Benutzer freigeben"
+msgstr "Diesen Nutzer auf die Spielwiese setzen"
 
 #: lib/searchaction.php:120
 msgid "Search site"
@@ -5528,14 +6057,12 @@ msgid "More..."
 msgstr ""
 
 #: lib/silenceform.php:67
-#, fuzzy
 msgid "Silence"
-msgstr "Seitennachricht"
+msgstr "Stummschalten"
 
 #: lib/silenceform.php:78
-#, fuzzy
 msgid "Silence this user"
-msgstr "Benutzer blockieren"
+msgstr "Nutzer verstummen lassen"
 
 #: lib/subgroupnav.php:83
 #, php-format
@@ -5552,36 +6079,6 @@ msgstr "Leute, die %s abonniert haben"
 msgid "Groups %s is a member of"
 msgstr "Gruppen in denen %s Mitglied ist"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Bereits abonniert!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Dieser Benutzer hat dich blockiert."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Konnte nicht abbonieren."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Die Gegenseite konnte Dich nicht abonnieren."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Nicht abonniert!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Konnte Abonnement nicht löschen."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Konnte Abonnement nicht löschen."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5602,19 +6099,17 @@ msgstr "Top-Schreiber"
 
 #: lib/unsandboxform.php:69
 msgid "Unsandbox"
-msgstr ""
+msgstr "Von Spielwiese freigeben"
 
 #: lib/unsandboxform.php:80
-#, fuzzy
 msgid "Unsandbox this user"
 msgstr "Benutzer freigeben"
 
 #: lib/unsilenceform.php:67
 msgid "Unsilence"
-msgstr ""
+msgstr "Stummschalten aufheben"
 
 #: lib/unsilenceform.php:78
-#, fuzzy
 msgid "Unsilence this user"
 msgstr "Benutzer freigeben"
 
@@ -5634,67 +6129,67 @@ msgstr "Avatar bearbeiten"
 msgid "User actions"
 msgstr "Benutzeraktionen"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Profil Einstellungen ändern"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
-msgstr ""
+msgstr "Bearbeiten"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Direkte Nachricht an Benutzer verschickt"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Nachricht"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
-msgstr ""
+msgstr "Moderieren"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "vor wenigen Sekunden"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "vor einer Minute"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "vor %d Minuten"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "vor einer Stunde"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "vor %d Stunden"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "vor einem Tag"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "vor %d Tagen"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "vor einem Monat"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "vor %d Monaten"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "vor einem Jahr"
 
@@ -5708,7 +6203,8 @@ msgstr "%s ist keine gültige Farbe!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s ist keine gültige Farbe! Verwenden Sie 3 oder 6 Hex-Zeichen."
 
-#: scripts/xmppdaemon.php:301
-#, fuzzy, php-format
+#: lib/xmppmanager.php:402
+#, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
-msgstr "Nachricht zu lang - maximal %d Zeichen erlaubt, du hast %d gesendet"
+msgstr ""
+"Nachricht zu lang - maximal %1$d Zeichen erlaubt, du hast %2$d gesendet."
index 2f9257945bb2c2253e5f48a186545dbf9afc49c1..6ff718d453cf392d6cec453c854d6184fa48d502 100644 (file)
@@ -9,21 +9,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:00+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:24+0000\n"
 "Language-Team: Greek\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Πρόσβαση"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Ρυθμίσεις OpenID"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Περιγραφή"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr ""
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr ""
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr ""
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Ρυθμίσεις OpenID"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
-msgstr "Î\94εν Ï\85Ï\80άÏ\81Ï\87ει Ï\84έÏ\84οιο Ï\83ελίδα."
+msgstr "Î\94εν Ï\85Ï\80άÏ\81Ï\87ει Ï\84έÏ\84οια Ï\83ελίδα"
 
 #: actions/all.php:74 actions/allrss.php:68
 #: actions/apiaccountupdatedeliverydevice.php:113
@@ -34,25 +89,29 @@ msgstr "Δεν υπάρχει τέτοιο σελίδα."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Κανένας τέτοιος χρήστης."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s και οι φίλοι του/της"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -93,7 +152,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +163,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Εσείς και οι φίλοι σας"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -115,23 +174,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Η μέθοδος του ΑΡΙ δε βρέθηκε!"
@@ -146,7 +205,7 @@ msgstr "Η μέθοδος του ΑΡΙ δε βρέθηκε!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -177,8 +236,9 @@ msgstr "Απέτυχε η αποθήκευση του προφίλ."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -204,7 +264,7 @@ msgstr "Απέτυχε η ενημέρωση του χρήστη."
 
 #: actions/apiblockcreate.php:105
 msgid "You cannot block yourself!"
-msgstr "Î\94εν Î¼Ï\80οÏ\81είÏ\84ε Î½Î± ÎµÎ¼Ï\80οδίÏ\83εÏ\84ε τον εαυτό σας!"
+msgstr "Î\94εν Î¼Ï\80οÏ\81είÏ\84ε Î½Î± ÎºÎ¬Î½ÎµÏ\84ε Ï\86Ï\81αγή Ï\83τον εαυτό σας!"
 
 #: actions/apiblockcreate.php:126
 msgid "Block user failed."
@@ -296,12 +356,12 @@ msgstr "Δεν μπορείτε να εμποδίσετε τον εαυτό σα
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Απέτυχε η ενημέρωση του χρήστη."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Απέτυχε η εύρεση οποιασδήποτε κατάστασης."
@@ -324,7 +384,8 @@ msgstr "Το ψευδώνυμο είναι ήδη σε χρήση. Δοκιμά
 msgid "Not a valid nickname."
 msgstr ""
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -336,7 +397,8 @@ msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Το ονοματεπώνυμο είναι πολύ μεγάλο (μέγιστο 255 χαρακτ.)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Η περιγραφή είναι πολύ μεγάλη (μέγιστο %d χαρακτ.)."
@@ -372,9 +434,9 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
-msgstr "Î\9fμάδα δεν βρέθηκε!"
+msgstr "Î\97 Î¿μάδα δεν βρέθηκε!"
 
 #: actions/apigroupjoin.php:110 actions/joingroup.php:90
 msgid "You are already a member of that group."
@@ -413,6 +475,113 @@ msgstr ""
 msgid "groups on %s"
 msgstr "ομάδες του χρήστη %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Μήνυμα"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr ""
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Λογαριασμός"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Ψευδώνυμο"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Κωδικός"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -438,23 +607,23 @@ msgstr "Αδυναμία διαγραφής αυτού του μηνύματος
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
-msgstr "Î\97 ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83η Î´Î¹Î±Î³Ï\81άÏ\86εÏ\84αι."
+msgstr "Î\97 ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83η Î´Î¹ÎµÎ³Ï\81άÏ\86η."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -468,7 +637,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 ""
@@ -479,7 +648,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!"
@@ -495,27 +664,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr ""
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr ""
@@ -525,7 +689,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 ""
@@ -585,8 +749,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Διαγραφή"
 
@@ -598,29 +762,6 @@ msgstr ""
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -658,8 +799,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Όχι"
 
@@ -668,13 +810,13 @@ msgstr "Όχι"
 msgid "Do not block this user"
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 msgid "Yes"
-msgstr "Î\9dαί"
+msgstr "Î\9dαι"
 
-#: 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 ""
 
@@ -758,7 +900,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Απέτυχε η διαγραφή email επιβεβαίωσης."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Επιβεβαίωση διεύθυνσης"
 
 #: actions/confirmaddress.php:159
@@ -775,10 +918,54 @@ msgstr "Συζήτηση"
 msgid "Notices"
 msgstr ""
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Ο κωδικός επιβεβαίωσης δεν βρέθηκε."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Ομάδες με τα περισσότερα μέλη"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Δεν υπάρχει τέτοιο σελίδα."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Περιγράψτε την ομάδα ή το θέμα"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -809,7 +996,7 @@ msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυ
 msgid "Do not delete this notice"
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr ""
 
@@ -941,16 +1128,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr ""
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -963,10 +1140,84 @@ msgstr ""
 msgid "Add to favorites"
 msgstr ""
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
 msgstr ""
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Δεν υπάρχει τέτοιο σελίδα."
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Δεν υπάρχει τέτοιο σελίδα."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Το ονοματεπώνυμο είναι πολύ μεγάλο (μέγιστο 255 χαρακτ.)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Το ψευδώνυμο είναι ήδη σε χρήση. Δοκιμάστε κάποιο άλλο."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Περιγραφή"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Η τοποθεσία είναι πολύ μεγάλη (μέγιστο 255 χαρακτ.)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -995,7 +1246,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:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
@@ -1039,7 +1290,8 @@ msgstr ""
 "φάκελο spam!) για μήνυμα με περαιτέρω οδηγίες. "
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Ακύρωση"
 
@@ -1120,7 +1372,7 @@ msgid "Cannot normalize that email address"
 msgstr "Αδυναμία κανονικοποίησης αυτής της email διεύθυνσης"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr ""
 
@@ -1132,7 +1384,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Απέτυχε η εισαγωγή κωδικού επιβεβαίωσης."
@@ -1194,7 +1446,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr ""
@@ -1341,7 +1593,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 ""
 
@@ -1435,24 +1687,24 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1620,6 +1872,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr ""
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1696,7 +1953,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr ""
 
@@ -1770,7 +2027,7 @@ msgstr "Λάθος όνομα χρήστη ή κωδικός"
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Σύνδεση"
@@ -1779,17 +2036,6 @@ msgstr "Σύνδεση"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Ψευδώνυμο"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Κωδικός"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr ""
@@ -1820,21 +2066,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 "Αδύνατη η αποθήκευση του προφίλ."
@@ -1843,6 +2089,28 @@ msgstr "Αδύνατη η αποθήκευση του προφίλ."
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Δεν υπάρχει τέτοιο σελίδα."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1947,6 +2215,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Δεν είστε μέλος καμίας ομάδας."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1965,8 +2276,8 @@ msgstr "Σύνδεση"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -1980,7 +2291,7 @@ msgstr ""
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Ρυθμίσεις OpenID"
 
 #: actions/othersettings.php:71
@@ -2035,6 +2346,11 @@ msgstr "Μήνυμα"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2107,7 +2423,7 @@ msgstr "Αδύνατη η αποθήκευση του νέου κωδικού"
 msgid "Password saved."
 msgstr "Ο κωδικός αποθηκεύτηκε."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2115,138 +2431,155 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "Αποχώρηση"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Ρυθμίσεις OpenID"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Ρυθμίσεις OpenID"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Ρυθμίσεις OpenID"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Ρυθμίσεις OpenID"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Αποχώρηση"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr ""
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Αποχώρηση"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr ""
 
@@ -2304,7 +2637,7 @@ msgid "Full name"
 msgstr "Ονοματεπώνυμο"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Αρχική σελίδα"
 
@@ -2328,7 +2661,7 @@ msgstr "Βιογραφικό"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Τοποθεσία"
@@ -2352,7 +2685,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr ""
 
@@ -2381,7 +2714,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Το βιογραφικό είναι πολύ μεγάλο (μέγιστο 140 χαρακτ.)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2394,25 +2727,25 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Απέτυχε η ενημέρωση του χρήστη για την αυτόματη συνδρομή."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Απέτυχε η αποθήκευση του προφίλ."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr ""
 
@@ -2434,37 +2767,37 @@ msgstr ""
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Δημόσια ροή %s"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2473,7 +2806,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2506,7 +2839,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2644,7 +2977,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2684,7 +3017,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Email"
 
@@ -2789,7 +3122,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr ""
 
@@ -2828,7 +3161,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Δημιουργία"
@@ -2844,6 +3177,11 @@ msgstr "Δημιουργία"
 msgid "Replies to %s"
 msgstr ""
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr ""
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2885,6 +3223,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Η κατάσταση διαγράφεται."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2893,6 +3236,123 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Ρυθμίσεις OpenID"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Ψευδώνυμο"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Προσκλήσεις"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Περιγραφή"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr ""
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυτό το μήνυμα;"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s και οι φίλοι του/της"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2942,18 +3402,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Αδύνατη η αποθήκευση των νέων πληροφοριών του προφίλ"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -2999,10 +3464,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr ""
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Δημιουργημένος"
@@ -3058,6 +3519,11 @@ msgstr "Ρυθμίσεις OpenID"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s και οι φίλοι του/της"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3083,25 +3549,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3110,7 +3576,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3118,7 +3584,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr ""
@@ -3135,199 +3601,145 @@ msgstr ""
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Αδυναμία κανονικοποίησης αυτής της email διεύθυνσης"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr ""
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Η διεύθυνση του εισερχόμενου email αφαιρέθηκε."
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Τοπικός"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Αποχώρηση"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Πρόσβαση"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr ""
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr ""
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Ρυθμίσεις OpenID"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3430,16 +3842,26 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Αδύνατη η αποθήκευση των νέων πληροφοριών του προφίλ"
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
 msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr ""
 
@@ -3499,7 +3921,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3509,19 +3931,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr ""
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr ""
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3550,7 +3977,8 @@ msgstr ""
 msgid "User profile"
 msgstr "Προφίλ χρήστη"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3607,7 +4035,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3622,88 +4050,68 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr ""
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Νέοι χρήστες"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Όλες οι συνδρομές"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Αυτόματα γίνε συνδρομητής σε όσους γίνονται συνδρομητές σε μένα  (χρήση "
 "κυρίως από λογισμικό και όχι ανθρώπους)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Προσκλήσεις"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Εξουσιοδοτημένη συνδρομή"
@@ -3715,85 +4123,85 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Αποδοχή"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Γίνε συνδρομητής αυτού του χρήστη"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr ""
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Αδύνατη η αποθήκευση των νέων πληροφοριών του προφίλ"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr ""
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3812,6 +4220,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Αδύνατη η αποθήκευση των νέων πληροφοριών του προφίλ"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3838,11 +4251,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Η κατάσταση διαγράφεται."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3874,12 +4282,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Ψευδώνυμο"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Προσωπικά"
@@ -3888,10 +4291,6 @@ msgstr "Προσωπικά"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Περιγραφή"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3941,58 +4340,83 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr ""
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Σφάλμα βάσης δεδομένων κατά την εισαγωγή απάντησης: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr ""
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr ""
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Απέτυχε η συνδρομή."
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Απέτυχε η διαγραφή συνδρομής."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Απέτυχε η διαγραφή συνδρομής."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Δεν ήταν δυνατή η δημιουργία ομάδας."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Αδύνατη η αποθήκευση των νέων πληροφοριών του προφίλ"
@@ -4034,129 +4458,125 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Αρχή"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Λογαριασμός"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Σύνδεση"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Αδυναμία ανακατεύθηνσης στο διακομιστή: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Προσκάλεσε φίλους και συναδέλφους σου να γίνουν μέλη στο %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Αποσύνδεση"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
-msgstr "Î\94ημιοÏ\85Ï\81γία Î­Î½Î±Î½ λογαριασμού"
+msgstr "Î\94ημιοÏ\85Ï\81γία ÎµÎ½Ï\8cÏ\82 λογαριασμού"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Βοήθεια"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Βοηθήστε με!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Περί"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Συχνές ερωτήσεις"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Επικοινωνία"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, fuzzy, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4165,13 +4585,13 @@ msgstr ""
 "To **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου) που "
 "έφερε κοντά σας το  [%%site.broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, fuzzy, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 "Το **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου). "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4179,32 +4599,54 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4237,11 +4679,101 @@ msgstr "Επιβεβαίωση διεύθυνσης email"
 msgid "Design configuration"
 msgstr "Επιβεβαίωση διεύθυνσης email"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Επιβεβαίωση διεύθυνσης email"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Επιβεβαίωση διεύθυνσης email"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "Επιβεβαίωση διεύθυνσης email"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Επιβεβαίωση διεύθυνσης email"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Περιγράψτε την ομάδα ή το θέμα μέχρι %d χαρακτήρες"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Περιγράψτε την ομάδα ή το θέμα"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr ""
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr ""
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4262,12 +4794,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Ο κωδικός αποθηκεύτηκε."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Ο κωδικός αποθηκεύτηκε."
@@ -4419,82 +4951,92 @@ msgstr ""
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Κανένας τέτοιος χρήστης."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Απέτυχε η συνδρομή."
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 msgstr[1] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 msgstr[1] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Δεν είστε μέλος καμίας ομάδας."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Ομάδες με τα περισσότερα μέλη"
 msgstr[1] "Ομάδες με τα περισσότερα μέλη"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4508,6 +5050,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4535,20 +5078,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Ο κωδικός επιβεβαίωσης δεν βρέθηκε."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4564,6 +5107,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Σύνδεση"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4649,7 +5201,7 @@ msgstr "Περιγράψτε την ομάδα ή το θέμα"
 #: lib/groupeditform.php:170
 #, php-format
 msgid "Describe the group or topic in %d characters"
-msgstr "Περιγράψτε την ομάδα ή το θέμα μέχρι %d χαρακτήρες"
+msgstr "Περιγράψτε την ομάδα ή το θέμα χρησιμοποιώντας μέχρι %d χαρακτήρες"
 
 #: lib/groupeditform.php:179
 msgid ""
@@ -4748,12 +5300,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -4950,7 +5502,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "από"
 
@@ -5068,57 +5620,53 @@ msgid "Do not share my location"
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Επαναλαμβάνεται από"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Ρυθμίσεις OpenID"
@@ -5152,11 +5700,7 @@ msgstr ""
 msgid "Duplicate notice"
 msgstr "Διαγραφή μηνύματος"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Απέτυχε η εισαγωγή νέας συνδρομής."
 
@@ -5172,19 +5716,19 @@ msgstr ""
 msgid "Favorites"
 msgstr ""
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5263,6 +5807,10 @@ msgstr "Αδυναμία διαγραφής αυτού του μηνύματος
 msgid "Repeat this notice"
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5332,36 +5880,6 @@ msgstr ""
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Απέτυχε η συνδρομή."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Απέτυχε η συνδρομή."
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Απέτυχε η διαγραφή συνδρομής."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Απέτυχε η διαγραφή συνδρομής."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5414,81 +5932,81 @@ msgstr ""
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Επεξεργασία ρυθμίσεων προφίλ"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Επεξεργασία"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Μήνυμα"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr ""
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr ""
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr ""
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr ""
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr ""
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr ""
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr ""
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr ""
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr ""
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr ""
 
 #: lib/webcolor.php:82
 #, php-format
 msgid "%s is not a valid color!"
-msgstr "%s δεν είναι ένα έγκυρο χρώμα!"
+msgstr "Το %s δεν είναι ένα έγκυρο χρώμα!"
 
 #: lib/webcolor.php:123
 #, php-format
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 407007fbf9b5e35d92a46d6b2a57a287cc1f4693..98e7790f2b6510e8cdc0cb15cf0958f2cf4afa59 100644 (file)
@@ -10,17 +10,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:04+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:27+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Access"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Site access settings"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registration"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Private"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Prohibit anonymous users (not logged in) from viewing site?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Invite only"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Make registration invitation only."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Closed"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Disable new registrations."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Save"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Save access settings"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +87,29 @@ msgstr "No such page"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "No such user."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s and friends, page %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -91,15 +147,15 @@ msgstr ""
 "something yourself."
 
 #: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"You can try to [nudge %s](../%s) from his profile or [post something to his "
-"or her attention](%%%%action.newnotice%%%%?status_textarea=%s)."
+"You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
+"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -112,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "You and friends"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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!"
@@ -123,23 +179,23 @@ msgstr "Updates from %1$s and friends on %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API method not found."
 
@@ -153,7 +209,7 @@ msgstr "API method not found."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "This method requires a POST."
 
@@ -186,8 +242,9 @@ msgstr "Couldn't save profile."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -267,18 +324,16 @@ msgid "No status found with that ID."
 msgstr "No status found with that ID."
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 msgid "This status is already a favorite."
-msgstr "This status is already a favourite!"
+msgstr "This status is already a favourite."
 
 #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
 msgid "Could not create favorite."
 msgstr "Could not create favourite."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "That status is not a favourite!"
+msgstr "That status is not a favourite."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -298,19 +353,18 @@ msgid "Could not unfollow user: User not found."
 msgstr "Could not unfollow user: User not found."
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "You cannot unfollow yourself!"
+msgstr "You cannot unfollow yourself."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Two user ids or screen_names must be supplied."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Could not determine source user."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Could not find target user."
 
@@ -332,7 +386,8 @@ msgstr "Nickname already in use. Try another one."
 msgid "Not a valid nickname."
 msgstr "Not a valid nickname."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -344,7 +399,8 @@ msgstr "Homepage is not a valid URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Full name is too long (max 255 chars)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Description is too long (max %d chars)"
@@ -380,7 +436,7 @@ msgstr "Alias can't be the same as nickname."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Group not found!"
 
@@ -393,18 +449,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr "You have been blocked from that group by the admin."
 
 #: 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 "Could not join user %s to group %s."
+msgstr "Could not join user %1$s to group %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
 msgstr "You are not a member of this group."
 
 #: 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 "Could not remove user %s to group %s."
+msgstr "Could not remove user %1$s to group %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -421,6 +477,115 @@ msgstr "%s groups"
 msgid "groups on %s"
 msgstr "groups on %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "No oauth_token parameter provided."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Invalid token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "There was a problem with your session token. Try again, please."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Invalid nickname / password!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Database error deleting OAuth application user."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Database error inserting OAuth application user."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"The request token %s has been authorised. Please exchange it for an access "
+"token."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "The request token %s has been denied and revoked."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Unexpected form submission."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "An application would like to connect to your account"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Allow or deny access"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Account"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Nickname"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Password"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Deny"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Allow"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Allow or deny access to your account information."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "This method requires a POST or DELETE."
@@ -450,17 +615,17 @@ msgstr "Status deleted."
 msgid "No status with that ID found."
 msgstr "No status with that ID found."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "That's too long. Max notice size is %d chars."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Not found"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Max notice size is %d chars, including attachment URL."
@@ -470,14 +635,14 @@ msgid "Unsupported format."
 msgstr "Unsupported format."
 
 #: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Favorites from %2$s"
-msgstr "%s / Favourites from %s"
+msgstr "%1$s / Favourites from %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 updates favourited by %s / %s."
+msgstr "%1$s updates favourited by %2$s / %2$s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -485,7 +650,7 @@ msgstr "%s updates favourited by %s / %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!"
@@ -501,27 +666,22 @@ 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!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repeated by %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 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"
@@ -531,7 +691,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!"
@@ -591,8 +751,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Preview"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Delete"
 
@@ -604,29 +764,6 @@ msgstr "Upload"
 msgid "Crop"
 msgstr "Crop"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "There was a problem with your session token. Try again, please."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Unexpected form submission."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Pick a square area of the image to be your avatar"
@@ -665,8 +802,9 @@ msgstr ""
 "unsubscribed from you, unable to subscribe to you in the future, and you "
 "will not be notified of any @-replies from them."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -674,13 +812,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "Do not block this user"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -704,9 +842,9 @@ msgid "%s blocked profiles"
 msgstr "%s blocked profiles"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "%s blocked profiles, page %d"
+msgstr "%1$s blocked profiles, page %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -763,8 +901,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Couldn't delete e-mail confirmation."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
-msgstr "Confirm Address"
+msgid "Confirm address"
+msgstr "Confirm address"
 
 #: actions/confirmaddress.php:159
 #, php-format
@@ -780,10 +918,51 @@ msgstr "Conversation"
 msgid "Notices"
 msgstr "Notices"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "You must be logged in to delete an application."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Application not found."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "You are not the owner of this application."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "There was a problem with your session token."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Delete application"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"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."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Do not delete this application"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Delete this application"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -814,7 +993,7 @@ msgstr "Are you sure you want to delete this notice?"
 msgid "Do not delete this notice"
 msgstr "Do not delete this notice"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Delete this notice"
 
@@ -869,18 +1048,16 @@ msgid "Site logo"
 msgstr "Site logo"
 
 #: actions/designadminpanel.php:387
-#, fuzzy
 msgid "Change theme"
-msgstr "Change"
+msgstr "Change theme"
 
 #: actions/designadminpanel.php:404
 msgid "Site theme"
 msgstr "Site theme"
 
 #: actions/designadminpanel.php:405
-#, fuzzy
 msgid "Theme for the site."
-msgstr "Logout from the site"
+msgstr "Theme for the site."
 
 #: actions/designadminpanel.php:417 lib/designsettings.php:101
 msgid "Change background image"
@@ -892,11 +1069,13 @@ msgid "Background"
 msgstr "Background"
 
 #: 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 "You can upload a logo image for your group."
+msgstr ""
+"You can upload a background image for the site. The maximum file size is %1"
+"$s."
 
 #: actions/designadminpanel.php:457 lib/designsettings.php:139
 msgid "On"
@@ -919,14 +1098,12 @@ msgid "Change colours"
 msgstr "Change colours"
 
 #: actions/designadminpanel.php:510 lib/designsettings.php:191
-#, fuzzy
 msgid "Content"
-msgstr "Connect"
+msgstr "Content"
 
 #: actions/designadminpanel.php:523 lib/designsettings.php:204
-#, fuzzy
 msgid "Sidebar"
-msgstr "Search"
+msgstr "Sidebar"
 
 #: actions/designadminpanel.php:536 lib/designsettings.php:217
 msgid "Text"
@@ -948,16 +1125,6 @@ msgstr "Restore default designs"
 msgid "Reset back to default"
 msgstr "Reset back to default"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Save"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Save design"
@@ -970,9 +1137,75 @@ msgstr "This notice is not a favourite!"
 msgid "Add to favorites"
 msgstr "Add to favourites"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "No such document."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "No such document \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Edit Application"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "You must be logged in to edit an application."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "No such application."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Use this form to edit your application."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Name is required."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Name is too long (max 255 chars)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Name already in use. Try another one."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Description is required."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Source URL is too long."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Source URL is not valid."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organisation is required."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Organisation is too long (max 255 chars)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Organisation homepage is required."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Callback is too long."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "Callback URL is not valid."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Could not update application."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -985,9 +1218,8 @@ msgstr "You must be logged in to create a group."
 
 #: 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 "You must be an admin to edit the group"
+msgstr "You must be an admin to edit the group."
 
 #: actions/editgroup.php:154
 msgid "Use this form to edit the group."
@@ -1002,7 +1234,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:433
 msgid "Could not create aliases."
 msgstr "Could not create aliases"
 
@@ -1011,9 +1243,8 @@ msgid "Options saved."
 msgstr "Options saved."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
-msgstr "E-mail Settings"
+msgstr "E-mail settings"
 
 #: actions/emailsettings.php:71
 #, php-format
@@ -1044,14 +1275,14 @@ msgstr ""
 "a message with further instructions."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancel"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "E-mail addresses"
+msgstr "E-mail address"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1125,7 +1356,7 @@ msgid "Cannot normalize that email address"
 msgstr "Cannot normalise that e-mail address"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Not a valid e-mail address."
 
@@ -1137,7 +1368,7 @@ msgstr "That is already your e-mail address."
 msgid "That email address already belongs to another user."
 msgstr "That e-mail address already belongs to another user."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Couldn't insert confirmation code."
@@ -1198,7 +1429,7 @@ msgstr "This notice is already a favourite!"
 msgid "Disfavor favorite"
 msgstr "Disfavor favourite"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Popular notices"
@@ -1256,29 +1487,25 @@ msgid "Featured users, page %d"
 msgstr "Featured users, page %d"
 
 #: actions/featured.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "A selection of some great users on %s"
-msgstr "A selection of some of the great users on %s"
+msgstr "A selection of some great users on %s"
 
 #: actions/file.php:34
-#, fuzzy
 msgid "No notice ID."
-msgstr "No notice."
+msgstr "No notice ID."
 
 #: actions/file.php:38
-#, fuzzy
 msgid "No notice."
 msgstr "No notice."
 
 #: actions/file.php:42
-#, fuzzy
 msgid "No attachments."
-msgstr "No such document."
+msgstr "No attachments."
 
 #: actions/file.php:51
-#, fuzzy
 msgid "No uploaded attachments."
-msgstr "No such document."
+msgstr "No uploaded attachments."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
@@ -1353,21 +1580,21 @@ 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"
 
 #: actions/groupblock.php:162
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
-"Are you sure you want to block user \"%s\" from the group \"%s\"? They will "
-"be removed from the group, unable to post, and unable to subscribe to the "
-"group in the future."
+"Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
+"will be removed from the group, unable to post and unable to subscribe to "
+"the group in the future."
 
 #: actions/groupblock.php:178
 msgid "Do not block this user from this group"
@@ -1457,25 +1684,25 @@ msgstr "%s group members, page %d"
 msgid "A list of the users in this group."
 msgstr "A list of the users in this group."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1503,6 +1730,11 @@ msgid ""
 "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
 "%%%%)"
 msgstr ""
+"%%%%site.name%%%% groups let you find and talk with people of similar "
+"interests. After you join a group you can send messages to all other members "
+"using the syntax \"!groupname\". Don't see a group you like? Try [searching "
+"for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
+"%%%%)"
 
 #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
 msgid "Create a new group"
@@ -1585,9 +1817,8 @@ msgstr ""
 "message with further instructions. (Did you add %s to your buddy list?)"
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
-msgstr "I.M. Address"
+msgstr "IM address"
 
 #: actions/imsettings.php:126
 #, php-format
@@ -1648,6 +1879,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "That is not your Jabber ID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Inbox for %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1728,7 +1964,7 @@ msgstr "Personal message"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Optionally add a personal message to the invitation."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Send"
 
@@ -1825,11 +2061,10 @@ msgid "Incorrect username or password."
 msgstr "Incorrect username or password."
 
 #: actions/login.php:132 actions/otp.php:120
-#, fuzzy
 msgid "Error setting user. You are probably not authorized."
-msgstr "You are not authorised."
+msgstr "Error setting user. You are probably not authorised."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Login"
@@ -1838,17 +2073,6 @@ msgstr "Login"
 msgid "Login to site"
 msgstr "Login to site"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Nickname"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Password"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Remember me"
@@ -1878,21 +2102,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"
@@ -1901,6 +2125,30 @@ msgstr "You must be an admin to edit the group"
 msgid "No current status"
 msgstr "No current status"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "No such notice."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "You must be logged in to create a group."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Use this form to create a new group."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Could not create aliases"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "New group"
@@ -1984,6 +2232,8 @@ msgid ""
 "Why not [register an account](%%%%action.register%%%%) and be the first to "
 "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
 msgstr ""
+"Why not [register an account](%%%%action.register%%%%) and be the first to "
+"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
 
 #: actions/noticesearchrss.php:96
 #, php-format
@@ -2009,6 +2259,51 @@ msgstr "Nudge sent"
 msgid "Nudge sent!"
 msgstr "Nudge sent!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "You must be logged in to create a group."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Other options"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "You are not a member of that group."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "You have not authorised any applications to use your account."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Notice has no profile"
@@ -2027,8 +2322,8 @@ msgstr "Connect"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Not a supported data format."
 
@@ -2041,7 +2336,8 @@ msgid "Notice Search"
 msgstr "Notice Search"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Other Settings"
 
 #: actions/othersettings.php:71
@@ -2054,7 +2350,7 @@ msgstr ""
 
 #: actions/othersettings.php:116
 msgid "Shorten URLs with"
-msgstr ""
+msgstr "Shorten URLs with"
 
 #: actions/othersettings.php:117
 msgid "Automatic shortening service to use."
@@ -2098,6 +2394,11 @@ msgstr "Invalid notice content"
 msgid "Login token expired."
 msgstr "Login to site"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Outbox for %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2168,7 +2469,7 @@ msgstr "Can't save new password."
 msgid "Password saved."
 msgstr "Password saved."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2176,138 +2477,154 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Theme directory not readable: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Invite"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Server"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Site path"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Avatar"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Avatar settings"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Avatar updated."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Avatar updated."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Never"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Sometimes"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Server"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Save paths"
 
@@ -2339,9 +2656,9 @@ msgid "Invalid notice content"
 msgstr "Invalid notice content"
 
 #: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
-msgstr "Notice licence ‘%s’ is not compatible with site licence ‘%s’."
+msgstr "Notice licence ‘1%$s’ is not compatible with site licence ‘%2$s’."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2368,7 +2685,7 @@ msgid "Full name"
 msgstr "Full name"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Homepage"
 
@@ -2391,7 +2708,7 @@ msgstr "Bio"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Location"
@@ -2416,7 +2733,7 @@ msgid ""
 msgstr ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Language"
 
@@ -2443,7 +2760,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Bio is too long (max %d chars)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Timezone not selected."
 
@@ -2456,24 +2773,24 @@ msgstr "Language is too long (max 50 chars)."
 msgid "Invalid tag: \"%s\""
 msgstr "Invalid tag: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Couldn't update user for autosubscribe."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Couldn't save tags."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Couldn't save profile."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Couldn't save tags."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Settings saved."
 
@@ -2495,39 +2812,39 @@ msgstr "Public timeline, page %d"
 msgid "Public timeline"
 msgstr "Public timeline"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Public Stream Feed"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Public Stream Feed"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Public Stream Feed"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2540,7 +2857,7 @@ msgstr ""
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2576,7 +2893,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Tag cloud"
 
@@ -2613,6 +2930,8 @@ msgid ""
 "If you have forgotten or lost your password, you can get a new one sent to "
 "the email address you have stored in your account."
 msgstr ""
+"If you have forgotten or lost your password, you can get a new one sent to "
+"the e-mail address you have stored in your account."
 
 #: actions/recoverpassword.php:158
 msgid "You have been identified. Enter a new password below. "
@@ -2624,7 +2943,7 @@ msgstr ""
 
 #: actions/recoverpassword.php:191
 msgid "Nickname or email address"
-msgstr ""
+msgstr "Nickname or e-mail address"
 
 #: actions/recoverpassword.php:193
 msgid "Your nickname on this server, or your registered email address."
@@ -2715,7 +3034,7 @@ msgstr "Error with confirmation code."
 msgid "Registration successful"
 msgstr "Registration successful"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Register"
@@ -2755,7 +3074,7 @@ msgid "Same as password above. Required."
 msgstr "Same as password above. Required."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mail"
 
@@ -2785,7 +3104,7 @@ msgstr ""
 "number."
 
 #: 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"
@@ -2802,18 +3121,18 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may "
+"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
 "want to...\n"
 "\n"
-"* Go to [your profile](%s) and post your first message.\n"
+"* Go to [your profile](%2$s) and post your first message.\n"
 "* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send "
 "notices through instant messages.\n"
 "* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that "
-"share your interests. \n"
+"share your interests.  \n"
 "* Update your [profile settings](%%%%action.profilesettings%%%%) to tell "
-"others more about you. \n"
+"others more about you.  \n"
 "* Read over the [online docs](%%%%doc.help%%%%) for features you may have "
-"missed. \n"
+"missed.  \n"
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 
@@ -2862,7 +3181,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL of your profile on another compatible microblogging service"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subscribe"
 
@@ -2904,7 +3223,7 @@ msgstr "You can't repeat your own notice."
 msgid "You already repeated that notice."
 msgstr "You have already blocked this user."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Created"
@@ -2920,6 +3239,11 @@ msgstr "Created"
 msgid "Replies to %s"
 msgstr "Replies to %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Replies to %1$s on %2$s!"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2964,6 +3288,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Replies to %1$s on %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Status deleted."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "You cannot sandbox users on this site."
@@ -2972,6 +3301,125 @@ msgstr "You cannot sandbox users on this site."
 msgid "User is already sandboxed."
 msgstr "User is already sandboxed."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Design settings for this StausNet site."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Save site settings"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "You must be logged in to leave a group."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Notice has no profile"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Nickname"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Pagination"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Description"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistics"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Authorise URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Are you sure you want to delete this notice?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s's favourite notices"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Could not retrieve favourite notices."
@@ -2996,6 +3444,8 @@ msgid ""
 "You haven't chosen any favorite notices yet. Click the fave button on "
 "notices you like to bookmark them for later or shed a spotlight on them."
 msgstr ""
+"You haven't chosen any favourite notices yet. Click the fave button on "
+"notices you like to bookmark them for later or shed a spotlight on them."
 
 #: actions/showfavorites.php:207
 #, php-format
@@ -3003,6 +3453,8 @@ msgid ""
 "%s hasn't added any notices to his favorites yet. Post something interesting "
 "they would add to their favorites :)"
 msgstr ""
+"%s hasn't added any notices to his favourites yet. Post something "
+"interesting they would add to their favourites :)"
 
 #: actions/showfavorites.php:211
 #, php-format
@@ -3011,6 +3463,9 @@ msgid ""
 "account](%%%%action.register%%%%) and then post something interesting they "
 "would add to their favorites :)"
 msgstr ""
+"%s hasn't added any notices to his favourites yet. Why not [register an "
+"account](%%%%action.register%%%%) and then post something interesting they "
+"would add to their favourites :)"
 
 #: actions/showfavorites.php:242
 msgid "This is a way to share what you like."
@@ -3021,17 +3476,22 @@ msgstr ""
 msgid "%s group"
 msgstr "%s group"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s group members, page %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Group profile"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Note"
 
@@ -3077,10 +3537,6 @@ msgstr "(None)"
 msgid "All members"
 msgstr "All members"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistics"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Created"
@@ -3094,6 +3550,11 @@ msgid ""
 "their life and interests. [Join now](%%%%action.register%%%%) to become part "
 "of this group and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
+"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. Its members share short messages about "
+"their life and interests. [Join now](%%%%action.register%%%%) to become part "
+"of this group and many more! ([Read more](%%%%doc.help%%%%))"
 
 #: actions/showgroup.php:454
 #, fuzzy, php-format
@@ -3138,6 +3599,11 @@ msgstr "Notice deleted."
 msgid " tagged %s"
 msgstr "  tagged %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s and friends, page %2$d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3163,19 +3629,19 @@ msgstr "Notice feed for %s"
 msgid "FOAF for %s"
 msgstr "FOAF for %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "This is the timeline for %s and friends but no one has posted anything yet."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, fuzzy, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3184,7 +3650,7 @@ msgstr ""
 "You can try to [nudge %s](../%s) from his profile or [post something to his "
 "or her attention](%%%%action.newnotice%%%%?status_textarea=%s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3193,7 +3659,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3204,7 +3670,7 @@ msgstr ""
 "wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
 "[StatusNet](http://status.net/) tool. "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Replies to %s"
@@ -3223,198 +3689,145 @@ msgstr "User is already blocked from group."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Not a valid e-mail address."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
-msgstr ""
+msgstr "Minimum text limit is 140 characters."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Site name"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
-#, fuzzy
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
-msgstr "New e-mail address for posting to %s"
+msgstr "Contact e-mail address for your site"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Local views"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Default site language"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URLs"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Server"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Access"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Private"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Invite only"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Closed"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Save site settings"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3525,15 +3938,26 @@ msgstr "No code entered"
 msgid "You are not subscribed to that profile."
 msgstr "You are not subscribed to that profile."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Could not save subscription."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Not a local user."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "No such notice."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "You are not subscribed to that profile."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Subscribed"
 
@@ -3593,7 +4017,7 @@ msgstr "These are the people whose notices you listen to."
 msgid "These are the people whose notices %s listens to."
 msgstr "These are the people whose notices %s listens to."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3603,19 +4027,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s is not listening to anyone."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Users self-tagged with %s - page %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3645,7 +4074,8 @@ msgstr "Tag %s"
 msgid "User profile"
 msgstr "User profile"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Photo"
 
@@ -3706,7 +4136,7 @@ msgstr "No profile id in request."
 msgid "Unsubscribed"
 msgstr "Unsubscribed"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, fuzzy, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3721,88 +4151,68 @@ msgstr "User"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profile"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "New users"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Default subscription"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Invitation(s) sent"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Invitation(s) sent"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Authorise subscription"
@@ -3818,36 +4228,36 @@ msgstr ""
 "user's notices. If you didn't just ask to subscribe to someone's notices, "
 "click \"Cancel\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "License"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Accept"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Subscribe to this user"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Reject"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Reject this subscription"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "No authorisation request!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Subscription authorised"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3858,11 +4268,11 @@ msgstr ""
 "with the site's instructions for details on how to authorise the "
 "subscription. Your subscription token is:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Subscription rejected"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3873,37 +4283,37 @@ msgstr ""
 "with the site's instructions for details on how to fully reject the "
 "subscription."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Can't read avatar URL '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Wrong image type for '%s'"
@@ -3923,6 +4333,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s group members, page %d"
+
 #: actions/usergroups.php:130
 #, fuzzy
 msgid "Search for more groups"
@@ -3950,11 +4365,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status deleted."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3966,6 +4376,10 @@ msgid ""
 "Software Foundation, either version 3 of the License, or (at your option) "
 "any later version. "
 msgstr ""
+"StatusNet is free software: you can redistribute it and/or modify it under "
+"the terms of the GNU Affero General Public Licence as published by the Free "
+"Software Foundation, either version 3 of the Licence, or (at your option) "
+"any later version. "
 
 #: actions/version.php:174
 msgid ""
@@ -3974,6 +4388,10 @@ msgid ""
 "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License "
 "for more details. "
 msgstr ""
+"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 Licence "
+"for more details. "
 
 #: actions/version.php:180
 #, php-format
@@ -3981,17 +4399,14 @@ msgid ""
 "You should have received a copy of the GNU Affero General Public License "
 "along with this program.  If not, see %s."
 msgstr ""
+"You should have received a copy of the GNU Affero General Public Licence "
+"along with this program.  If not, see %s."
 
 #: actions/version.php:189
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Nickname"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Personal"
@@ -4000,10 +4415,6 @@ msgstr "Personal"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Description"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4054,27 +4465,27 @@ msgstr "Could not insert message."
 msgid "Could not update message with new URI."
 msgstr "Could not update message with new URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "DB error inserting hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Problem saving notice."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problem saving notice. Unknown user."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4082,34 +4493,60 @@ msgid ""
 msgstr ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "You are banned from posting notices on this site."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problem saving notice."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "DB error inserting reply: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Problem saving notice."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "You have been banned from subscribing."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "User has blocked you."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Not subscribed!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Couldn't delete subscription."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Couldn't delete subscription."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Welcome to %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Could not create group."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Could not set group membership."
 
@@ -4150,130 +4587,126 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Untitled page"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Primary site navigation"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Home"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Personal profile and friends timeline"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Account"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Change your e-mail, avatar, password, profile"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Connect"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Could not redirect to server: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Primary site navigation"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invite"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Invite friends and colleagues to join you on %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Logout"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Logout from the site"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Create an account"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Login to the site"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Help"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Help me!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Search"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Search for people or text"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Site notice"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Local views"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Page notice"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Secondary site navigation"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "About"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "F.A.Q."
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Source"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Badge"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet software licence"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4282,12 +4715,12 @@ msgstr ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** is a microblogging service."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4298,33 +4731,55 @@ msgstr ""
 "s, available under the [GNU Affero General Public Licence](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Site content license"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "All "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licence."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Pagination"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "After"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Before"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4360,11 +4815,104 @@ msgstr "E-mail address confirmation"
 msgid "Design configuration"
 msgstr "Design configuration"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS confirmation"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Design configuration"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS confirmation"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Design configuration"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Describe the group or topic in %d characters"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Describe the group or topic"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Source"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL of the homepage or blog of the group or topic"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organisation responsible for this application"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL for the homepage of the organisation"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Remove"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4386,12 +4934,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Password change"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Password change"
@@ -4542,83 +5090,92 @@ msgstr "Error saving notice."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Specify the name of the user to subscribe to"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "No such user."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Subscribed to %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Specify the name of the user to unsubscribe from"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Unsubscribed from %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Command not yet implemented."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notification off."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Can't turn off notification."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notification on."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Can't turn on notification."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Unsubscribed from %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "You are not subscribed to that profile."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "You are already subscribed to these users:"
 msgstr[1] "You are already subscribed to these users:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Could not subscribe other to you."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Could not subscribe other to you."
 msgstr[1] "Could not subscribe other to you."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "You are not a member of that group."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "You are not a member of that group."
 msgstr[1] "You are not a member of that group."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4632,6 +5189,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4659,19 +5217,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "No configuration file found"
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Go to the installer."
 
@@ -4687,6 +5245,15 @@ msgstr "Updates by instant messenger (I.M.)"
 msgid "Updates by SMS"
 msgstr "Updates by SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Connect"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4872,12 +5439,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5092,7 +5659,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr "from"
@@ -5211,59 +5778,55 @@ msgid "Do not share my location"
 msgstr "Couldn't save tags."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "in context"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Created"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Reply to this notice"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Reply"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Notice deleted."
@@ -5296,11 +5859,7 @@ msgstr "Error inserting remote profile."
 msgid "Duplicate notice"
 msgstr "Duplicate notice"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "You have been banned from subscribing."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Couldn't insert new subscription."
 
@@ -5316,19 +5875,19 @@ msgstr "Replies"
 msgid "Favorites"
 msgstr "Favourites"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Inbox"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Your incoming messages"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Outbox"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Your sent messages"
 
@@ -5409,6 +5968,10 @@ msgstr "Reply to this notice"
 msgid "Repeat this notice"
 msgstr "Reply to this notice"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Sandbox"
@@ -5477,36 +6040,6 @@ msgstr "People subscribed to %s"
 msgid "Groups %s is a member of"
 msgstr "Groups %s is a member of"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "User has blocked you."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Could not subscribe."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Could not subscribe other to you."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Not subscribed!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Couldn't delete subscription."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Couldn't delete subscription."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5557,67 +6090,67 @@ msgstr "Edit Avatar"
 msgid "User actions"
 msgstr "User actions"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Edit profile settings"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Send a direct message to this user"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Message"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "a few seconds ago"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "about a minute ago"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "about %d minutes ago"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "about an hour ago"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "about %d hours ago"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "about a day ago"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "about %d days ago"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "about a month ago"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "about %d months ago"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "about a year ago"
 
@@ -5631,7 +6164,7 @@ msgstr "%s is not a valid colour!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s is not a valid colour! Use 3 or 6 hex chars."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Message too long - maximum is %d characters, you sent %d"
index 76343bf66e5cd07813808361a4d22f9c0a853d75..b5e0469b61ee6ad6a843dc15eb08a207711d8571 100644 (file)
@@ -12,17 +12,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:07+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:30+0000\n"
 "Language-Team: Spanish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Acceder"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Configuración de acceso de la web"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registro"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+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?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Invitar sólo"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Haz que el registro sea sólo con invitaciones."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Cerrado"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Inhabilitar nuevos registros."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Guardar"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Guardar la configuración de acceso"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -37,25 +89,29 @@ msgstr "No existe tal página"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "No existe ese usuario."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s y amigos, página %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -81,6 +137,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
@@ -88,6 +146,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
@@ -95,20 +155,24 @@ 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:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
 "post a notice to his or her attention."
 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:122
-#: 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!"
@@ -118,26 +182,25 @@ msgstr "¡Actualizaciones de %1$s y amigos en %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 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
@@ -149,7 +212,7 @@ msgstr "¡No se encontró el método de la API!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Este método requiere un POST."
 
@@ -158,9 +221,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."
 
@@ -174,14 +238,14 @@ 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."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -198,15 +262,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!"
@@ -245,9 +307,9 @@ msgid "No message text!"
 msgstr "¡Sin texto de mensaje!"
 
 #: actions/apidirectmessagenew.php:135 actions/newmessage.php:150
-#, fuzzy, php-format
+#, php-format
 msgid "That's too long. Max message size is %d chars."
-msgstr "Demasiado largo. Máximo 140 caracteres.  "
+msgstr "Demasiado largo. Tamaño máx. de los mensajes es %d caracteres."
 
 #: actions/apidirectmessagenew.php:146
 msgid "Recipient user not found."
@@ -299,11 +361,11 @@ msgstr "No puedes dejar de seguirte a ti mismo."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Deben proveerse dos identificaciones de usuario o nombres en pantalla."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "No se pudo determinar el usuario fuente."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "No se pudo encontrar ningún usuario de destino."
 
@@ -312,22 +374,23 @@ 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/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -339,7 +402,8 @@ msgstr "La página de inicio no es un URL válido."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tu nombre es demasiado largo (max. 255 carac.)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "La descripción es demasiado larga (máx. %d caracteres)."
@@ -358,27 +422,26 @@ 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
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
-#, fuzzy
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
-msgstr "¡No se encontró el método de la API!"
+msgstr "¡No se ha encontrado el grupo!"
 
 #: actions/apigroupjoin.php:110 actions/joingroup.php:90
 msgid "You are already a member of that group."
@@ -386,21 +449,21 @@ msgstr "Ya eres miembro de ese grupo"
 
 #: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221
 msgid "You have been blocked from that group by the admin."
-msgstr ""
+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
@@ -417,6 +480,118 @@ msgstr "Grupos %s"
 msgid "groups on %s"
 msgstr "Grupos en %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "No se ha provisto de un parámetro oauth_token."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Token inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Hubo un problema con tu clave de sesión.  Por favor, intenta nuevamente."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "¡Apodo o contraseña inválidos!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+"Error de la base de datos durante la eliminación del usuario de la "
+"aplicación OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Error de base de datos al insertar usuario de la aplicación OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+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 "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
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Envío de formulario inesperado."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Una aplicación quisiera conectarse a tu cuenta"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Permitir o denegar el acceso"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"La aplicación <strong>%1$s</strong> por <strong>%2$s</strong> solicita "
+"permiso para <strong>%3$s</strong> 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"
+msgstr "Cuenta"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Apodo"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Contraseña"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Denegar"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Permitir"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Permitir o denegar el acceso a la información de tu cuenta."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Este método requiere un PUBLICAR O ELIMINAR"
@@ -431,14 +606,12 @@ msgid "No such notice."
 msgstr "No existe ese aviso."
 
 #: actions/apistatusesretweet.php:83
-#, fuzzy
 msgid "Cannot repeat your own notice."
-msgstr "No se puede activar notificación."
+msgstr "No puedes repetir tus propias notificaciones."
 
 #: actions/apistatusesretweet.php:91
-#, fuzzy
 msgid "Already repeated that notice."
-msgstr "Borrar este aviso"
+msgstr "Esta notificación ya se ha repetido."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
@@ -448,34 +621,36 @@ msgstr "Status borrado."
 msgid "No status with that ID found."
 msgstr "No hay estado para ese ID"
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: 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:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "No encontrado"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
+"El tamaño máximo de la notificación es %d caracteres, incluyendo el URL "
+"adjunto."
 
 #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
 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
@@ -483,66 +658,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/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: 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
@@ -566,9 +734,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
@@ -591,8 +759,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Vista previa"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Borrar"
 
@@ -604,30 +772,6 @@ msgstr "Cargar"
 msgid "Crop"
 msgstr "Cortar"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Hubo un problema con tu clave de sesión.  Por favor, intenta nuevamente."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Envío de formulario inesperado."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Elige un área cuadrada de la imagen para que sea tu avatar"
@@ -645,14 +789,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 este usuario."
 
 #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
 msgid "Block user"
@@ -664,24 +806,27 @@ 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/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 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/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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."
 
@@ -700,19 +845,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"
@@ -765,7 +910,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "No se pudo eliminar la confirmación de correo electrónico."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Confirmar la dirección"
 
 #: actions/confirmaddress.php:159
@@ -782,10 +927,51 @@ msgstr "Conversación"
 msgid "Notices"
 msgstr "Avisos"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Debes estar registrado para borrar una aplicación."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Aplicación no encontrada."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+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
+#: lib/action.php:1197
+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
+msgid "Delete application"
+msgstr "Eliminar la aplicación"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"¿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
+msgid "Do not delete this application"
+msgstr "No eliminar esta aplicación"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -797,13 +983,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"
@@ -814,11 +999,10 @@ 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:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Borrar este aviso"
 
@@ -827,9 +1011,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"
@@ -840,6 +1023,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"
@@ -848,16 +1033,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
@@ -869,56 +1053,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"
@@ -929,9 +1111,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"
@@ -943,29 +1124,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 ""
-
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Guardar"
+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!"
@@ -975,9 +1146,75 @@ msgstr "¡Este aviso no es un favorito!"
 msgid "Add to favorites"
 msgstr "Agregar a favoritos"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "No existe ese documento."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "No existe tal documento \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Editar aplicación"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Debes haber iniciado sesión para editar una aplicación."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "No existe tal aplicación."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Utiliza este formulario para editar tu aplicación."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Se requiere un nombre"
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "El nombre es muy largo (máx. 255 carac.)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Ese nombre ya está en uso. Prueba con otro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Se requiere una descripción"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "El URL fuente es muy largo."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "La URL fuente es inválida."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Se requiere una organización."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+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 "Se requiere una página principal de organización"
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "La devolución de llamada es muy larga."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "El URL de devolución de llamada es inválido."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "No fue posible actualizar la aplicación."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -990,36 +1227,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:433
 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
@@ -1050,14 +1284,14 @@ msgstr ""
 "la de spam!) por un mensaje con las instrucciones."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 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\""
@@ -1104,10 +1338,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."
@@ -1135,7 +1368,7 @@ msgid "Cannot normalize that email address"
 msgstr "No se puede normalizar esta dirección de correo electrónico."
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Correo electrónico no válido"
 
@@ -1147,7 +1380,7 @@ msgstr "Esa ya es tu dirección de correo electrónico"
 msgid "That email address already belongs to another user."
 msgstr "Esa dirección de correo pertenece a otro usuario."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "No se pudo insertar el código de confirmación."
@@ -1209,31 +1442,33 @@ msgstr "¡Este aviso ya está en favoritos!"
 msgid "Disfavor favorite"
 msgstr "Sacar favorito"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: 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
@@ -1241,6 +1476,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
@@ -1249,9 +1486,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
@@ -1264,14 +1501,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."
@@ -1306,14 +1542,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"
@@ -1346,7 +1580,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."
@@ -1356,7 +1590,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"
 
@@ -1367,6 +1601,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"
@@ -1379,6 +1616,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."
@@ -1389,56 +1628,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
@@ -1446,40 +1682,38 @@ 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."
 msgstr "Lista de los usuarios en este grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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
@@ -1500,30 +1734,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
@@ -1531,6 +1768,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
@@ -1538,23 +1777,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"
 
@@ -1568,9 +1806,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."
@@ -1587,7 +1824,6 @@ msgstr ""
 "de amigos?)"
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
 msgstr "Dirección de mensajería instantánea"
 
@@ -1652,6 +1888,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Ese no es tu Jabber ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Bandeja de entrada de %1$s - página %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1664,7 +1905,7 @@ msgstr ""
 
 #: actions/invite.php:39
 msgid "Invites have been disabled."
-msgstr ""
+msgstr "Se han inhabilitado las invitaciones."
 
 #: actions/invite.php:41
 #, php-format
@@ -1733,7 +1974,7 @@ msgstr "Mensaje Personal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Opcionalmente añada un mensaje personalizado a su invitación."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Enviar"
 
@@ -1743,7 +1984,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"
@@ -1772,55 +2013,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."
@@ -1831,11 +2071,10 @@ 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:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inicio de sesión"
@@ -1844,17 +2083,6 @@ msgstr "Inicio de sesión"
 msgid "Login to site"
 msgstr "Ingresar a sitio"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Apodo"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Contraseña"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Recordarme"
@@ -1878,38 +2106,58 @@ 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
+msgid "New Application"
+msgstr "Nueva aplicación"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Debes conectarte para registrar una aplicación."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Utiliza este formulario para registrar una nueva aplicación."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Se requiere la URL fuente."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "No se pudo crear la aplicación."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Grupo nuevo "
@@ -1941,14 +2189,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"
@@ -1959,9 +2206,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
@@ -1977,9 +2223,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
@@ -1987,6 +2233,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
@@ -1994,16 +2242,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 ""
@@ -2017,9 +2269,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
+msgid "You must be logged in to list your applications."
+msgstr "Debes estar conectado para listar tus aplicaciones."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Aplicaciones OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Aplicaciones que has registrado"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Aún no has registrado aplicación alguna."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Aplicaciones conectadas"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Has permitido a las siguientes aplicaciones acceder a tu cuenta."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "No eres un usuario de esa aplicación."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+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 "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"
@@ -2031,16 +2326,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:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "No es un formato de dato soportado"
 
@@ -2053,9 +2347,8 @@ msgid "Notice Search"
 msgstr "Búsqueda de avisos"
 
 #: actions/othersettings.php:60
-#, fuzzy
-msgid "Other Settings"
-msgstr "Otras configuraciones"
+msgid "Other settings"
+msgstr "Otros ajustes"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
@@ -2063,54 +2356,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
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Bandeja de salida de %1$s - página %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2127,14 +2418,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"
@@ -2185,7 +2474,7 @@ msgstr "No se puede guardar la nueva contraseña."
 msgid "Password saved."
 msgstr "Se guardó Contraseña."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2193,142 +2482,150 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
-#, fuzzy, php-format
+#: actions/pathsadminpanel.php:157
+#, 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:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
-msgstr ""
+msgstr "Directorio de fondo ilegible: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: 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:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
-#, fuzzy
 msgid "Site"
-msgstr "Invitar"
+msgstr "Sitio"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Servidor"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Aviso de sitio"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
-msgid "Theme"
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
-msgid "Theme server"
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:259
+msgid "Theme"
+msgstr "Tema"
+
+#: actions/pathsadminpanel.php:264
+msgid "Theme server"
+msgstr "Servidor de los temas"
+
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
-msgstr ""
+msgstr "Directorio de temas"
 
-#: actions/pathsadminpanel.php:252
-#, fuzzy
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
-msgstr "Avatar"
+msgstr "Avatares"
 
-#: actions/pathsadminpanel.php:257
-#, fuzzy
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
-msgstr "Configuración de Avatar"
+msgstr "Servidor del avatar"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Avatar actualizado"
 
-#: actions/pathsadminpanel.php:265
-#, fuzzy
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
-msgstr "Avatar actualizado"
+msgstr "Directorio del avatar"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
-msgstr ""
+msgstr "Fondos"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
-msgstr ""
+msgstr "Servidor de fondo"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
-msgstr ""
+msgstr "Directorio del fondo"
 
-#: actions/pathsadminpanel.php:293
-#, fuzzy
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
-msgstr "SMS"
+msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
-#, fuzzy
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
-msgstr "Recuperar"
+msgstr "Nunca"
 
-#: actions/pathsadminpanel.php:297
-#, fuzzy
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
-msgstr "Avisos"
+msgstr "A veces"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
-msgstr ""
+msgstr "Siempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
-msgstr ""
+msgstr "Usar SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
-msgstr ""
+msgstr "Cuándo utilizar SSL"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
-msgstr "Recuperar"
+msgstr "Servidor SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
-msgstr ""
+msgstr "Servidor hacia el cual dirigir las solicitudes SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Aviso de sitio"
@@ -2347,9 +2644,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
@@ -2377,9 +2674,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"
@@ -2393,7 +2689,7 @@ msgid "Full name"
 msgstr "Nombre completo"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Página de inicio"
 
@@ -2402,14 +2698,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"
@@ -2417,7 +2712,7 @@ msgstr "Biografía"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Ubicación"
@@ -2428,7 +2723,7 @@ msgstr "Dónde estás, por ejemplo \"Ciudad, Estado (o Región), País\""
 
 #: actions/profilesettings.php:138
 msgid "Share my current location when posting notices"
-msgstr ""
+msgstr "Compartir mi ubicación actual al publicar los mensajes"
 
 #: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
@@ -2441,7 +2736,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr "Tags para ti (letras, números, -, ., y _), coma - o espacio - separado"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Idioma"
 
@@ -2465,11 +2760,11 @@ 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:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Zona horaria no seleccionada"
 
@@ -2478,83 +2773,83 @@ 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
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "No se pudo actualizar el usuario para autosuscribirse."
 
-#: actions/profilesettings.php:359
-#, fuzzy
+#: actions/profilesettings.php:363
 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
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "No se pudo guardar el perfil."
 
-#: actions/profilesettings.php:379
-#, fuzzy
+#: actions/profilesettings.php:383
 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
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 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"
 msgstr "Línea temporal pública"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Feed del flujo público"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Feed del flujo público"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Feed del flujo público"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 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:182
+#: actions/public.php:190
 msgid "Be the first to post!"
-msgstr ""
+msgstr "¡Sé la primera persona en publicar algo!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2563,7 +2858,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2574,9 +2869,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
@@ -2590,7 +2884,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
@@ -2598,8 +2892,10 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post "
 "one!"
 msgstr ""
+"¿Por qué no [registras una cuenta](%%action.register%%) y te conviertes en "
+"la primera persona en publicar uno?"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Nube de tags"
 
@@ -2642,14 +2938,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."
@@ -2734,15 +3032,14 @@ msgid "Sorry, only invited people can register."
 msgstr "Disculpa, sólo personas invitadas pueden registrarse."
 
 #: actions/register.php:92
-#, fuzzy
 msgid "Sorry, invalid invitation code."
-msgstr "Error con el código de confirmación."
+msgstr "El código de invitación no es válido."
 
 #: actions/register.php:112
 msgid "Registration successful"
 msgstr "Registro exitoso."
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrarse"
@@ -2784,7 +3081,7 @@ msgid "Same as password above. Required."
 msgstr "Igual a la contraseña de arriba. Requerida"
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Correo electrónico"
 
@@ -2806,16 +3103,15 @@ 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
+#, php-format
 msgid ""
 "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
 "want to...\n"
@@ -2832,20 +3128,20 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"¡Felicitaciones, %s! Y bienvenido a %%%%site.name%%%%. Desde aquí, "
-"puedes...\n"
+"¡Felicitaciones, %1$s! Te damos la bienvenida a %%%%site.name%%%%. Desde "
+"este momento, puede que quieras...\n"
 "\n"
-"* Ir a [tu perfil](%s) y enviar tu primer mensaje.\n"
-"* Agregar una [cuenta Jabber/Gtalk](%%%%action.imsettings%%%%) para enviar "
-"avisos por mensajes instantáneos.\n"
-"* [Buscar personas](%%%%action.peoplesearch%%%%) que podrías conoces o que "
-"comparte tus intereses.\n"
-"* Actualizar tus [opciones de perfil](%%%%action.profilesettings%%%%) para "
-"contar más sobre tí.\n"
-"* Leer la [documentación en línea](%%%%doc.help%%%%) para encontrar "
-"características pasadas por alto.\n"
+"* Ir a [tu perfil](%2$s) y publicar tu primer mensaje.\n"
+"* Añadir una [dirección Jabber/GTalk](%%%%action.imsettings%%%%) para poder "
+"enviar mensajes a través de mensajería instantanea.\n"
+"* [Buscar personas](%%%%action.peoplesearch%%%%) que conozcas o que "
+"compartan tus intereses.  \n"
+"* Actualizar tu [configuración de perfil](%%%%action.profilesettings%%%%) "
+"para contarle a otros más sobre tí.  \n"
+"* Leer los [documentos en línea](%%%%doc.help%%%%) para encontrar "
+"características que te hayas podido perder.  \n"
 "\n"
-"Gracias por suscribirte y esperamos que disfrutes el uso de este servicio."
+"¡Gracias por apuntarte! Esperamos que disfrutes usando este servicio."
 
 #: actions/register.php:562
 msgid ""
@@ -2872,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"
@@ -2893,7 +3188,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "El URL de tu perfil en otro servicio de microblogueo compatible"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Suscribirse"
 
@@ -2902,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:629
-#, fuzzy
+#: actions/repeat.php:114 lib/noticelist.php:656
 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
@@ -2952,6 +3240,11 @@ msgstr "Crear"
 msgid "Replies to %s"
 msgstr "Respuestas a %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Respuestas a %1$s, página %2$d"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2993,6 +3286,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Respuestas a %1$s en %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -3003,6 +3300,121 @@ msgstr "No puedes enviar mensaje a este usuario."
 msgid "User is already sandboxed."
 msgstr "El usuario te ha bloqueado."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sesiones"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Configuración de sesión para este sitio StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gestionar sesiones"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Guardar la configuración del sitio"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Debes estar conectado para dejar un grupo."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Perfil de la aplicación"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Icono"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nombre"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organización"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Descripción"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Estadísticas"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Acciones de la aplicación"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Información de la aplicación"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL del token de solicitud"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL del token de acceso"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Autorizar URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "¿Estás seguro de que quieres eliminar este aviso?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Avisos favoritos de %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "No se pudo recibir avisos favoritos."
@@ -3052,25 +3464,28 @@ msgstr ""
 msgid "%s group"
 msgstr "Grupo %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+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:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
-#, fuzzy
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Nota"
 
 #: actions/showgroup.php:284 lib/groupeditform.php:184
 msgid "Aliases"
-msgstr ""
+msgstr "Alias"
 
 #: actions/showgroup.php:293
 msgid "Group actions"
@@ -3111,14 +3526,9 @@ msgstr "(Ninguno)"
 msgid "All members"
 msgstr "Todos los miembros"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Estadísticas"
-
 #: actions/showgroup.php:432
-#, fuzzy
 msgid "Created"
-msgstr "Crear"
+msgstr "Creado"
 
 #: actions/showgroup.php:448
 #, php-format
@@ -3142,9 +3552,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."
@@ -3169,9 +3578,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
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, página %2$d"
 
 #: actions/showstream.php:122
 #, fuzzy, php-format
@@ -3198,25 +3612,25 @@ msgstr "Feed de avisos de %s"
 msgid "FOAF for %s"
 msgstr "Bandeja de salida para %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3225,20 +3639,21 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
-#, fuzzy, php-format
+#: actions/showstream.php:248
+#, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
 "wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
-"**%s** tiene una cuenta en %%%%site.name%%%%, un servicio [micro-blogging]"
-"(http://en.wikipedia.org/wiki/Micro-blogging) "
+"**% s ** tiene una cuenta en %%%%site.name%%%%, un servicio de "
+"[microblogueo] (http://en.wikipedia.org/wiki/Micro-blogging), basado en la "
+"herramienta de software libre [StatusNet] (http://status.net/). "
 
-#: actions/showstream.php:313
-#, fuzzy, php-format
+#: actions/showstream.php:305
+#, php-format
 msgid "Repeat of %s"
-msgstr "Respuestas a %s"
+msgstr "Repetición de %s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 #, fuzzy
@@ -3252,213 +3667,151 @@ 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:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "No es una dirección de correo electrónico válida"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
-msgstr ""
+msgstr "Idioma desconocido \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
-msgstr ""
+msgstr "La frecuencia de captura debe ser un número."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
-msgstr ""
+msgstr "General"
 
-#: actions/siteadminpanel.php:256
-#, fuzzy
+#: actions/siteadminpanel.php:242
 msgid "Site name"
-msgstr "Aviso de sitio"
+msgstr "Nombre del sitio"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Nueva dirección de correo para postear a %s"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Vistas locales"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
-msgstr ""
+msgstr "Zona horaria predeterminada"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
-msgstr ""
+msgstr "Zona horaria predeterminada del sitio; generalmente UTC."
 
-#: actions/siteadminpanel.php:295
-#, fuzzy
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
-msgstr "Lenguaje de preferencia"
-
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Recuperar"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
+msgstr "Idioma predeterminado del sitio"
 
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Aceptar"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Privacidad"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Invitar"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Bloqueado"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
-msgstr ""
+msgstr "Capturas"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
-msgstr ""
+msgstr "En un trabajo programado"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
-msgstr ""
+msgstr "Capturas de datos"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
-msgstr ""
+msgstr "Frecuencia"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: 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:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
-msgstr ""
+msgstr "Límites"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
-msgstr ""
+msgstr "Límite de texto"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
-msgstr ""
+msgstr "Cantidad máxima de caracteres para los mensajes."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
-msgstr ""
-
-#: actions/siteadminpanel.php:374
-msgid "How long users must wait (in seconds) to post the same thing again."
-msgstr ""
-
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Configuración de Avatar"
+msgstr ""
+
+#: actions/siteadminpanel.php:322
+msgid "How long users must wait (in seconds) to post the same thing again."
+msgstr "Cuántos segundos es necesario esperar para publicar lo mismo de nuevo."
 
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "Preferencias SMS"
+msgstr "Configuración de SMS"
 
 #: actions/smssettings.php:69
 #, php-format
@@ -3487,9 +3840,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"
@@ -3538,9 +3890,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"
@@ -3561,29 +3912,36 @@ msgid "No code entered"
 msgstr "No ingresó código"
 
 #: actions/subedit.php:70
-#, fuzzy
 msgid "You are not subscribed to that profile."
-msgstr "No estás suscrito a ese perfil."
+msgstr "No te has suscrito a ese perfil."
 
-#: actions/subedit.php:83
-#, fuzzy
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
-msgstr "No se pudo guardar suscripción."
+msgstr "No se ha podido guardar la suscripción."
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "No es usuario local."
+msgid "No such profile."
+msgstr "No existe tal archivo."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
 #, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "No te has suscrito a ese perfil."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Suscrito"
 
 #: actions/subscribers.php:50
-#, fuzzy, php-format
+#, php-format
 msgid "%s subscribers"
-msgstr "Suscriptores %s"
+msgstr "%s suscriptores"
 
 #: actions/subscribers.php:52
 #, fuzzy, php-format
@@ -3636,7 +3994,7 @@ msgstr "Estas son las personas que escuchas sus avisos."
 msgid "These are the people whose notices %s listens to."
 msgstr "Estas son las personas que %s escucha sus avisos."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3646,20 +4004,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
-#, fuzzy, php-format
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
+#, php-format
 msgid "%s is not listening to anyone."
-msgstr "%1$s ahora está escuchando "
+msgstr "%s no está escuchando a nadie."
 
-#: actions/subscriptions.php:194
-#, fuzzy
+#: actions/subscriptions.php:199
 msgid "Jabber"
-msgstr "Jabber "
+msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Usuarios auto marcados con %s - página %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3686,11 +4048,11 @@ msgid "Tag %s"
 msgstr "%s tag"
 
 #: actions/tagother.php:77 lib/userprofile.php:75
-#, fuzzy
 msgid "User profile"
 msgstr "Perfil de usuario"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3713,9 +4075,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."
@@ -3745,15 +4106,14 @@ msgid "User is not silenced."
 msgstr "El usuario no tiene un perfil."
 
 #: actions/unsubscribe.php:77
-#, fuzzy
 msgid "No profile id in request."
-msgstr "Ningún perfil de Id en solicitud."
+msgstr "No hay id de perfil solicitado."
 
 #: actions/unsubscribe.php:98
 msgid "Unsubscribed"
 msgstr "Desuscrito"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3766,91 +4126,66 @@ msgstr "Usuario"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr ""
+msgstr "Configuración de usuarios en este sitio StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "Límite para la bio inválido: Debe ser numérico."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
-msgstr ""
+msgstr "Texto de bienvenida inválido. La longitud máx. es de 255 caracteres."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr ""
+msgstr "Suscripción predeterminada inválida : '%1$s' no es un usuario"
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Perfil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
-msgstr ""
+msgstr "Límite de la bio"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
-msgstr ""
+msgstr "Longitud máxima de bio de perfil en caracteres."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nuevos usuarios"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
-msgstr ""
+msgstr "Bienvenida a nuevos usuarios"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr ""
+msgstr "Texto de bienvenida para nuevos usuarios (máx. 255 caracteres)."
 
-#: actions/useradminpanel.php:241
-#, fuzzy
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
-msgstr "Todas las suscripciones"
+msgstr "Suscripción predeterminada"
 
-#: actions/useradminpanel.php:242
-#, fuzzy
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
-msgstr ""
-"Suscribirse automáticamente a quien quiera que se suscriba a mí (es mejor "
-"para no-humanos)"
+msgstr "Suscribir automáticamente nuevos usuarios a este usuario."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Invitaciones"
 
-#: actions/useradminpanel.php:256
-#, fuzzy
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
-msgstr "Invitacion(es) enviada(s)"
+msgstr "Invitaciones habilitadas"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sesiones"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizar la suscripción"
@@ -3865,37 +4200,36 @@ msgstr ""
 "avisos de este usuario. Si no pediste suscribirte a los avisos de alguien, "
 "haz clic en \"Cancelar\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licencia"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Aceptar"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
-#, fuzzy
 msgid "Subscribe to this user"
 msgstr "Suscribirse a este usuario"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Rechazar"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Rechazar esta suscripción"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "¡Ninguna petición de autorización!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Suscripción autorizada"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3906,11 +4240,11 @@ msgstr ""
 "Lee de nuevo las instrucciones para saber cómo autorizar la suscripción. Tu "
 "identificador de suscripción es:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Suscripción rechazada"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3921,45 +4255,44 @@ msgstr ""
 "de nuevo las instrucciones para saber cómo rechazar la suscripción "
 "completamente."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "No se puede leer el URL del avatar '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 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 ""
@@ -3971,10 +4304,14 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+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
@@ -3997,15 +4334,12 @@ msgid ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 msgstr ""
-
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status borrado."
+"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 ""
@@ -4032,25 +4366,16 @@ msgstr ""
 
 #: actions/version.php:189
 msgid "Plugins"
-msgstr ""
-
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Apodo"
+msgstr "Complementos"
 
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Sesiones"
 
 #: actions/version.php:197
 msgid "Author(s)"
-msgstr ""
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Descripción"
+msgstr "Autor(es)"
 
 #: classes/File.php:144
 #, php-format
@@ -4075,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
@@ -4090,9 +4414,8 @@ msgid "Could not create login token for %s"
 msgstr "No se pudo crear favorito."
 
 #: classes/Message.php:45
-#, fuzzy
 msgid "You are banned from sending direct messages."
-msgstr "Error al enviar mensaje directo."
+msgstr "Se te ha inhabilitado para enviar mensajes directos."
 
 #: classes/Message.php:61
 msgid "Could not insert message."
@@ -4102,29 +4425,27 @@ msgstr "No se pudo insertar mensaje."
 msgid "Could not update message with new URI."
 msgstr "No se pudo actualizar mensaje con nuevo URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Error de la BD al insertar la etiqueta clave: %s"
 
-#: classes/Notice.php:225
-#, fuzzy
+#: classes/Notice.php:222
 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:229
-#, fuzzy
+#: classes/Notice.php:226
 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:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Demasiados avisos demasiado rápido; para y publicar nuevamente en unos "
 "minutos."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4133,34 +4454,60 @@ msgstr ""
 "Demasiados avisos demasiado rápido; para y publicar nuevamente en unos "
 "minutos."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Tienes prohibido publicar avisos en este sitio."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Hubo un problema al guardar el aviso."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Error de BD al insertar respuesta: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Hubo un problema al guardar el aviso."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Se te ha prohibido la suscripción."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "El usuario te ha bloqueado."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "¡No estás suscrito!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "No se pudo eliminar la suscripción."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "No se pudo eliminar la suscripción."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Bienvenido a %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "No se pudo crear grupo."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "No se pudo configurar miembros de grupo."
@@ -4194,137 +4541,132 @@ 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"
 msgstr "Página sin título"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navegación de sitio primario"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Inicio"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Perfil personal y línea de tiempo de amigos"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Cuenta"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Cambia tu correo electrónico, avatar, contraseña, perfil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Conectarse"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Conectar a los servicios"
 
-#: lib/action.php:442
-#, fuzzy
+#: lib/action.php:448
 msgid "Change site configuration"
-msgstr "Navegación de sitio primario"
+msgstr "Cambiar la configuración del sitio"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitar"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Invita a amigos y colegas a unirse a %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Salir"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Salir de sitio"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Crear una cuenta"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Ingresar a sitio"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Ayuda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Ayúdame!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Buscar"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Buscar personas o texto"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Aviso de sitio"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Vistas locales"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Aviso de página"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Navegación de sitio secundario"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Acerca de"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Preguntas Frecuentes"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacidad"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Fuente"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Ponerse en contacto"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Insignia"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licencia de software de StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4333,12 +4675,12 @@ msgstr ""
 "**%%site.name%%** es un servicio de microblogueo de [%%site.broughtby%%**](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** es un servicio de microblogueo."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4349,38 +4691,61 @@ msgstr ""
 "disponible bajo la [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licencia de contenido del sitio"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+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:827
 msgid "All "
 msgstr "Todo"
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "Licencia."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginación"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Después"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Antes"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Hubo problemas con tu clave de sesión."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: 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
@@ -4403,27 +4768,114 @@ msgid "Unable to delete design setting."
 msgstr "¡No se pudo guardar tu configuración de Twitter!"
 
 #: lib/adminpanelaction.php:312
-#, fuzzy
 msgid "Basic site configuration"
-msgstr "Confirmación de correo electrónico"
+msgstr "Configuración básica del sitio"
 
 #: lib/adminpanelaction.php:317
-#, fuzzy
 msgid "Design configuration"
-msgstr "SMS confirmación"
+msgstr "Configuración del diseño"
+
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Configuración de usuario"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Configuración de acceso"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS confirmación"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Configuración de sesiones"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Editar aplicación"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Describir al grupo o tema en %d caracteres"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Describir al grupo o tema"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "La URL de origen"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "El URL de página de inicio o blog del grupo or tema"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organización responsable de esta aplicación"
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "El URL de página de inicio o blog del grupo or tema"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Navegador"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Escritorio"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Tipo de aplicación, de navegador o de escritorio"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Revocar"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
 
 #: lib/attachmentlist.php:265
 msgid "Author"
-msgstr ""
+msgstr "Autor"
 
 #: lib/attachmentlist.php:278
 msgid "Provider"
@@ -4431,18 +4883,17 @@ msgstr "Proveedor"
 
 #: lib/attachmentnoticesection.php:67
 msgid "Notices where this attachment appears"
-msgstr ""
+msgstr "Mensajes donde aparece este adjunto"
 
 #: lib/attachmenttagcloudsection.php:48
 msgid "Tags for this attachment"
-msgstr ""
+msgstr "Etiquetas de este archivo adjunto"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
-#, fuzzy
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
-msgstr "Cambio de contraseña "
+msgstr "El cambio de contraseña ha fallado"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Cambio de contraseña "
@@ -4464,10 +4915,9 @@ msgid "Sorry, this command is not yet implemented."
 msgstr "Disculpa, todavía no se implementa este comando."
 
 #: lib/command.php:88
-#, fuzzy, php-format
+#, php-format
 msgid "Could not find a user with nickname %s"
-msgstr ""
-"No se pudo actualizar el usuario con la dirección de correo confirmada."
+msgstr "No se pudo encontrar a nadie con el nombre de usuario %s"
 
 #: lib/command.php:92
 msgid "It does not make a lot of sense to nudge yourself!"
@@ -4487,9 +4937,8 @@ msgid ""
 msgstr ""
 
 #: lib/command.php:152 lib/command.php:390 lib/command.php:451
-#, fuzzy
 msgid "Notice with that id does not exist"
-msgstr "Ningún perfil con ese ID."
+msgstr "No existe ningún mensaje con ese id"
 
 #: lib/command.php:168 lib/command.php:406 lib/command.php:467
 #: lib/command.php:523
@@ -4598,80 +5047,89 @@ msgstr "Hubo un problema al guardar el aviso."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Especificar el nombre del usuario a suscribir"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "No existe ese usuario."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Suscrito a %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Especificar el nombre del usuario para desuscribirse de"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Desuscrito de %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Todavía no se implementa comando."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificación no activa."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "No se puede desactivar notificación."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificación activada."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "No se puede activar notificación."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Desuscrito de %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "No estás suscrito a nadie."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Ya estás suscrito a estos usuarios:"
 msgstr[1] "Ya estás suscrito a estos usuarios:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Nadie está suscrito a ti."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "No se pudo suscribir otro a ti."
 msgstr[1] "No se pudo suscribir otro a ti."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "No eres miembro de ningún grupo"
 
-#: lib/command.php:714
+#: lib/command.php:755
 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
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4685,6 +5143,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4712,19 +5171,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Ningún archivo de configuración encontrado. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Ir al instalador."
 
@@ -4740,6 +5199,15 @@ msgstr "Actualizaciones por mensajería instantánea"
 msgid "Updates by SMS"
 msgstr "Actualizaciones por sms"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Conectarse"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4773,11 +5241,11 @@ msgstr "Aceptar"
 
 #: 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"
@@ -4927,12 +5395,12 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5143,7 +5611,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "desde"
 
@@ -5263,58 +5731,54 @@ msgid "Do not share my location"
 msgstr "No se pudo guardar tags."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "en"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "en contexto"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Crear"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Responder este aviso."
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Aviso borrado"
@@ -5347,11 +5811,7 @@ msgstr "Error al insertar perfil remoto"
 msgid "Duplicate notice"
 msgstr "Duplicar aviso"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Se te ha prohibido la suscripción."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "No se pudo insertar una nueva suscripción."
 
@@ -5367,19 +5827,19 @@ msgstr "Respuestas"
 msgid "Favorites"
 msgstr "Favoritos"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Bandeja de Entrada"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Mensajes entrantes"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Bandeja de Salida"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Mensajes enviados"
 
@@ -5461,6 +5921,10 @@ msgstr "Responder este aviso."
 msgid "Repeat this notice"
 msgstr "Responder este aviso."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5533,36 +5997,6 @@ msgstr "Personas suscritas a %s"
 msgid "Groups %s is a member of"
 msgstr "%s es miembro de los grupos"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "El usuario te ha bloqueado."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "No se pudo suscribir."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "No se pudo suscribir otro a ti."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "¡No estás suscrito!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "No se pudo eliminar la suscripción."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "No se pudo eliminar la suscripción."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5615,67 +6049,67 @@ msgstr "editar avatar"
 msgid "User actions"
 msgstr "Acciones de usuario"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Editar configuración del perfil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Editar"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Enviar un mensaje directo a este usuario"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Mensaje"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Moderar"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "hace unos segundos"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "hace un minuto"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "hace %d minutos"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "hace una hora"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "hace %d horas"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "hace un día"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "hace %d días"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "hace un mes"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "hace %d meses"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "hace un año"
 
@@ -5689,7 +6123,7 @@ msgstr ""
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Mensaje muy largo - máximo 140 caracteres, enviaste %d"
index bd97b86b58f99971914c1d6b4c7891b9e15d8f95..600323e436a605ce96e4bdd3fd93f63103fe3091 100644 (file)
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:13+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:38+0000\n"
 "Last-Translator: Ahmad Sufi Mahmudi\n"
 "Language-Team: Persian\n"
 "MIME-Version: 1.0\n"
@@ -20,9 +20,64 @@ msgstr ""
 "X-Language-Code: fa\n"
 "X-Message-Group: out-statusnet\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); Translate extension (2010-01-16)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "دسترسی"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "تنظیمات دیگر"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "ثبت نام"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "خصوصی"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "فقط دعوت کردن"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "تنها آماده کردن دعوت نامه های ثبت نام."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "مسدود"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "غیر فعال کردن نام نوبسی جدید"
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "ذخیره‌کردن"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "تنظیمات چهره"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -37,25 +92,29 @@ msgstr "چنین صفحه‌ای وجود ندارد"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "چنین کاربری وجود ندارد."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s کاربران مسدود شده، صفحه‌ی %d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -100,7 +159,7 @@ msgstr ""
 "اولین کسی باشید که در [این موضوع](%%%%action.newnotice%%%%?status_textarea=%"
 "s) پیام می‌فرستد."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -113,8 +172,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "شما و دوستان"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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$ و دوستان در %2$"
@@ -124,23 +183,23 @@ msgstr "به روز رسانی از %1$ و دوستان در %2$"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "رابط مورد نظر پیدا نشد."
 
@@ -154,7 +213,7 @@ msgstr "رابط مورد نظر پیدا نشد."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "برای استفاده از این روش باید اطلاعات را به صورت پست بفرستید"
 
@@ -183,8 +242,9 @@ msgstr "نمی‌توان شناس‌نامه را ذخیره کرد."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -302,11 +362,11 @@ msgstr "نمی‌توانید خودتان را دنبال نکنید!"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "باید ۲ شناسه‌ی کاربر یا نام ظاهری وارد کنید."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "نمی‌توان کاربر منبع را تعیین کرد."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "نمی‌توان کاربر هدف را پیدا کرد."
 
@@ -328,7 +388,8 @@ msgstr "این لقب در حال حاضر ثبت شده است. لطفا یکی
 msgid "Not a valid nickname."
 msgstr "لقب نا معتبر."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -340,7 +401,8 @@ msgstr "برگهٔ آغازین یک نشانی معتبر نیست."
 msgid "Full name is too long (max 255 chars)."
 msgstr "نام کامل طولانی است (۲۵۵ حرف در حالت بیشینه(."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "توصیف بسیار زیاد است (حداکثر %d حرف)."
@@ -376,7 +438,7 @@ msgstr "نام و نام مستعار شما نمی تواند یکی باشد .
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "گروه یافت نشد!"
 
@@ -417,6 +479,114 @@ msgstr "%s گروه"
 msgid "groups on %s"
 msgstr "گروه‌ها در %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "اندازه‌ی نادرست"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "مشکلی در دریافت جلسه‌ی شما وجود دارد. لطفا بعدا سعی کنید."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "نام کاربری یا کلمه ی عبور نا معتبر."
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "ارسال غیر قابل انتظار فرم."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "حساب کاربری"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "نام کاربری"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "گذرواژه"
+
+#: actions/apioauthauthorize.php:328
+#, fuzzy
+msgid "Deny"
+msgstr "طرح"
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "همه"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "این روش نیازمند POST یا DELETE است."
@@ -446,17 +616,17 @@ msgstr "وضعیت حذف شد."
 msgid "No status with that ID found."
 msgstr "هیچ وضعیتی با آن شناسه یافت نشد."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "خیلی طولانی است. حداکثر طول مجاز پیام %d حرف است."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "یافت نشد"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "حداکثر طول پیام %d حرف است که شامل ضمیمه نیز می‌باشد"
@@ -470,7 +640,7 @@ msgstr "قالب پشتیبانی نشده."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / دوست داشتنی از %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s به روز رسانی های دوست داشتنی %s / %s"
@@ -481,7 +651,7 @@ msgstr "%s به روز رسانی های دوست داشتنی %s / %s"
 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!"
@@ -497,27 +667,22 @@ msgstr "%$1s / به روز رسانی های شامل %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 به روز رسانی های عموم"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "%s تکرار کرد"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr ""
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "تکرار %s"
@@ -527,7 +692,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"
@@ -588,8 +753,8 @@ msgstr "اصلی"
 msgid "Preview"
 msgstr "پیش‌نمایش"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "حذف"
 
@@ -601,29 +766,6 @@ msgstr "پایین‌گذاری"
 msgid "Crop"
 msgstr "برش"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "مشکلی در دریافت جلسه‌ی شما وجود دارد. لطفا بعدا سعی کنید."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "ارسال غیر قابل انتظار فرم."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "یک مربع از عکس خود را انتخاب کنید تا چهره‌ی شما باشد."
@@ -663,8 +805,9 @@ msgstr ""
 "دنبال کند. همچنین دیگر شما از پیام‌هایی که در آن از شما یاد می‌کند با خبر "
 "نخواهید شد"
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "خیر"
 
@@ -672,13 +815,13 @@ msgstr "خیر"
 msgid "Do not block this user"
 msgstr "کاربر را مسدود نکن"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "کاربر را مسدود کن"
 
@@ -761,7 +904,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "نمی‌توان تصدیق پست الکترونیک را پاک کرد."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "تایید نشانی"
 
 #: actions/confirmaddress.php:159
@@ -778,10 +922,57 @@ msgstr "مکالمه"
 msgid "Notices"
 msgstr "پیام‌ها"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "برای ویرایش گروه باید وارد شوید."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "ابن خبر ذخیره ای ندارد ."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "شما یک عضو این گروه نیستید."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "چنین پیامی وجود ندارد."
+
+#: 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 ""
+"آیا مطمئن هستید که می‌خواهید این کاربر را پاک کنید؟ با این کار تمام اطلاعات "
+"پاک و بدون برگشت خواهند بود."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "این پیام را پاک نکن"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "این پیام را پاک کن"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -812,7 +1003,7 @@ msgstr "آیا اطمینان دارید که می‌خواهید این پیا
 msgid "Do not delete this notice"
 msgstr "این پیام را پاک نکن"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "این پیام را پاک کن"
 
@@ -944,16 +1135,6 @@ msgstr "بازگرداندن طرح‌های پیش‌فرض"
 msgid "Reset back to default"
 msgstr "برگشت به حالت پیش گزیده"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "ذخیره‌کردن"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "ذخیره‌کردن طرح"
@@ -966,10 +1147,85 @@ msgstr "این آگهی یک آگهی برگزیده نیست!"
 msgid "Add to favorites"
 msgstr "افزودن به علاقه‌مندی‌ها"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "چنین سندی وجود ندارد."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "انتخابات دیگر"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "برای ویرایش گروه باید وارد شوید."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "چنین پیامی وجود ندارد."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "از این روش برای ویرایش گروه استفاده کنید."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "نام کامل طولانی است (۲۵۵ حرف در حالت بیشینه(."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "این لقب در حال حاضر ثبت شده است. لطفا یکی دیگر انتخاب کنید."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr ""
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "برگهٔ آغازین یک نشانی معتبر نیست."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "مکان طولانی است (حداکثر ۲۵۵ حرف)"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -998,7 +1254,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:433
 msgid "Could not create aliases."
 msgstr "نمی‌توان نام‌های مستعار را ساخت."
 
@@ -1038,7 +1294,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "انصراف"
 
@@ -1120,7 +1377,7 @@ msgid "Cannot normalize that email address"
 msgstr "نمی‌توان نشانی را قانونی کرد"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "یک آدرس ایمیل معتبر نیست."
 
@@ -1132,7 +1389,7 @@ msgstr "هم اکنون نشانی شما همین است."
 msgid "That email address already belongs to another user."
 msgstr "این نشانی در حال حاضر متعلق به فرد دیگری است."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "نمی‌توان کد تایید را اضافه کرد."
@@ -1193,7 +1450,7 @@ msgstr "این پیام هم اکنون دوست داشتنی شده است."
 msgid "Disfavor favorite"
 msgstr "دوست ندارم"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "آگهی‌های محبوب"
@@ -1339,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
 msgid "Block user from group"
 msgstr "دسترسی کاربر به گروه را مسدود کن"
 
@@ -1431,23 +1688,23 @@ msgstr "اعضای گروه %s، صفحهٔ %d"
 msgid "A list of the users in this group."
 msgstr "یک فهرست از کاربران در این گروه"
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "این کاربر یک مدیر شود"
 
@@ -1626,6 +1883,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "این شناسه‌ی Jabber شما نیست."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "صندوق ورودی %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1705,7 +1967,7 @@ msgstr "پیام خصوصی"
 msgid "Optionally add a personal message to the invitation."
 msgstr "اگر دوست دارید می‌توانید یک پیام به همراه دعوت نامه ارسال کنید."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "فرستادن"
 
@@ -1779,7 +2041,7 @@ msgstr "نام کاربری یا رمز عبور نادرست."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطا در تنظیم کاربر. شما احتمالا اجازه ی این کار را ندارید."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ورود"
@@ -1788,17 +2050,6 @@ msgstr "ورود"
 msgid "Login to site"
 msgstr "ورود به وب‌گاه"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "نام کاربری"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "گذرواژه"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "مرا به یاد بسپار"
@@ -1828,21 +2079,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 کرد."
@@ -1851,6 +2102,30 @@ msgstr "نمی‌توان %s را مدیر گروه %s کرد."
 msgid "No current status"
 msgstr "بدون وضعیت فعلی"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "چنین پیامی وجود ندارد."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "برای ساخت یک گروه، باید وارد شده باشید."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "از این فرم برای ساختن یک گروه جدید استفاده کنید"
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "نمی‌توان نام‌های مستعار را ساخت."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "گروه جدید"
@@ -1963,6 +2238,51 @@ msgstr "فرتادن اژیر"
 msgid "Nudge sent!"
 msgstr "سقلمه فرستاده شد!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "برای ویرایش گروه باید وارد شوید."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "انتخابات دیگر"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "شما یک کاربر این گروه نیستید."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "ابن خبر ذخیره ای ندارد ."
@@ -1980,8 +2300,8 @@ msgstr "نوع محتوا "
 msgid "Only "
 msgstr " فقط"
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "یک قالب دادهٔ پشتیبانی‌شده نیست."
 
@@ -1994,7 +2314,8 @@ msgid "Notice Search"
 msgstr "جست‌وجوی آگهی‌ها"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "تنظیمات دیگر"
 
 #: actions/othersettings.php:71
@@ -2049,6 +2370,11 @@ msgstr "علامت بی اعتبار یا منقضی."
 msgid "Login token expired."
 msgstr "ورود به وب‌گاه"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "فرستاده‌های %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2121,7 +2447,7 @@ msgstr "نمی‌توان گذرواژه جدید را ذخیره کرد."
 msgid "Password saved."
 msgstr "گذرواژه ذخیره شد."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "مسیر ها"
 
@@ -2129,133 +2455,149 @@ msgstr "مسیر ها"
 msgid "Path and server settings for this StatusNet site."
 msgstr "تنظیمات و نشانی محلی این سایت استاتوس‌نتی"
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "شاخه‌ی پوسته‌ها خواندنی نیست: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "شاخه‌ی چهره‌ها نوشتنی نیست: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "شاخه‌ی پس زمینه‌ها نوشتنی نیست: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "پوشه‌ی تنظیمات محلی خواندنی نیست: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "سایت"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "کارگزار"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "مسیر"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "مسیر وب‌گاه"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "نشانی تنظیمات محلی"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "پوسته"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "کارگزار پوسته"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "مسیر پوسته"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "شاخهٔ پوسته"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "چهره‌ها"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "کارگزار نیم‌رخ"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "مسیر نیم‌رخ"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "شاخهٔ نیم‌رخ"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "پس زمینه‌ها"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "کارگذار تصاویر پیش‌زمینه"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "مسیر تصاویر پیش‌زمینه"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "شاخهٔ تصاویر پیش‌زمینه"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "هیچ وقت"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "گاهی اوقات"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "برای همیشه"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "استفاده از SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "کارگزار"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "نشانی ذخیره سازی"
 
@@ -2317,7 +2659,7 @@ msgid "Full name"
 msgstr "نام‌کامل"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "صفحهٔ خانگی"
 
@@ -2340,7 +2682,7 @@ msgstr "شرح‌حال"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "موقعیت"
@@ -2364,7 +2706,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "زبان"
 
@@ -2390,7 +2732,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "منطقه‌ی زمانی انتخاب نشده است."
 
@@ -2403,23 +2745,23 @@ msgstr "کلام بسیار طولانی است( حداکثر ۵۰ کاراکت
 msgid "Invalid tag: \"%s\""
 msgstr "نشان نادرست »%s«"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "نمی‌توان شناسه را ذخیره کرد."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "نمی‌توان نشان را ذخیره کرد."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "تنظیمات ذخیره شد."
 
@@ -2441,36 +2783,36 @@ msgstr "خط زمانی عمومی، صفحه‌ی %d"
 msgid "Public timeline"
 msgstr "خط زمانی عمومی"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "اولین کسی باشید که پیام می‌فرستد!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "چرا [ثبت نام](%%action.register%%) نمی‌کنید و اولین پیام را نمی‌فرستید؟"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2479,7 +2821,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2512,7 +2854,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2652,7 +2994,7 @@ msgstr "با عرض تاسف، کد دعوت نا معتبر است."
 msgid "Registration successful"
 msgstr "ثبت نام با موفقیت انجام شد."
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "ثبت نام"
@@ -2692,7 +3034,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "پست الکترونیکی"
 
@@ -2780,7 +3122,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr ""
 
@@ -2816,7 +3158,7 @@ msgstr "شما نمی توانید آگهی خودتان را تکرار کنی
 msgid "You already repeated that notice."
 msgstr "شما قبلا آن آگهی را تکرار کردید."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr ""
 
@@ -2830,6 +3172,11 @@ msgstr ""
 msgid "Replies to %s"
 msgstr "پاسخ‌های به %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "پاسخ‌های به %s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2873,6 +3220,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "وضعیت حذف شد."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2881,6 +3233,126 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "تنظیمات ظاهری برای این سایت."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr ""
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "برای ترک یک گروه، شما باید وارد شده باشید."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "ابن خبر ذخیره ای ندارد ."
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "نام کاربری"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "صفحه بندى"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr ""
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "آمار"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "مؤلف"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "آیا اطمینان دارید که می‌خواهید این پیام را پاک کنید؟"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "دوست داشتنی های %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "ناتوان در بازیابی آگهی های محبوب."
@@ -2930,17 +3402,22 @@ msgstr "این یک راه است برای به اشتراک گذاشتن آنچ
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "اعضای گروه %s، صفحهٔ %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr ""
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -2986,10 +3463,6 @@ msgstr "هیچ"
 msgid "All members"
 msgstr "همه ی اعضا"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "آمار"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "ساخته شد"
@@ -3044,6 +3517,11 @@ msgstr ""
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s کاربران مسدود شده، صفحه‌ی %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3069,12 +3547,12 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "این خط‌زمانی %s و دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3082,7 +3560,7 @@ msgstr ""
 "اخیرا چیز جالب توجه ای دیده اید؟ شما تا کنون آگهی ارسال نکرده اید، الان می "
 "تواند زمان خوبی برای شروع باشد :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, fuzzy, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3091,7 +3569,7 @@ msgstr ""
 "اولین کسی باشید که در [این موضوع](%%%%action.newnotice%%%%?status_textarea=%"
 "s) پیام می‌فرستد."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3100,7 +3578,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3108,7 +3586,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr ""
@@ -3125,198 +3603,146 @@ msgstr "کاربر قبلا ساکت شده است."
 msgid "Basic settings for this StatusNet site."
 msgstr "تنظیمات پایه ای برای این سایت StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "نام سایت باید طولی غیر صفر داشته باشد."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "شما باید یک آدرس ایمیل قابل قبول برای ارتباط داشته باشید"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "نام وب‌گاه"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "نام وب‌گاه شما، مانند «میکروبلاگ شرکت شما»"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "أورده شده به وسیله ی"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr ""
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "محلی"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "منطقه ی زمانی پیش فرض"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "منظقه ی زمانی پیش فرض برای سایت؛ معمولا UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "زبان پیش فرض سایت"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "کارگزار"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "دسترسی"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "خصوصی"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "فقط دعوت کردن"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "تنها آماده کردن دعوت نامه های ثبت نام."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "مسدود"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "غیر فعال کردن نام نوبسی جدید"
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "محدودیت ها"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "محدودیت متن"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "بیشینهٔ تعداد حروف برای آگهی‌ها"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "چه مدت کاربران باید منتظر بمانند ( به ثانیه ) تا همان چیز را مجددا ارسال "
 "کنند."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr ""
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3417,15 +3843,26 @@ msgstr "کدی وارد نشد"
 msgid "You are not subscribed to that profile."
 msgstr "شما به این پروفيل متعهد نشدید"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr ""
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
 msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "چنین پرونده‌ای وجود ندارد."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "شما به این پروفيل متعهد نشدید"
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr ""
 
@@ -3485,7 +3922,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3495,19 +3932,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr ""
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "کاربران خود برچسب‌گذاری شده با %s - صفحهٔ %d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3536,7 +3978,8 @@ msgstr ""
 msgid "User profile"
 msgstr "پروفایل کاربر"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3591,7 +4034,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3606,84 +4049,64 @@ msgstr "کاربر"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr ""
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "حداکثر طول یک زندگی نامه(در پروفایل) بر حسب کاراکتر."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr ""
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "خوشامدگویی کاربر جدید"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "پیام خوشامدگویی برای کاربران جدید( حداکثر 255 کاراکتر)"
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr ""
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "دعوت نامه ها"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "دعوت نامه ها فعال شدند"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "خواه به کاربران اجازه ی دعوت کردن کاربران جدید داده شود."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr ""
@@ -3695,84 +4118,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "لیسانس"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "پذیرفتن"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "تصویب این کاریر"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "رد کردن"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr ""
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr ""
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3791,6 +4214,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "از هات داگ خود لذت ببرید!"
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "اعضای گروه %s، صفحهٔ %d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "جستجو برای گروه های بیشتر"
@@ -3817,11 +4245,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "وضعیت حذف شد."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3853,12 +4276,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "نام کاربری"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "شخصی"
@@ -3868,10 +4286,6 @@ msgstr "شخصی"
 msgid "Author(s)"
 msgstr "مؤلف"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr ""
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3919,27 +4333,27 @@ msgstr "پیغام نمی تواند درج گردد"
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "مشکل در ذخیره کردن پیام. بسیار طولانی."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "مشکل در ذخیره کردن پیام. کاربر نا شناخته."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "تعداد خیلی زیاد آگهی و بسیار سریع؛ استراحت کنید و مجددا دقایقی دیگر ارسال "
 "کنید."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -3947,34 +4361,58 @@ msgstr ""
 "تعداد زیاد پیام های دو نسخه ای و بسرعت؛ استراحت کنید و دقایقی دیگر مجددا "
 "ارسال کنید."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "شما از فرستادن پست در این سایت مردود شدید ."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "مشکل در ذخیره کردن آگهی."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr ""
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "مشکل در ذخیره کردن آگهی."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "قبلا تایید شده !"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr ""
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "تایید نشده!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr ""
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr ""
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "خوش امدید به %1$s , @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "نمیتوان گروه را تشکیل داد"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr ""
 
@@ -4015,140 +4453,136 @@ msgstr "%s گروه %s را ترک کرد."
 msgid "Untitled page"
 msgstr "صفحه ی بدون عنوان"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "خانه"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "حساب کاربری"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "آدرس ایمیل، آواتار، کلمه ی عبور، پروفایل خود را تغییر دهید"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "وصل‌شدن"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "متصل شدن به خدمات"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "تغییر پیکربندی سایت"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "دعوت‌کردن"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr " به شما ملحق شوند  %s دوستان و همکاران را دعوت کنید تا در"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "خروج"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "خارج شدن از سایت ."
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "یک حساب کاربری بسازید"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "ورود به وب‌گاه"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "کمک"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "به من کمک کنید!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "جست‌وجو"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "جستجو برای شخص با متن"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "خبر سایت"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "دید محلی"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "خبر صفحه"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "دربارهٔ"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "سوال‌های رایج"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "خصوصی"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "منبع"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "تماس"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet مجوز نرم افزار"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4156,32 +4590,54 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "مجوز محتویات سایت"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "همه "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "مجوز."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "صفحه بندى"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "بعد از"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "قبل از"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4213,10 +4669,101 @@ msgstr "پیکره بندی اصلی سایت"
 msgid "Design configuration"
 msgstr ""
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "پیکره بندی اصلی سایت"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "پیکره بندی اصلی سایت"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr ""
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "پیکره بندی اصلی سایت"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr ""
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr ""
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "منبع"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "حذف"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "ضمائم"
@@ -4237,12 +4784,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "تغییر گذرواژه"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "تغییر گذرواژه"
@@ -4398,77 +4945,87 @@ msgstr "خطا هنگام ذخیره ی آگهی"
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "چنین کاربری وجود ندارد."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "دستور هنوز اجرا نشده"
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "ناتوان در خاموش کردن آگاه سازی."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "آگاه سازی فعال است."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "ناتوان در روشن کردن آگاه سازی."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "فرمان ورود از کار افتاده است"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "مشترک‌ها"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "شما توسط هیچ کس تصویب نشده اید ."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "هم اکنون شما این کاربران را دنبال می‌کنید: "
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "هیچکس شما را تایید نکرده ."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "هیچکس شما را تایید نکرده ."
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "شما در هیچ گروهی عضو نیستید ."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "شما یک عضو این گروه نیستید."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4482,6 +5039,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4509,19 +5067,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr ""
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "شما ممکن است بخواهید نصاب را اجرا کنید تا این را تعمیر کند."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "برو به نصاب."
 
@@ -4537,6 +5095,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr "به روز رسانی با پیامک"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "وصل‌شدن"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "خطای پایگاه داده"
@@ -4720,12 +5287,12 @@ msgstr "مگابایت"
 msgid "kB"
 msgstr "کیلوبایت"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -4926,7 +5493,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "از"
 
@@ -5045,57 +5612,53 @@ msgid "Do not share my location"
 msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "در"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "در زمینه"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "تکرار از"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "به این آگهی جواب دهید"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "جواب دادن"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "آگهی تکرار شد"
 
@@ -5127,11 +5690,7 @@ msgstr ""
 msgid "Duplicate notice"
 msgstr ""
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr ""
 
@@ -5147,19 +5706,19 @@ msgstr "پاسخ ها"
 msgid "Favorites"
 msgstr "چیزهای مورد علاقه"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "صندوق دریافتی"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "پیام های وارد شونده ی شما"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "صندوق خروجی"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "پیام های فرستاده شده به وسیله ی شما"
 
@@ -5237,6 +5796,10 @@ msgstr "به این آگهی جواب دهید"
 msgid "Repeat this notice"
 msgstr ""
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5304,34 +5867,6 @@ msgstr ""
 msgid "Groups %s is a member of"
 msgstr "هست عضو %s گروه"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "قبلا تایید شده !"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "تایید نشده!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr ""
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr ""
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5382,67 +5917,67 @@ msgstr "ویرایش اواتور"
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "ویرایش تنظیمات پروفيل"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "ویرایش"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "پیام مستقیم به این کاربر بفرستید"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "پیام"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "چند ثانیه پیش"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "حدود یک دقیقه پیش"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "حدود %d دقیقه پیش"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "حدود یک ساعت پیش"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "حدود %d ساعت پیش"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "حدود یک روز پیش"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "حدود %d روز پیش"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "حدود یک ماه پیش"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "حدود %d ماه پیش"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "حدود یک سال پیش"
 
@@ -5456,7 +5991,7 @@ msgstr "%s یک رنگ صحیح نیست!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s یک رنگ صحیح نیست! از ۳ یا ۶ حرف مبنای شانزده استفاده کنید"
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index e54b94b7189e45d70123d0670e1c6ce01825a059..b92edf1118a6564b52ed30f1eb8cb5bbb332b8cb 100644 (file)
@@ -10,17 +10,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:10+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:33+0000\n"
 "Language-Team: Finnish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Hyväksy"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Profiilikuva-asetukset"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Rekisteröidy"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Yksityisyys"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "Kutsu"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Estä"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Tallenna"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Profiilikuva-asetukset"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +94,29 @@ msgstr "Sivua ei ole."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Käyttäjää ei ole."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s ja kaverit, sivu %d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -100,7 +163,7 @@ msgstr ""
 "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
 "newnotice%%%%?status_textarea=%s)!"
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -111,8 +174,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Sinä ja kaverit"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!"
@@ -122,23 +185,23 @@ msgstr "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "API-metodia ei löytynyt!"
@@ -153,7 +216,7 @@ msgstr "API-metodia ei löytynyt!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Tämä metodi edellyttää POST sanoman."
 
@@ -184,8 +247,9 @@ msgstr "Ei voitu tallentaa profiilia."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -306,12 +370,12 @@ msgstr "Et voi lopettaa itsesi tilausta!"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Kaksi käyttäjätunnusta tai nimeä täytyy antaa."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Julkista päivitysvirtaa ei saatu."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Ei löytynyt yhtään päivitystä."
@@ -336,7 +400,8 @@ msgstr "Tunnus on jo käytössä. Yritä toista tunnusta."
 msgid "Not a valid nickname."
 msgstr "Tuo ei ole kelvollinen tunnus."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -348,7 +413,8 @@ msgstr "Kotisivun verkko-osoite ei ole toimiva."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Koko nimi on liian pitkä (max 255 merkkiä)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "kuvaus on liian pitkä (max 140 merkkiä)."
@@ -384,7 +450,7 @@ msgstr "Alias ei voi olla sama kuin ryhmätunnus."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Ryhmää ei löytynyt!"
 
@@ -425,6 +491,118 @@ msgstr "Käyttäjän %s ryhmät"
 msgid "groups on %s"
 msgstr "Ryhmän toiminnot"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Koko ei kelpaa."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Istuntosi avaimen kanssa oli ongelmia. Olisitko ystävällinen ja kokeilisit "
+"uudelleen."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Käyttäjätunnus tai salasana ei kelpaa."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Virhe tapahtui käyttäjän asettamisessa."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Tietokantavirhe tallennettaessa risutagiä: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Odottamaton lomakkeen lähetys."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Käyttäjätili"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Tunnus"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Salasana"
+
+#: actions/apioauthauthorize.php:328
+#, fuzzy
+msgid "Deny"
+msgstr "Ulkoasu"
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Kaikki"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Tämä metodi edellyttää joko POST tai DELETE sanoman."
@@ -456,17 +634,17 @@ msgstr "Päivitys poistettu."
 msgid "No status with that ID found."
 msgstr "Käyttäjätunnukselle ei löytynyt statusviestiä."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Päivitys on liian pitkä. Maksimipituus on %d merkkiä."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Ei löytynyt"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Maksimikoko päivitykselle on %d merkkiä, mukaan lukien URL-osoite."
@@ -480,7 +658,7 @@ msgstr "Formaattia ei ole tuettu."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Käyttäjän %s suosikit"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr " Palvelun %s päivitykset, jotka %s / %s on merkinnyt suosikikseen."
@@ -491,7 +669,7 @@ msgstr " Palvelun %s päivitykset, jotka %s / %s on merkinnyt suosikikseen."
 msgid "%s timeline"
 msgstr "%s aikajana"
 
-#: 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!"
@@ -508,27 +686,22 @@ msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr ""
 "%1$s -päivitykset, jotka on vastauksia käyttäjän %2$s / %3$s päivityksiin."
 
-#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
+#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
 #, php-format
 msgid "%s public timeline"
 msgstr "%s julkinen aikajana"
 
-#: 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 päivitykset kaikilta!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Vastaukset käyttäjälle %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Vastaukset käyttäjälle %s"
@@ -538,7 +711,7 @@ msgstr "Vastaukset käyttäjälle %s"
 msgid "Notices tagged with %s"
 msgstr "Päivitykset joilla on tagi %s"
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!"
@@ -598,8 +771,8 @@ msgstr "Alkuperäinen"
 msgid "Preview"
 msgstr "Esikatselu"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Poista"
 
@@ -611,31 +784,6 @@ msgstr "Lataa"
 msgid "Crop"
 msgstr "Rajaa"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Istuntosi avaimen kanssa oli ongelmia. Olisitko ystävällinen ja kokeilisit "
-"uudelleen."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Odottamaton lomakkeen lähetys."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Valitse neliön muotoinen alue kuvasta profiilikuvaksi"
@@ -672,8 +820,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Ei"
 
@@ -681,13 +830,13 @@ msgstr "Ei"
 msgid "Do not block this user"
 msgstr "Älä estä tätä käyttäjää"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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ä"
 
@@ -771,7 +920,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Ei voitu poistaa sähköpostivahvistusta."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Vahvista osoite"
 
 #: actions/confirmaddress.php:159
@@ -788,10 +938,55 @@ msgstr "Keskustelu"
 msgid "Notices"
 msgstr "Päivitykset"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr ""
+"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Päivitykselle ei ole profiilia"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Sinä et kuulu tähän ryhmään."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Istuntoavaimesi kanssa oli ongelma."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Päivitystä ei ole."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Älä poista tätä päivitystä"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Poista tämä päivitys"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -822,7 +1017,7 @@ msgstr "Oletko varma että haluat poistaa tämän päivityksen?"
 msgid "Do not delete this notice"
 msgstr "Älä poista tätä päivitystä"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Poista tämä päivitys"
 
@@ -959,16 +1154,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Tallenna"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -981,10 +1166,88 @@ msgstr "Tämä päivitys ei ole suosikki!"
 msgid "Add to favorites"
 msgstr "Lisää suosikkeihin"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Dokumenttia ei ole."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Muita asetuksia"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr ""
+"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Päivitystä ei ole."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Käytä tätä lomaketta muokataksesi ryhmää."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Sama kuin ylläoleva salasana. Pakollinen."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Koko nimi on liian pitkä (max 255 merkkiä)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Tunnus on jo käytössä. Yritä toista tunnusta."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Kuvaus"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Kotisivun verkko-osoite ei ole toimiva."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Kotipaikka on liian pitkä (max 255 merkkiä)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Ei voitu päivittää ryhmää."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1013,7 +1276,7 @@ msgstr "kuvaus on liian pitkä (max %d merkkiä)."
 msgid "Could not update group."
 msgstr "Ei voitu päivittää ryhmää."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Ei voitu lisätä aliasta."
 
@@ -1056,7 +1319,8 @@ msgstr ""
 "lisäohjeita. "
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Peruuta"
 
@@ -1139,7 +1403,7 @@ msgid "Cannot normalize that email address"
 msgstr "Ei voida normalisoida sähköpostiosoitetta"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Tuo ei ole kelvollinen sähköpostiosoite."
 
@@ -1151,7 +1415,7 @@ msgstr "Tämä on jo sähköpostiosoitteesi."
 msgid "That email address already belongs to another user."
 msgstr "Tämä sähköpostiosoite kuuluu jo toisella käyttäjällä."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Ei voitu asettaa vahvistuskoodia."
@@ -1213,7 +1477,7 @@ msgstr "Tämä päivitys on jo suosikki!"
 msgid "Disfavor favorite"
 msgstr "Poista suosikeista"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Suosituimmat päivitykset"
@@ -1363,7 +1627,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ä"
 
@@ -1457,23 +1721,23 @@ msgstr "Ryhmän %s jäsenet, sivu %d"
 msgid "A list of the users in this group."
 msgstr "Lista ryhmän käyttäjistä."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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ä"
 
@@ -1649,6 +1913,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Tämä ei ole Jabber ID-tunnuksesi."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Saapuneet viestit käyttäjälle %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1733,7 +2002,7 @@ msgstr "Henkilökohtainen viesti"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Voit myös lisätä oman viestisi kutsuun"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Lähetä"
 
@@ -1833,7 +2102,7 @@ msgstr "Väärä käyttäjätunnus tai salasana"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Sinulla ei ole valtuutusta tähän."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Kirjaudu sisään"
@@ -1842,17 +2111,6 @@ msgstr "Kirjaudu sisään"
 msgid "Login to site"
 msgstr "Kirjaudu sisään"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Tunnus"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Salasana"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Muista minut"
@@ -1885,21 +2143,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"
@@ -1908,6 +2166,30 @@ msgstr "Ei voitu tehdä käyttäjästä %s ylläpitäjää ryhmään %s"
 msgid "No current status"
 msgstr "Ei nykyistä tilatietoa"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Päivitystä ei ole."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Sinun pitää olla kirjautunut sisään jotta voit luoda ryhmän."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Käytä tätä lomaketta luodaksesi ryhmän."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Ei voitu lisätä aliasta."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Uusi ryhmä"
@@ -2018,6 +2300,52 @@ msgstr "Tönäisy lähetetty"
 msgid "Nudge sent!"
 msgstr "Tönäisy lähetetty!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr ""
+"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Muita asetuksia"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Sinä et kuulu tähän ryhmään."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Päivitykselle ei ole profiilia"
@@ -2036,8 +2364,8 @@ msgstr "Yhdistä"
 msgid "Only "
 msgstr "Vain "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Tuo ei ole tuettu tietomuoto."
 
@@ -2050,7 +2378,8 @@ msgid "Notice Search"
 msgstr "Etsi Päivityksistä"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Muita Asetuksia"
 
 #: actions/othersettings.php:71
@@ -2107,6 +2436,11 @@ msgstr "Päivityksen sisältö ei kelpaa"
 msgid "Login token expired."
 msgstr "Kirjaudu sisään"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Käyttäjän %s lähetetyt viestit"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2177,7 +2511,7 @@ msgstr "Uutta salasanaa ei voida tallentaa."
 msgid "Password saved."
 msgstr "Salasana tallennettu."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Polut"
 
@@ -2185,143 +2519,160 @@ msgstr "Polut"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Polut ja palvelin asetukset tälle StatusNet palvelulle."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Pikaviestin ei ole käytettävissä."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Kutsu"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "Palauta"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Palvelun ilmoitus"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Kuva"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Profiilikuva-asetukset"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Kuva päivitetty."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Kuva poistettu."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Taustakuvat"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Taustakuvapalvelin"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Taustakuvan hakemistopolku"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Taustakuvan hakemisto"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Palauta"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Päivitykset"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 #, fuzzy
 msgid "Always"
 msgstr "Aliakset"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Palauta"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Palvelun ilmoitus"
@@ -2387,7 +2738,7 @@ msgid "Full name"
 msgstr "Koko nimi"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Kotisivu"
 
@@ -2410,7 +2761,7 @@ msgstr "Tietoja"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Kotipaikka"
@@ -2436,7 +2787,7 @@ msgstr ""
 "Kuvaa itseäsi henkilötageilla (sanoja joissa voi olla muita kirjaimia kuin "
 "ääkköset, numeroita, -, ., ja _), pilkulla tai välilyönnillä erotettuna"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Kieli"
 
@@ -2464,7 +2815,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "\"Tietoja\" on liian pitkä (max 140 merkkiä)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Aikavyöhykettä ei ole valittu."
 
@@ -2477,24 +2828,24 @@ msgstr "Kieli on liian pitkä (max 50 merkkiä)."
 msgid "Invalid tag: \"%s\""
 msgstr "Virheellinen tagi: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Ei voitu asettaa käyttäjälle automaattista tilausta."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Tageja ei voitu tallentaa."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Ei voitu tallentaa profiilia."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Tageja ei voitu tallentaa."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Asetukset tallennettu."
 
@@ -2516,36 +2867,36 @@ msgstr "Julkinen aikajana, sivu %d"
 msgid "Public timeline"
 msgstr "Julkinen aikajana"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Julkinen syöte (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Julkisen Aikajanan Syöte (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Julkinen syöte (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Ole ensimmäinen joka lähettää päivityksen!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2554,7 +2905,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2591,7 +2942,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Tagipilvi"
 
@@ -2731,7 +3082,7 @@ msgstr "Virheellinen kutsukoodin."
 msgid "Registration successful"
 msgstr "Rekisteröityminen onnistui"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Rekisteröidy"
@@ -2773,7 +3124,7 @@ msgid "Same as password above. Required."
 msgstr "Sama kuin ylläoleva salasana. Pakollinen."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Sähköposti"
 
@@ -2883,7 +3234,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Profiilisi URL-osoite toisessa yhteensopivassa mikroblogauspalvelussa"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Tilaa"
 
@@ -2927,7 +3278,7 @@ msgstr "Et voi rekisteröityä, jos et hyväksy lisenssiehtoja."
 msgid "You already repeated that notice."
 msgstr "Sinä olet jo estänyt tämän käyttäjän."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Luotu"
@@ -2943,6 +3294,11 @@ msgstr "Luotu"
 msgid "Replies to %s"
 msgstr "Vastaukset käyttäjälle %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Viesti käyttäjälle %1$s, %2$s"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2988,6 +3344,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Viesti käyttäjälle %1$s, %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Päivitys poistettu."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2998,6 +3359,126 @@ msgstr "Et voi lähettää viestiä tälle käyttäjälle."
 msgid "User is already sandboxed."
 msgstr "Käyttäjä on asettanut eston sinulle."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Ulkoasuasetukset tälle StatusNet palvelulle."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Profiilikuva-asetukset"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Sinun pitää olla kirjautunut sisään, jotta voit erota ryhmästä."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Päivitykselle ei ole profiilia"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Tunnus"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Sivutus"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Kuvaus"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Tilastot"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Oletko varma että haluat poistaa tämän päivityksen?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Käyttäjän %s suosikkipäivitykset"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Ei saatu haettua suosikkipäivityksiä."
@@ -3047,17 +3528,22 @@ msgstr ""
 msgid "%s group"
 msgstr "Ryhmä %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Ryhmän %s jäsenet, sivu %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Ryhmän profiili"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Huomaa"
 
@@ -3103,10 +3589,6 @@ msgstr "(Tyhjä)"
 msgid "All members"
 msgstr "Kaikki jäsenet"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Tilastot"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Luotu"
@@ -3163,6 +3645,11 @@ msgstr "Päivitys on poistettu."
 msgid " tagged %s"
 msgstr "Päivitykset joilla on tagi %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s ja kaverit, sivu %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3188,20 +3675,20 @@ msgstr "Päivityksien syöte käyttäjälle %s"
 msgid "FOAF for %s"
 msgstr "Käyttäjän %s lähetetyt viestit"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "Tämä on käyttäjän %s aikajana, mutta %s ei ole lähettänyt vielä yhtään "
 "päivitystä."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, fuzzy, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3210,7 +3697,7 @@ msgstr ""
 "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
 "newnotice%%%%?status_textarea=%s)!"
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3219,7 +3706,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3229,7 +3716,7 @@ msgstr ""
 "Käyttäjällä **%s** on käyttäjätili palvelussa %%%%site.name%%%%, joka on "
 "[mikroblogauspalvelu](http://en.wikipedia.org/wiki/Micro-blogging)"
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Vastaukset käyttäjälle %s"
@@ -3248,207 +3735,148 @@ msgstr "Käyttäjä on asettanut eston sinulle."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Tuo ei ole kelvollinen sähköpostiosoite"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
-#, fuzzy
-msgid "Site name"
-msgstr "Palvelun ilmoitus"
-
-#: actions/siteadminpanel.php:257
-msgid "The name of your site, like \"Yourcompany Microblog\""
-msgstr ""
-
-#: actions/siteadminpanel.php:261
-msgid "Brought by"
-msgstr ""
-
-#: actions/siteadminpanel.php:262
-msgid "Text used for credits link in footer of each page"
-msgstr ""
-
-#: actions/siteadminpanel.php:266
-msgid "Brought by URL"
-msgstr ""
-
-#: actions/siteadminpanel.php:267
-msgid "URL used for credits link in footer of each page"
-msgstr ""
-
-#: actions/siteadminpanel.php:271
-#, fuzzy
-msgid "Contact email address for your site"
-msgstr "Uusi sähköpostiosoite päivityksien lähettämiseen palveluun %s"
-
-#: actions/siteadminpanel.php:277
-#, fuzzy
-msgid "Local"
-msgstr "Paikalliset näkymät"
-
-#: actions/siteadminpanel.php:288
-msgid "Default timezone"
-msgstr ""
-
-#: actions/siteadminpanel.php:289
-msgid "Default timezone for the site; usually UTC."
-msgstr ""
-
-#: actions/siteadminpanel.php:295
-#, fuzzy
-msgid "Default site language"
-msgstr "Ensisijainen kieli"
-
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
+#: actions/siteadminpanel.php:242
 #, fuzzy
-msgid "Server"
-msgstr "Palauta"
+msgid "Site name"
+msgstr "Palvelun ilmoitus"
 
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
+#: actions/siteadminpanel.php:243
+msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
+#: actions/siteadminpanel.php:247
+msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
+#: actions/siteadminpanel.php:248
+msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:318
+#: actions/siteadminpanel.php:252
+msgid "Brought by URL"
+msgstr ""
+
+#: actions/siteadminpanel.php:253
+msgid "URL used for credits link in footer of each page"
+msgstr ""
+
+#: actions/siteadminpanel.php:257
 #, fuzzy
-msgid "Access"
-msgstr "Hyväksy"
+msgid "Contact email address for your site"
+msgstr "Uusi sähköpostiosoite päivityksien lähettämiseen palveluun %s"
 
-#: actions/siteadminpanel.php:321
+#: actions/siteadminpanel.php:263
 #, fuzzy
-msgid "Private"
-msgstr "Yksityisyys"
+msgid "Local"
+msgstr "Paikalliset näkymät"
 
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
+#: actions/siteadminpanel.php:274
+msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Kutsu"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
+#: actions/siteadminpanel.php:275
+msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:333
+#: actions/siteadminpanel.php:281
 #, fuzzy
-msgid "Closed"
-msgstr "Estä"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
+msgid "Default site language"
+msgstr "Ensisijainen kieli"
 
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Profiilikuva-asetukset"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3555,15 +3983,26 @@ msgstr "Koodia ei ole syötetty."
 msgid "You are not subscribed to that profile."
 msgstr "Et ole tilannut tämän käyttäjän päivityksiä."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Tilausta ei onnistuttu tallentamaan."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Käyttäjä ei ole rekisteröitynyt tähän palveluun."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Tiedostoa ei ole."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Et ole tilannut tämän käyttäjän päivityksiä."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Tilattu"
 
@@ -3623,7 +4062,7 @@ msgstr "Näiden ihmisten päivityksiä sinä seuraat."
 msgid "These are the people whose notices %s listens to."
 msgstr "Käyttäjä %s seuraa näiden ihmisten päivityksiä."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3633,19 +4072,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s ei seuraa ketään käyttäjää."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Käyttäjät joilla henkilötagi %s - sivu %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3675,7 +4119,8 @@ msgstr "Tagi %s"
 msgid "User profile"
 msgstr "Käyttäjän profiili"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Kuva"
 
@@ -3739,7 +4184,7 @@ msgstr "Ei profiili id:tä kyselyssä."
 msgid "Unsubscribed"
 msgstr "Tilaus lopetettu"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3754,91 +4199,71 @@ msgstr "Käyttäjä"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profiili"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "Kutsu uusia käyttäjiä"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Kaikki tilaukset"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Tilaa automaattisesti kaikki, jotka tilaavat päivitykseni (ei sovi hyvin "
 "ihmiskäyttäjille)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Kutsu(t) lähetettiin"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Kutsu(t) lähetettiin"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Valtuuta tilaus"
@@ -3854,37 +4279,37 @@ msgstr ""
 "päivitykset. Jos et valinnut haluavasi tilata jonkin käyttäjän päivityksiä, "
 "paina \"Peruuta\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Lisenssi"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Hyväksy"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Tilaa tämä käyttäjä"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Hylkää"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Käyttäjän %s tilaukset"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Ei valtuutuspyyntöä!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Tilaus sallittu"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3895,11 +4320,11 @@ msgstr ""
 "saatu. Tarkista sivuston ohjeet miten päivityksen tilaus hyväksytään. "
 "Tilauskoodisi on:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Tilaus hylätty"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3909,37 +4334,37 @@ msgstr ""
 "Päivityksen tilaus on hylätty, mutta callback-osoitetta palveluun ei ole "
 "saatu. Tarkista sivuston ohjeet miten päivityksen tilaus hylätään kokonaan."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Kuvan URL-osoitetta '%s' ei voi avata."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Kuvan '%s' tyyppi on väärä"
@@ -3959,6 +4384,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Ryhmän %s jäsenet, sivu %d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Hae lisää ryhmiä"
@@ -3985,11 +4415,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Päivitys poistettu."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4021,12 +4446,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Tunnus"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Omat"
@@ -4035,10 +4455,6 @@ msgstr "Omat"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Kuvaus"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4089,28 +4505,28 @@ msgstr "Viestin tallennus ei onnistunut."
 msgid "Could not update message with new URI."
 msgstr "Viestin päivittäminen uudella URI-osoitteella ei onnistunut."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Tietokantavirhe tallennettaessa risutagiä: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Ongelma päivityksen tallentamisessa."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Virhe tapahtui päivityksen tallennuksessa. Tuntematon käyttäjä."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka "
 "päivityksien lähettämista muutaman minuutin päästä."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4118,34 +4534,61 @@ msgstr ""
 "Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka "
 "päivityksien lähettämista muutaman minuutin päästä."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Päivityksesi tähän palveluun on estetty."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Ongelma päivityksen tallentamisessa."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Tietokantavirhe tallennettaessa vastausta: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Ongelma päivityksen tallentamisessa."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "Käyttäjä on estänyt sinua tilaamasta päivityksiä."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Käyttäjä on asettanut eston sinulle."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Ei ole tilattu!."
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Ei voitu poistaa tilausta."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Ei voitu poistaa tilausta."
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Viesti käyttäjälle %1$s, %2$s"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Ryhmän luonti ei onnistunut."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Ryhmän jäsenyystietoja ei voitu asettaa."
 
@@ -4187,131 +4630,127 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Nimetön sivu"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Ensisijainen sivunavigointi"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Koti"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Henkilökohtainen profiili ja kavereiden aikajana"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Käyttäjätili"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Muuta sähköpostiosoitettasi, kuvaasi, salasanaasi, profiiliasi"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Yhdistä"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Ei voitu uudelleenohjata palvelimelle: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Ensisijainen sivunavigointi"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Kutsu"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Kutsu kavereita ja työkavereita liittymään palveluun %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Kirjaudu ulos"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Kirjaudu ulos palvelusta"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Luo uusi käyttäjätili"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Kirjaudu sisään palveluun"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Ohjeet"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Auta minua!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Haku"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Hae ihmisiä tai tekstiä"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Palvelun ilmoitus"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Paikalliset näkymät"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Sivuilmoitus"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Toissijainen sivunavigointi"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Tietoa"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "UKK"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Yksityisyys"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Lähdekoodi"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Ota yhteyttä"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "Tönäise"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet-ohjelmiston lisenssi"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4320,12 +4759,12 @@ msgstr ""
 "**%%site.name%%** on mikroblogipalvelu, jonka tarjoaa [%%site.broughtby%%](%%"
 "site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** on mikroblogipalvelu. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4336,34 +4775,56 @@ msgstr ""
 "versio %s, saatavilla lisenssillä [GNU Affero General Public License](http://"
 "www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNet-ohjelmiston lisenssi"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Kaikki "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "lisenssi."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Sivutus"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Myöhemmin"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Aiemmin"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Istuntoavaimesi kanssa oli ongelma."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4400,11 +4861,105 @@ msgstr "Sähköpostiosoitteen vahvistus"
 msgid "Design configuration"
 msgstr "SMS vahvistus"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS vahvistus"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS vahvistus"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS vahvistus"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS vahvistus"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Kuvaile ryhmää tai aihetta 140 merkillä"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Kuvaile ryhmää tai aihetta 140 merkillä"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Lähdekoodi"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "Ryhmän tai aiheen kotisivun tai blogin osoite"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "Ryhmän tai aiheen kotisivun tai blogin osoite"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Poista"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4426,12 +4981,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Salasanan vaihto"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Salasanan vaihto"
@@ -4585,83 +5140,92 @@ msgstr "Ongelma päivityksen tallentamisessa."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Anna käyttäjätunnus, jonka päivitykset haluat tilata"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Käyttäjää ei ole."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Käyttäjän %s päivitykset tilattu"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Anna käyttäjätunnus, jonka päivityksien tilauksen haluat lopettaa"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Käyttäjän %s päivitysten tilaus lopetettu"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Komentoa ei ole vielä toteutettu."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Ilmoitukset pois päältä."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Ilmoituksia ei voi pistää pois päältä."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Ilmoitukset päällä."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Ilmoituksia ei voi pistää päälle."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Käyttäjän %s päivitysten tilaus lopetettu"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Et ole tilannut tämän käyttäjän päivityksiä."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Olet jos tilannut seuraavien käyttäjien päivitykset:"
 msgstr[1] "Olet jos tilannut seuraavien käyttäjien päivitykset:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Toista ei voitu asettaa tilaamaan sinua."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Toista ei voitu asettaa tilaamaan sinua."
 msgstr[1] "Toista ei voitu asettaa tilaamaan sinua."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Sinä et kuulu tähän ryhmään."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Sinä et kuulu tähän ryhmään."
 msgstr[1] "Sinä et kuulu tähän ryhmään."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4675,6 +5239,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4702,20 +5267,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Varmistuskoodia ei ole annettu."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "Kirjaudu sisään palveluun"
@@ -4732,6 +5297,15 @@ msgstr "Päivitykset pikaviestintä käyttäen (IM)"
 msgid "Updates by SMS"
 msgstr "Päivitykset SMS:llä"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Yhdistä"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Tietokantavirhe"
@@ -4921,12 +5495,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5141,7 +5715,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " lähteestä "
@@ -5260,60 +5834,56 @@ msgid "Do not share my location"
 msgstr "Tageja ei voitu tallentaa."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "Ei"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "Ei sisältöä!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Luotu"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Vastaa tähän päivitykseen"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Vastaus"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Päivitys on poistettu."
@@ -5347,12 +5917,7 @@ msgstr "Virhe tapahtui uuden etäprofiilin lisäämisessä"
 msgid "Duplicate notice"
 msgstr "Poista päivitys"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Käyttäjä on estänyt sinua tilaamasta päivityksiä."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Ei voitu lisätä uutta tilausta."
 
@@ -5368,19 +5933,19 @@ msgstr "Vastaukset"
 msgid "Favorites"
 msgstr "Suosikit"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Saapuneet"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Sinulle saapuneet viestit"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Lähetetyt"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Lähettämäsi viestit"
 
@@ -5462,6 +6027,10 @@ msgstr "Vastaa tähän päivitykseen"
 msgid "Repeat this notice"
 msgstr "Vastaa tähän päivitykseen"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5535,36 +6104,6 @@ msgstr "Ihmiset jotka ovat käyttäjän %s tilaajia"
 msgid "Groups %s is a member of"
 msgstr "Ryhmät, joiden jäsen %s on"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Käyttäjä on asettanut eston sinulle."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Ei voitu tilata."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Toista ei voitu asettaa tilaamaan sinua."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Ei ole tilattu!."
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Ei voitu poistaa tilausta."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Ei voitu poistaa tilausta."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5618,68 +6157,68 @@ msgstr "Kuva"
 msgid "User actions"
 msgstr "Käyttäjän toiminnot"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Profiiliasetukset"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Lähetä suora viesti tälle käyttäjälle"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Viesti"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "muutama sekunti sitten"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "noin minuutti sitten"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "noin %d minuuttia sitten"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "noin tunti sitten"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "noin %d tuntia sitten"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "noin päivä sitten"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "noin %d päivää sitten"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "noin kuukausi sitten"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "noin %d kuukautta sitten"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "noin vuosi sitten"
 
@@ -5693,7 +6232,7 @@ msgstr "Kotisivun verkko-osoite ei ole toimiva."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Viesti oli liian pitkä - maksimikoko on 140 merkkiä, lähetit %d"
index 917a67ffcac946669802872ab908274830398389..cf0cc849b24d3455e68fdcef7b94ef33b44c13d5 100644 (file)
@@ -1,8 +1,10 @@
 # Translation of StatusNet to French
 #
+# Author@translatewiki.net: Crochet.david
 # Author@translatewiki.net: IAlex
 # Author@translatewiki.net: Isoph
 # Author@translatewiki.net: Jean-Frédéric
+# Author@translatewiki.net: Julien C
 # Author@translatewiki.net: McDutchie
 # Author@translatewiki.net: Peter17
 # --
@@ -12,17 +14,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:16+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:48+0000\n"
 "Language-Team: French\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Accès"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Paramètres d’accès au site"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Inscription"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privé"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Interdire aux utilisateurs anonymes (non connectés) de voir le site ?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Sur invitation uniquement"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Autoriser l’inscription sur invitation seulement."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Fermé"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Désactiver les nouvelles inscriptions."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Enregistrer"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Sauvegarder les paramètres d’accès"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -37,25 +91,29 @@ msgstr "Page non trouvée"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Utilisateur non trouvé."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s et ses amis, page %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -103,7 +161,7 @@ msgstr ""
 "profil ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?"
 "status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -116,8 +174,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Vous et vos amis"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Statuts de %1$s et ses amis dans %2$s!"
@@ -127,23 +185,23 @@ msgstr "Statuts de %1$s et ses amis dans %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Méthode API non trouvée !"
 
@@ -157,7 +215,7 @@ msgstr "Méthode API non trouvée !"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Ce processus requiert un POST."
 
@@ -188,8 +246,9 @@ msgstr "Impossible d’enregistrer le profil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -307,11 +366,11 @@ msgstr "Vous ne pouvez pas ne plus vous suivre vous-même."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Vous devez fournir 2 identifiants ou pseudos."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Impossible de déterminer l’utilisateur source."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Impossible de trouver l’utilisateur cible."
 
@@ -335,7 +394,8 @@ msgstr "Pseudo déjà utilisé. Essayez-en un autre."
 msgid "Not a valid nickname."
 msgstr "Pseudo invalide."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -347,7 +407,8 @@ msgstr "L’adresse du site personnel n’est pas un URL valide. "
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nom complet trop long (maximum de 255 caractères)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "La description est trop longue (%d caractères maximum)."
@@ -383,7 +444,7 @@ msgstr "L’alias ne peut pas être le même que le pseudo."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Groupe non trouvé !"
 
@@ -402,7 +463,7 @@ msgstr "Impossible de joindre l’utilisateur %1$s au groupe %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
-msgstr "Vous n'êtes pas membre de ce groupe."
+msgstr "Vous nêtes pas membre de ce groupe."
 
 #: actions/apigroupleave.php:124 actions/leavegroup.php:119
 #, php-format
@@ -424,6 +485,122 @@ msgstr "Groupes de %s"
 msgid "groups on %s"
 msgstr "groupes sur %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Paramètre oauth_token non fourni."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Jeton incorrect."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Un problème est survenu avec votre jeton de session. Veuillez essayer à "
+"nouveau."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Pseudo ou mot de passe incorrect !"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+"Erreur de la base de données lors de la suppression de l’utilisateur de "
+"l’application OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+"Erreur de base de donnée en insérant l’utilisateur de l’application OAuth"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Le jeton de connexion %s a été autorisé. Merci de l’échanger contre un jeton "
+"d’accès."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Le jeton de connexion %s a été refusé et révoqué."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Soumission de formulaire inattendue."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+"Une application vous demande l’autorisation de se connecter à votre compte"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Autoriser ou refuser l’accès"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"L’application <strong>%1$s</strong> de <strong>%2$s</strong> voudrait "
+"pouvoir <strong>%3$s</strong> les données de votre compte %4$s. Vous ne "
+"devriez donner l’accès à votre compte %4$s qu’aux tiers à qui vous faites "
+"confiance."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Compte"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Pseudo"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Mot de passe"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Refuser"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Autoriser"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Autoriser ou refuser l’accès à votre compte."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Ce processus requiert un POST ou un DELETE."
@@ -453,17 +630,17 @@ msgstr "Statut supprimé."
 msgid "No status with that ID found."
 msgstr "Aucun statut trouvé avec cet identifiant."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "C’est trop long ! La taille maximale de l’avis est de %d caractères."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Non trouvé"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -479,7 +656,7 @@ msgstr "Format non supporté."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s / Favoris 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 statuts favoris de %2$s / %2$s."
@@ -490,7 +667,7 @@ msgstr "%1$s statuts favoris de %2$s / %2$s."
 msgid "%s timeline"
 msgstr "Activité 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!"
@@ -506,27 +683,22 @@ msgstr "%1$s / Mises à jour mentionnant %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s statuts en réponses aux statuts 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 "Activité publique %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 statuts de tout le monde !"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repris par %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Repris pour %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Reprises de %s"
@@ -536,7 +708,7 @@ msgstr "Reprises de %s"
 msgid "Notices tagged with %s"
 msgstr "Avis marqués avec %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 "Mises à jour marquées avec %1$s dans %2$s !"
@@ -598,8 +770,8 @@ msgstr "Image originale"
 msgid "Preview"
 msgstr "Aperçu"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Supprimer"
 
@@ -611,31 +783,6 @@ msgstr "Transfert"
 msgid "Crop"
 msgstr "Recadrer"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Un problème est survenu avec votre jeton de session. Veuillez essayer à "
-"nouveau."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Soumission de formulaire inattendue."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Sélectionnez une zone de forme carrée pour définir votre avatar"
@@ -670,12 +817,13 @@ msgid ""
 "unsubscribed from you, unable to subscribe to you in the future, and you "
 "will not be notified of any @-replies from them."
 msgstr ""
-"Êtes-vous certain de vouloir bloquer cet utilisateur ? Après cela, il ne "
-"sera plus abonné à votre compte, ne pourra plus s’y abonner de nouveau, et "
-"vous ne serez pas informé des @-réponses de sa part."
+"Voulez-vous vraiment bloquer cet utilisateur ? Après cela, il ne sera plus "
+"abonné à votre compte, ne pourra plus s’y abonner de nouveau, et vous ne "
+"serez pas informé des @-réponses de sa part."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Non"
 
@@ -683,13 +831,13 @@ msgstr "Non"
 msgid "Do not block this user"
 msgstr "Ne pas bloquer cet utilisateur"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -772,7 +920,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Impossible de supprimer le courriel de confirmation."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Confirmer l’adresse"
 
 #: actions/confirmaddress.php:159
@@ -789,10 +937,51 @@ msgstr "Conversation"
 msgid "Notices"
 msgstr "Avis"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Vous devez être connecté pour supprimer une application."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Application non trouvée."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Vous n’êtes pas le propriétaire de cette application."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Un problème est survenu avec votre jeton de session."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Supprimer l’application"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Voulez-vous vraiment supprimer cette application ? Ceci effacera toutes les "
+"données à son propos de la base de données, y compris toutes les connexions "
+"utilisateur existantes."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Ne pas supprimer cette application"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Supprimer cette application"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -817,13 +1006,13 @@ msgstr "Supprimer cet avis"
 
 #: actions/deletenotice.php:144
 msgid "Are you sure you want to delete this notice?"
-msgstr "Êtes-vous sûr(e) de vouloir supprimer cet avis ?"
+msgstr "Voulez-vous vraiment supprimer cet avis ?"
 
 #: actions/deletenotice.php:145
 msgid "Do not delete this notice"
 msgstr "Ne pas supprimer cet avis"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Supprimer cet avis"
 
@@ -837,15 +1026,15 @@ msgstr "Vous pouvez seulement supprimer les utilisateurs locaux."
 
 #: actions/deleteuser.php:110 actions/deleteuser.php:133
 msgid "Delete user"
-msgstr "Supprimer l'utilsateur"
+msgstr "Supprimer l’utilisateur"
 
 #: actions/deleteuser.php:135
 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 ""
-"Êtes-vous certain de vouloir supprimer cet utilisateur ? Ceci effacera "
-"toutes les données à son propos de la base de données, sans sauvegarde."
+"Voulez-vous vraiment supprimer cet utilisateur ? Ceci effacera toutes les "
+"données à son propos de la base de données, sans sauvegarde."
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
 msgid "Delete this user"
@@ -867,7 +1056,7 @@ msgstr "URL du logo invalide."
 #: actions/designadminpanel.php:279
 #, php-format
 msgid "Theme not available: %s"
-msgstr "Le thème n'est pas disponible : %s"
+msgstr "Le thème nest pas disponible : %s"
 
 #: actions/designadminpanel.php:375
 msgid "Change logo"
@@ -904,7 +1093,7 @@ msgid ""
 "You can upload a background image for the site. The maximum file size is %1"
 "$s."
 msgstr ""
-"Vous pouvez importer une image d'arrière plan pour ce site. La taille "
+"Vous pouvez importer une image darrière plan pour ce site. La taille "
 "maximale du fichier est de %1$s."
 
 #: actions/designadminpanel.php:457 lib/designsettings.php:139
@@ -955,16 +1144,6 @@ msgstr "Restaurer les conceptions par défaut"
 msgid "Reset back to default"
 msgstr "Revenir aux valeurs par défaut"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Enregistrer"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Sauvegarder la conception"
@@ -977,9 +1156,75 @@ msgstr "Cet avis n’est pas un favori !"
 msgid "Add to favorites"
 msgstr "Ajouter aux favoris"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Document non trouvé."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Document « %s » non trouvé."
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Modifier l’application"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Vous devez être connecté pour modifier une application."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Application non trouvée."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Utilisez ce formulaire pour modifier votre application."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Le nom est requis."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Le nom est trop long (maximum de 255 caractères)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Ce nom est déjà utilisé. Essayez-en un autre."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "La description est requise."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "L’URL source est trop longue."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "L’URL source est invalide."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "L’organisation est requise."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "L’organisation est trop longue (maximum de 255 caractères)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "La page d’accueil de l’organisation est requise."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Le rappel (Callback) est trop long."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "L’URL de rappel (Callback) est invalide."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Impossible de mettre à jour l’application."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -1008,7 +1253,7 @@ msgstr "la description est trop longue (%d caractères maximum)."
 msgid "Could not update group."
 msgstr "Impossible de mettre à jour le groupe."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Impossible de créer les alias."
 
@@ -1049,7 +1294,8 @@ msgstr ""
 "réception (et celle de spam !) pour recevoir de nouvelles instructions."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Annuler"
 
@@ -1131,7 +1377,7 @@ msgid "Cannot normalize that email address"
 msgstr "Impossible d’utiliser cette adresse courriel"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Adresse courriel invalide."
 
@@ -1143,7 +1389,7 @@ msgstr "Vous utilisez déjà cette adresse courriel."
 msgid "That email address already belongs to another user."
 msgstr "Cette adresse courriel appartient déjà à un autre utilisateur."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Impossible d’insérer le code de confirmation."
@@ -1204,7 +1450,7 @@ msgstr "Cet avis a déjà été ajouté à vos favoris !"
 msgid "Disfavor favorite"
 msgstr "Retirer ce favori"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Avis populaires"
@@ -1301,7 +1547,7 @@ msgstr "Cet utilisateur vous a empêché de vous inscrire."
 
 #: actions/finishremotesubscribe.php:110
 msgid "You are not authorized."
-msgstr "Vous n'êtes pas autorisé."
+msgstr "Vous nêtes pas autorisé."
 
 #: actions/finishremotesubscribe.php:113
 msgid "Could not convert request token to access token."
@@ -1352,7 +1598,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"
 
@@ -1451,23 +1697,23 @@ msgstr "Membres du groupe %1$s - page %2$d"
 msgid "A list of the users in this group."
 msgstr "Liste des utilisateurs inscrits à ce groupe."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1653,6 +1899,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Ceci n’est pas votre identifiant Jabber."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Boîte de réception de %1$s - page %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1737,7 +1988,7 @@ msgstr "Message personnel"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Ajouter un message personnel à l’invitation (optionnel)."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Envoyer"
 
@@ -1820,7 +2071,7 @@ msgstr "Vous devez ouvrir une session pour quitter un groupe."
 
 #: actions/leavegroup.php:90 lib/command.php:265
 msgid "You are not a member of that group."
-msgstr "Vous n'êtes pas membre de ce groupe."
+msgstr "Vous nêtes pas membre de ce groupe."
 
 #: actions/leavegroup.php:127
 #, php-format
@@ -1841,7 +2092,7 @@ msgstr ""
 "Erreur lors de la mise en place de l’utilisateur. Vous n’y êtes probablement "
 "pas autorisé."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Ouvrir une session"
@@ -1850,17 +2101,6 @@ msgstr "Ouvrir une session"
 msgid "Login to site"
 msgstr "Ouverture de session"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Pseudo"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Mot de passe"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Se souvenir de moi"
@@ -1893,24 +2133,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."
@@ -1919,6 +2159,26 @@ msgstr "Impossible de rendre %1$s administrateur du groupe %2$s."
 msgid "No current status"
 msgstr "Aucun statut actuel"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nouvelle application"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Vous devez être connecté pour enregistrer une application."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Utilisez ce formulaire pour inscrire une nouvelle application."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "L’URL source est requise."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Impossible de créer l’application."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nouveau groupe"
@@ -2033,6 +2293,51 @@ msgstr "Clin d’œil envoyé"
 msgid "Nudge sent!"
 msgstr "Clin d’œil envoyé !"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Vous devez être connecté pour lister vos applications."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Applications OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Applications que vous avez enregistré"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Vous n’avez encore enregistré aucune application."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Applications connectées."
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+"Vous avez autorisé les applications suivantes à accéder à votre compte."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Vous n’êtes pas un utilisateur de cette application."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Impossible d’annuler l’accès de l’application : "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Vous n’avez autorisé aucune application à utiliser votre compte."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Les programmeurs peuvent modifier les paramètres d’enregistrement pour leurs "
+"applications "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "L’avis n’a pas de profil"
@@ -2050,8 +2355,8 @@ msgstr "type de contenu "
 msgid "Only "
 msgstr "Seulement "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Format de données non supporté."
 
@@ -2064,7 +2369,7 @@ msgid "Notice Search"
 msgstr "Recherche d’avis"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Autres paramètres"
 
 #: actions/othersettings.php:71
@@ -2097,23 +2402,28 @@ msgstr "Le service de réduction d’URL est trop long (50 caractères maximum).
 
 #: actions/otp.php:69
 msgid "No user ID specified."
-msgstr "Aucun identifiant d'utilisateur n’a été spécifié."
+msgstr "Aucun identifiant dutilisateur n’a été spécifié."
 
 #: actions/otp.php:83
 msgid "No login token specified."
-msgstr "Aucun jeton d'identification n’a été spécifié."
+msgstr "Aucun jeton didentification n’a été spécifié."
 
 #: actions/otp.php:90
 msgid "No login token requested."
-msgstr "Aucune jeton d'identification requis."
+msgstr "Aucun jeton d’identification n’a été demandé."
 
 #: actions/otp.php:95
 msgid "Invalid login token specified."
-msgstr "Jeton d'identification invalide."
+msgstr "Jeton didentification invalide."
 
 #: actions/otp.php:104
 msgid "Login token expired."
-msgstr "Jeton d'identification périmé."
+msgstr "Jeton d’identification périmé."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Boîte d’envoi de %1$s - page %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2186,7 +2496,7 @@ msgstr "Impossible de sauvegarder le nouveau mot de passe."
 msgid "Password saved."
 msgstr "Mot de passe enregistré."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Chemins"
 
@@ -2194,132 +2504,148 @@ msgstr "Chemins"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Paramètres de chemin et serveur pour ce site StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Dossier des thème non lisible : %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Dossier des avatars non inscriptible : %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Dossier des arrière plans non inscriptible : %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Dossier des paramètres régionaux non lisible : %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Serveur SSL invalide. La longueur maximale est de 255 caractères."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Site"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Serveur"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nom d’hôte du serveur du site."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Chemin"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Chemin du site"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Chemin vers les paramètres régionaux"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Chemin de dossier vers les paramètres régionaux"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Jolies URL"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Utiliser des jolies URL (plus lisibles et faciles à mémoriser) ?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Thème"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Serveur de thèmes"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Chemin des thèmes"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Dossier des thèmes"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatars"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Serveur d’avatar"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Chemin des avatars"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Dossier des avatars"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Arrière plans"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Serveur des arrière plans"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Chemin des arrière plans"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Dossier des arrière plans"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Jamais"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Quelquefois"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Toujours"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Utiliser SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Quand utiliser SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Serveur SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Serveur vers lequel rediriger les requêtes SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Enregistrer les chemins."
 
@@ -2384,7 +2710,7 @@ msgid "Full name"
 msgstr "Nom complet"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Site personnel"
 
@@ -2407,7 +2733,7 @@ msgstr "Bio"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Emplacement"
@@ -2433,7 +2759,7 @@ msgstr ""
 "Marques pour vous-même (lettres, chiffres, -, ., et _), séparées par des "
 "virgules ou des espaces"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Langue"
 
@@ -2461,7 +2787,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "La bio est trop longue (%d caractères maximum)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Aucun fuseau horaire n’a été choisi."
 
@@ -2474,23 +2800,23 @@ msgstr "La langue est trop longue (255 caractères maximum)."
 msgid "Invalid tag: \"%s\""
 msgstr "Marque invalide : « %s »"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Impossible de mettre à jour l’auto-abonnement."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Impossible d’enregistrer les préférences de localisation."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Impossible d’enregistrer le profil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Impossible d’enregistrer les marques."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Préférences enregistrées."
 
@@ -2512,19 +2838,19 @@ msgstr "Flux public - page %d"
 msgid "Public timeline"
 msgstr "Flux public"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fil du flux public (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fil du flux public (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Fil du flux public (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2533,11 +2859,11 @@ msgstr ""
 "Ceci est la chronologie publique de %%site.name%% mais personne n’a encore "
 "rien posté."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Soyez le premier à poster !"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2545,7 +2871,7 @@ msgstr ""
 "Pourquoi ne pas [créer un compte](%%action.register%%) et être le premier à "
 "poster !"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2559,7 +2885,7 @@ msgstr ""
 "vous avec vos amis, famille et collègues ! ([Plus d’informations](%%doc.help%"
 "%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2597,7 +2923,7 @@ msgstr ""
 "Pourquoi ne pas [créer un compte](%%action.register%%) et être le premier à "
 "en poster un !"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Nuage de marques"
 
@@ -2741,7 +3067,7 @@ msgstr "Désolé, code d’invitation invalide."
 msgid "Registration successful"
 msgstr "Compte créé avec succès"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Créer un compte"
@@ -2784,7 +3110,7 @@ msgid "Same as password above. Required."
 msgstr "Identique au mot de passe ci-dessus. Requis."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Courriel"
 
@@ -2893,7 +3219,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL de votre profil sur un autre service de micro-blogging compatible"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "S’abonner"
 
@@ -2930,7 +3256,7 @@ msgstr "Vous ne pouvez pas reprendre votre propre avis."
 msgid "You already repeated that notice."
 msgstr "Vous avez déjà repris cet avis."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Repris"
 
@@ -2944,6 +3270,11 @@ msgstr "Repris !"
 msgid "Replies to %s"
 msgstr "Réponses à %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Réponses à %1$s, page %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2993,6 +3324,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Réponses à %1$s sur %2$s !"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -3002,6 +3337,121 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr "L’utilisateur est déjà dans le bac à sable."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessions"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Paramètres de session pour ce site StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gérer les sessions"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "S’il faut gérer les sessions nous-même."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Déboguage de session"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Activer la sortie de déboguage pour les sessions."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Sauvegarder les paramètres du site"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Vous devez être connecté pour voir une application."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Profil de l’application"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Icône"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nom"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organisation"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Description"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistiques"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Créé par %1$s - accès %2$s par défaut - %3$d utilisateurs"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Actions de l’application"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Réinitialiser la clé et le secret"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Informations sur l’application"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Clé de l’utilisateur"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Secret de l’utilisateur"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL du jeton de requête"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL du jeton d’accès"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Autoriser l’URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Note : Nous utilisons les signatures HMAC-SHA1. Nous n’utilisons pas la "
+"méthode de signature en texte clair."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Voulez-vous vraiment réinitialiser votre clé consommateur et secrète ?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Avis favoris de %1$s, page %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Impossible d’afficher les favoris."
@@ -3059,17 +3509,22 @@ msgstr "C’est un moyen de partager ce que vous aimez."
 msgid "%s group"
 msgstr "Groupe %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Groupe %1$s, page %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Profil du groupe"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Note"
 
@@ -3115,10 +3570,6 @@ msgstr "(aucun)"
 msgid "All members"
 msgstr "Tous les membres"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistiques"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Créé"
@@ -3185,6 +3636,11 @@ msgstr "Avis supprimé."
 msgid " tagged %s"
 msgstr "   marqué %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, page %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3210,13 +3666,13 @@ msgstr "Flux des avis de %s (Atom)"
 msgid "FOAF for %s"
 msgstr "ami d’un ami pour %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "Ceci est la chronologie de %1$s mais %2$s n’a rien publié pour le moment."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3224,7 +3680,7 @@ msgstr ""
 "Avez-vous vu quelque chose d’intéressant récemment ? Vous n’avez pas publié "
 "d’avis pour le moment, vous pourriez commencer maintenant :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3233,7 +3689,7 @@ msgstr ""
 "Vous pouvez essayer de faire un clin d’œil à %1$s ou de [poster quelque "
 "chose à son intention](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3247,7 +3703,7 @@ msgstr ""
 "register%%%%) pour suivre les avis de **%s** et bien plus ! ([En lire plus](%"
 "%%%doc.help%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3258,7 +3714,7 @@ msgstr ""
 "wikipedia.org/wiki/Microblog)  basé sur le logiciel libre [StatusNet](http://"
 "status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Reprises de %s"
@@ -3275,197 +3731,145 @@ msgstr "Cet utilisateur est déjà réduit au silence."
 msgid "Basic settings for this StatusNet site."
 msgstr "Paramètres basiques pour ce site StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Le nom du site ne peut pas être vide."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Vous devez avoir une adresse électronique de contact valide."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Langue « %s » inconnue."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "URL de rapport d’instantanés invalide."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Valeur de lancement d’instantanés invalide."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "La fréquence des instantanés doit être un nombre."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "La limite minimale de texte est de 140 caractères."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "La limite de doublon doit être d’une seconde ou plus."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Général"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nom du site"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Le nom de votre site, comme « Microblog de votre compagnie »"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Apporté par"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Texte utilisé pour le lien de crédits au bas de chaque page"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "Apporté par URL"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL utilisée pour le lien de crédits au bas de chaque page"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Adresse de courriel de contact de votre site"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Local"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Zone horaire par défaut"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Zone horaire par défaut pour ce site ; généralement UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Langue du site par défaut"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Serveur"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nom d’hôte du serveur du site."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Jolies URL"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Utiliser des jolies URL (plus lisibles et mémorable) ?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Accès"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privé"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Interdire aux utilisateurs anonymes (non connectés) de voir le site ?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Sur invitation uniquement"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Rendre l’inscription sur invitation seulement."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Fermé"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Désactiver les nouvelles inscriptions."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Instantanés"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Au hasard lors des requêtes web"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Dans une tâche programée"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Instantanés de données"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Quand envoyer des données statistiques aux serveurs status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Fréquence"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Les instantanés seront envoyés une fois tous les N requêtes"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL de rapport"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Les instantanés seront envoyés à cette URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limites"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Limite de texte"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Nombre maximal de caractères pour les avis."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Limite de doublons"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Combien de temps (en secondes) les utilisateurs doivent attendre pour poster "
 "la même chose de nouveau."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Sauvegarder les paramètres du site"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Paramètres SMS"
@@ -3571,17 +3975,28 @@ msgstr "Aucun code entré"
 
 #: actions/subedit.php:70
 msgid "You are not subscribed to that profile."
-msgstr "Vous n'êtes pas abonné(e) à ce profil."
+msgstr "Vous nêtes pas abonné(e) à ce profil."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Impossible d’enregistrer l’abonnement."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Ceci n’est pas un utilisateur local."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Fichier non trouvé."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Vous n’êtes pas abonné(e) à ce profil."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Abonné"
 
@@ -3645,7 +4060,7 @@ msgstr "Vous suivez les avis de ces personnes."
 msgid "These are the people whose notices %s listens to."
 msgstr "Les avis de ces personnes sont suivis par %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3661,19 +4076,24 @@ msgstr ""
 "êtes un [utilisateur de Twitter](%%action.twittersettings%%), vous pouvez "
 "vous abonner automatiquement aux gens auquels vous êtes déjà abonné là-bas."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s ne suit actuellement personne."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Avis marqués avec %1$s, page %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3702,7 +4122,8 @@ msgstr "Marque %s"
 msgid "User profile"
 msgstr "Profil de l’utilisateur"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Photo"
 
@@ -3762,7 +4183,7 @@ msgstr "Aucune identité de profil dans la requête."
 msgid "Unsubscribed"
 msgstr "Désabonné"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3779,86 +4200,66 @@ msgstr "Utilisateur"
 msgid "User settings for this StatusNet site."
 msgstr "Paramètres des utilisateurs pour ce site StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Limite de bio invalide : doit être numérique."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Texte de bienvenue invalide. La taille maximale est de 255 caractères."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Abonnement par défaut invalide : « %1$s » n’est pas un utilisateur."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Limite de bio"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Longueur maximale de la bio d’un profil en caractères."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nouveaux utilisateurs"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Accueil des nouveaux utilisateurs"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 "Texte de bienvenue pour les nouveaux utilisateurs (maximum 255 caractères)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Abonnements par défaut"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Abonner automatiquement les nouveaux utilisateurs à cet utilisateur."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Invitations"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Invitations activées"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 "S’il faut autoriser les utilisateurs à inviter de nouveaux utilisateurs."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessions"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Gérer les sessions"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "S’il faut gérer les sessions nous-même."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Déboguage de session"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Activer la sortie de déboguage pour les sessions."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autoriser l’abonnement"
@@ -3873,36 +4274,36 @@ msgstr ""
 "abonner aux avis de cet utilisateur. Si vous n’avez pas demandé à vous "
 "abonner aux avis de quelqu’un, cliquez « Rejeter »."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licence"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Accepter"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "S’abonner à cet utilisateur"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Refuser"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Rejeter cet abonnement"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Pas de requête d’autorisation !"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Abonnement autorisé"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3912,11 +4313,11 @@ msgstr ""
 "Vérifiez les instructions du site pour savoir comment compléter "
 "l’autorisation de l’abonnement. Votre jeton d’abonnement est :"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Abonnement refusé"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3926,38 +4327,38 @@ msgstr ""
 "Vérifiez les instructions du site pour savoir comment refuser pleinement "
 "l’abonnement."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "L’URI de l’auditeur ‘%s’ n’a pas été trouvée ici."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "L’URI à laquelle vous vous êtes abonné(e) ‘%s’ est trop longue."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 "L’URI à laquelle vous vous êtes abonné(e) ‘%s’ est un utilisateur local."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "L’URL du profil ‘%s’ est pour un utilisateur local."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "L’URL de l’avatar ‘%s’ n’est pas valide."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Impossible de lire l’URL de l’avatar « %s »."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Format d’image invalide pour l’URL de l’avatar « %s »."
@@ -3978,6 +4379,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Bon appétit !"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Groupes %1$s, page %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Rechercher pour plus de groupes"
@@ -4008,10 +4414,6 @@ msgstr ""
 "Ce site est propulsé par %1$s, version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. et ses contributeurs."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Contributeurs"
@@ -4053,11 +4455,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Extensions"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Nom"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Version"
 
@@ -4065,10 +4463,6 @@ msgstr "Version"
 msgid "Author(s)"
 msgstr "Auteur(s)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Description"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4089,24 +4483,21 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "Un fichier aussi gros dépasserai votre quota mensuel de %d octets."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Profil du groupe"
+msgstr "L’inscription au groupe a échoué."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Impossible de mettre à jour le groupe."
+msgstr "N’appartient pas au groupe."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Profil du groupe"
+msgstr "La désinscription du groupe a échoué."
 
 #: classes/Login_token.php:76
 #, php-format
 msgid "Could not create login token for %s"
-msgstr "Impossible de créer le jeton d'ouverture de session pour %s"
+msgstr "Impossible de créer le jeton d’identification pour %s"
 
 #: classes/Message.php:45
 msgid "You are banned from sending direct messages."
@@ -4120,27 +4511,27 @@ msgstr "Impossible d’insérer le message."
 msgid "Could not update message with new URI."
 msgstr "Impossible de mettre à jour le message avec un nouvel URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Erreur de base de donnée en insérant la marque (hashtag) : %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problème lors de l’enregistrement de l’avis ; trop long."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Erreur lors de l’enregistrement de l’avis. Utilisateur inconnu."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Trop d’avis, trop vite ! Faites une pause et publiez à nouveau dans quelques "
 "minutes."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4148,36 +4539,59 @@ msgstr ""
 "Trop de messages en double trop vite ! Prenez une pause et publiez à nouveau "
 "dans quelques minutes."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Il vous est interdit de poster des avis sur ce site."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problème lors de l’enregistrement de l’avis."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Erreur de base de donnée en insérant la réponse :%s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problème lors de l’enregistrement de la boîte de réception du groupe."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Il vous avez été interdit de vous abonner."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Déjà abonné !"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Cet utilisateur vous a bloqué."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Pas abonné !"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Impossible de supprimer l’abonnement à soi-même."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Impossible de cesser l’abonnement"
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Bienvenue à %1$s, @%2$s !"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Impossible de créer le groupe."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
-msgstr "Impossible d'établir l’inscription au groupe."
+msgstr "Impossible détablir l’inscription au groupe."
 
 #: lib/accountsettingsaction.php:108
 msgid "Change your profile settings"
@@ -4205,7 +4619,7 @@ msgstr "Autres "
 
 #: lib/accountsettingsaction.php:128
 msgid "Other options"
-msgstr "Autres options "
+msgstr "Autres options"
 
 #: lib/action.php:144
 #, php-format
@@ -4216,128 +4630,124 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr "Page sans nom"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navigation primaire du site"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Accueil"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Profil personnel et flux des amis"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Compte"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Modifier votre courriel, avatar, mot de passe, profil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Connecter"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Se connecter aux services"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Modifier la configuration du site"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Inviter"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Inviter des amis et collègues à vous rejoindre dans %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Fermeture de session"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Fermer la session"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Créer un compte"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Ouvrir une session"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Aide"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "À l’aide !"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Rechercher"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Rechercher des personnes ou du texte"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Notice du site"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Vues locales"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Avis de la page"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Navigation secondaire du site"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "À propos"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "CGU"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Confidentialité"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Source"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Insigne"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licence du logiciel StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4346,12 +4756,12 @@ msgstr ""
 "**%%site.name%%** est un service de microblogging qui vous est proposé par  "
 "[%%site.broughtby%%](%%site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** est un service de micro-blogging."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4362,33 +4772,59 @@ msgstr ""
 "version %s, disponible sous la licence [GNU Affero General Public License] "
 "(http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licence du contenu du site"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Le contenu et les données de %1$s sont privés et confidentiels."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+"Le contenu et les données sont sous le droit d’auteur de %1$s. Tous droits "
+"réservés."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Le contenu et les données sont sous le droit d’auteur du contributeur. Tous "
+"droits réservés."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Tous "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licence."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Pagination"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Après"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Avant"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Un problème est survenu avec votre jeton de session."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4418,10 +4854,102 @@ msgstr "Configuration basique du site"
 msgid "Design configuration"
 msgstr "Configuration de la conception"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Configuration utilisateur"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Configuration d’accès"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Configuration des chemins"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Configuration des sessions"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"La ressource de l’API a besoin de l’accès en lecture et en écriture, mais "
+"vous n’y avez accès qu’en lecture."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"L’essai d’authentification de l’API a échoué ; pseudo = %1$s, proxy = %2$s, "
+"ip = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Modifier votre application"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Icône pour cette application"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Décrivez votre application en %d caractères"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Décrivez votre application"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL source"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL de la page d’accueil de cette application"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organisation responsable de cette application"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL de la page d’accueil de l’organisation"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL vers laquelle rediriger après l’authentification"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Navigateur"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Bureau"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Type d’application, navigateur ou bureau"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Lecture seule"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Lecture-écriture"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Accès par défaut pour cette application : en lecture seule ou en lecture-"
+"écriture"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Révoquer"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Pièces jointes"
@@ -4442,11 +4970,11 @@ msgstr "Avis sur lesquels cette pièce jointe apparaît."
 msgid "Tags for this attachment"
 msgstr "Marques de cette pièce jointe"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "La modification du mot de passe a échoué"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "La modification du mot de passe n’est pas autorisée"
 
@@ -4478,7 +5006,7 @@ msgstr "Ça n’a pas de sens de se faire un clin d’œil à soi-même !"
 #: lib/command.php:99
 #, php-format
 msgid "Nudge sent to %s"
-msgstr "Coup de code envoyé à %s"
+msgstr "Clin d’œil envoyé à %s"
 
 #: lib/command.php:126
 #, php-format
@@ -4516,7 +5044,7 @@ msgstr "Impossible d’inscrire l’utilisateur %s au groupe %s"
 #: lib/command.php:236
 #, php-format
 msgid "%s joined group %s"
-msgstr "%1$s a rejoint le groupe %2$s"
+msgstr "%s a rejoint le groupe %s"
 
 #: lib/command.php:275
 #, php-format
@@ -4526,7 +5054,7 @@ msgstr "Impossible de retirer l’utilisateur %s du groupe %s"
 #: lib/command.php:280
 #, php-format
 msgid "%s left group %s"
-msgstr "%1$s a quitté le groupe %2$s"
+msgstr "%s a quitté le groupe %s"
 
 #: lib/command.php:309
 #, php-format
@@ -4601,82 +5129,92 @@ msgstr "Problème lors de l’enregistrement de l’avis."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Indiquez le nom de l’utilisateur auquel vous souhaitez vous abonner"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Utilisateur non trouvé."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Abonné à %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Indiquez le nom de l’utilisateur duquel vous souhaitez vous désabonner"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Désabonné de %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Cette commande n’a pas encore été implémentée."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Avertissements désactivés."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Impossible de désactiver les avertissements."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Avertissements activés."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Impossible d’activer les avertissements."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
-msgstr "La commande d'ouverture de session est désactivée"
+msgstr "La commande douverture de session est désactivée"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Ce lien n’est utilisable qu’une seule fois, et est valable uniquement "
 "pendant 2 minutes : %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Désabonné de %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
-msgstr "Vous n'êtes pas abonné(e) à personne."
+msgstr "Vous n’êtes abonné(e) à personne."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Vous êtes abonné à cette personne :"
 msgstr[1] "Vous êtes abonné à ces personnes :"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Personne ne s’est abonné à vous."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Cette personne est abonnée à vous :"
 msgstr[1] "Ces personnes sont abonnées à vous :"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Vous n’êtes membre d’aucun groupe."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Vous êtes membre de ce groupe :"
 msgstr[1] "Vous êtes membre de ces groupes :"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4690,6 +5228,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4755,20 +5294,20 @@ msgstr ""
 "tracks - pas encore implémenté.\n"
 "tracking - pas encore implémenté.\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Aucun fichier de configuration n’a été trouvé. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 "J’ai cherché des fichiers de configuration dans les emplacements suivants : "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Vous pouvez essayer de lancer l’installeur pour régler ce problème."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Aller au programme d’installation"
 
@@ -4784,6 +5323,14 @@ msgstr "Suivi des avis par messagerie instantanée"
 msgid "Updates by SMS"
 msgstr "Suivi des avis par SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Connexions"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Applications autorisées connectées"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Erreur de la base de données"
@@ -4924,7 +5471,7 @@ msgstr "Groupes avec le plus de membres"
 
 #: lib/groupsbypostssection.php:71
 msgid "Groups with most posts"
-msgstr "Groupes avec le plus d'éléments publiés"
+msgstr "Groupes avec le plus déléments publiés"
 
 #: lib/grouptagcloudsection.php:56
 #, php-format
@@ -4973,15 +5520,15 @@ msgstr "Mo"
 msgid "kB"
 msgstr "Ko"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Langue « %s » inconnue."
+msgstr "Source %d inconnue pour la boîte de réception."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5259,7 +5806,7 @@ msgstr ""
 "pour démarrer des conversations avec d’autres utilisateurs. Ceux-ci peuvent "
 "vous envoyer des messages destinés à vous seul(e)."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "de"
 
@@ -5312,7 +5859,7 @@ msgstr "Un dossier temporaire est manquant."
 
 #: lib/mediafile.php:162
 msgid "Failed to write file to disk."
-msgstr "Impossible d'écrire sur le disque."
+msgstr "Impossible décrire sur le disque."
 
 #: lib/mediafile.php:165
 msgid "File upload stopped by extension."
@@ -5378,57 +5925,55 @@ msgid "Do not share my location"
 msgstr "Ne pas partager ma localisation"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Masquer cette info"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Désolé, l’obtention de votre localisation prend plus de temps que prévu. "
+"Veuillez réessayer plus tard."
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u° %2$u' %3$u\" %4$s %5$u° %6$u' %7$u\" %8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "chez"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "dans le contexte"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Repris par"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Répondre à cet avis"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Répondre"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Avis repris"
 
@@ -5460,11 +6005,7 @@ msgstr "Erreur lors de l’insertion du profil distant"
 msgid "Duplicate notice"
 msgstr "Dupliquer l’avis"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Il vous avez été interdit de vous abonner."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Impossible d’insérer un nouvel abonnement."
 
@@ -5480,19 +6021,19 @@ msgstr "Réponses"
 msgid "Favorites"
 msgstr "Favoris"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Boîte de réception"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Vos messages reçus"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Boîte d’envoi"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Vos messages envoyés"
 
@@ -5569,6 +6110,10 @@ msgstr "Reprendre cet avis ?"
 msgid "Repeat this notice"
 msgstr "Reprendre cet avis"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Aucun utilisateur unique défini pour le mode mono-utilisateur."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Bac à sable"
@@ -5636,34 +6181,6 @@ msgstr "Abonnés de %s"
 msgid "Groups %s is a member of"
 msgstr "Groupes de %s"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Déjà abonné !"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Cet utilisateur vous a bloqué."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Impossible de s’abonner."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Impossible d’abonner une autre personne à votre profil."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Pas abonné !"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Impossible de supprimer l’abonnement à soi-même."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Impossible de cesser l’abonnement"
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5714,67 +6231,67 @@ msgstr "Modifier l’avatar"
 msgid "User actions"
 msgstr "Actions de l’utilisateur"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Modifier les paramètres du profil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Modifier"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Envoyer un message à cet utilisateur"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Message"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Modérer"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "il y a quelques secondes"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "il y a 1 minute"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "il y a %d minutes"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "il y a 1 heure"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "il y a %d heures"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "il y a 1 jour"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "il y a %d jours"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "il y a 1 mois"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "il y a %d mois"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "il y a environ 1 an"
 
@@ -5789,7 +6306,7 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 "%s n’est pas une couleur valide ! Utilisez 3 ou 6 caractères hexadécimaux."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 4dc2de67affd2b12c946d7be96e1d781472456ec..b60553d44fd7d2950f42a93a3555efc679bd914a 100644 (file)
@@ -8,18 +8,77 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:19+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:51+0000\n"
 "Language-Team: Irish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
 "4;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Aceptar"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Configuracións de Twitter"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Rexistrar"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Privacidade"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "Invitar"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Bloquear"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Gardar"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Configuracións de Twitter"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -35,25 +94,29 @@ msgstr "Non existe a etiqueta."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Ningún usuario."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s e amigos"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -94,7 +157,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -106,8 +169,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s e amigos"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Actualizacións dende %1$s e amigos en %2$s!"
@@ -117,23 +180,23 @@ msgstr "Actualizacións dende %1$s e amigos en %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Método da API non atopado"
@@ -148,7 +211,7 @@ msgstr "Método da API non atopado"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Este método require un POST."
 
@@ -179,8 +242,9 @@ msgstr "Non se puido gardar o perfil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -305,12 +369,12 @@ msgstr ""
 "Dous identificadores de usuario ou nomes_en_pantalla deben ser "
 "proporcionados."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Non se pudo recuperar a liña de tempo publica."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Non se puido atopar ningún estado"
@@ -333,7 +397,8 @@ msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro."
 msgid "Not a valid nickname."
 msgstr "Non é un alcume válido."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -345,7 +410,8 @@ msgstr "A páxina persoal semella que non é unha URL válida."
 msgid "Full name is too long (max 255 chars)."
 msgstr "O nome completo é demasiado longo (max 255 car)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "O teu Bio é demasiado longo (max 140 car.)."
@@ -381,7 +447,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "Método da API non atopado"
@@ -423,6 +489,116 @@ msgstr ""
 msgid "groups on %s"
 msgstr "Outras opcions"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamaño inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Usuario ou contrasinal inválidos."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Acounteceu un erro configurando o usuario."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Erro ó inserir o hashtag na BD: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Envio de formulario non esperada."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "Sobre"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Alcume"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Contrasinal"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Todos"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Este método require un POST ou DELETE."
@@ -455,18 +631,18 @@ msgstr "Avatar actualizado."
 msgid "No status with that ID found."
 msgstr "Non existe ningún estado con esa ID atopada."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 "Iso é demasiado longo. O tamaño máximo para un chío é de 140 caracteres."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Non atopado"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -481,7 +657,7 @@ msgstr "Formato de ficheiro de imaxe non soportado."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Favoritos dende %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s updates favorited by %s / %s."
@@ -492,7 +668,7 @@ msgstr "%s updates favorited by %s / %s."
 msgid "%s timeline"
 msgstr "Liña de tempo 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!"
@@ -508,27 +684,22 @@ msgstr "%1$s / Chíos que respostan a %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "Hai %1$s chíos en resposta a chíos dende %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 "Liña de tempo 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 "%s chíos de calquera!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Replies to %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Replies to %s"
@@ -538,7 +709,7 @@ msgstr "Replies to %s"
 msgid "Notices tagged with %s"
 msgstr "Chíos tagueados con %s"
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Actualizacións dende %1$s en %2$s!"
@@ -600,8 +771,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete"
 msgstr "eliminar"
@@ -614,29 +785,6 @@ msgstr "Subir"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Envio de formulario non esperada."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -677,8 +825,9 @@ msgstr ""
 "do teur perfil, non será capaz de suscribirse a ti nun futuro, e non vas a "
 "ser notificado de ningunha resposta-@ del."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -687,13 +836,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "Bloquear usuario"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
@@ -781,7 +930,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Non se pode eliminar a confirmación de email."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Confirmar enderezo"
 
 #: actions/confirmaddress.php:159
@@ -799,10 +949,55 @@ msgstr "Código de confirmación."
 msgid "Notices"
 msgstr "Chíos"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "O chío non ten perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Non estás suscrito a ese perfil"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Ningún chío."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Non se pode eliminar este chíos."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eliminar chí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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -835,7 +1030,7 @@ msgstr "Estas seguro que queres eliminar este chío?"
 msgid "Do not delete this notice"
 msgstr "Non se pode eliminar este chíos."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete this notice"
 msgstr "Eliminar chío"
@@ -977,16 +1172,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Gardar"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -999,10 +1184,89 @@ msgstr "Este chío non é un favorito!"
 msgid "Add to favorites"
 msgstr "Engadir a favoritos"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Ningún documento."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Outras opcions"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Ningún chío."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr ""
+"Usa este formulario para engadir etiquetas aos teus seguidores ou aos que "
+"sigues."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "A mesma contrasinal que arriba. Requerido."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "O nome completo é demasiado longo (max 255 car)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Subscricións"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "A páxina persoal semella que non é unha URL válida."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "A localización é demasiado longa (max 255 car.)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Non se puido actualizar o usuario."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1033,7 +1297,7 @@ msgstr "O teu Bio é demasiado longo (max 140 car.)."
 msgid "Could not update group."
 msgstr "Non se puido actualizar o usuario."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Non se puido crear o favorito."
@@ -1078,7 +1342,8 @@ msgstr ""
 "a %s á túa lista de contactos?)"
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -1160,7 +1425,7 @@ msgid "Cannot normalize that email address"
 msgstr "Esa dirección de correo non se pode normalizar "
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Non é un enderezo de correo válido."
 
@@ -1172,7 +1437,7 @@ msgstr "Xa é o teu enderezo de correo."
 msgid "That email address already belongs to another user."
 msgstr "Este enderezo de correo xa pertence a outro usuario."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Non se puido inserir o código de confirmación."
@@ -1234,7 +1499,7 @@ msgstr "Este chío xa é un favorito!"
 msgid "Disfavor favorite"
 msgstr "Desactivar favorito"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Chíos populares"
@@ -1388,7 +1653,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"
@@ -1490,23 +1755,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1683,6 +1948,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Esa non é a túa conta Jabber."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Band. Entrada para %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1764,7 +2034,7 @@ msgstr "Mensaxe persoal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Opcionalmente engadir unha mensaxe persoal á invitación."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Enviar"
 
@@ -1866,7 +2136,7 @@ msgstr "Usuario ou contrasinal incorrectos."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Non está autorizado."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inicio de sesión"
@@ -1875,17 +2145,6 @@ msgstr "Inicio de sesión"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Alcume"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Contrasinal"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Lembrarme"
@@ -1916,21 +2175,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."
@@ -1939,6 +2198,29 @@ msgstr "O usuario bloqueoute."
 msgid "No current status"
 msgstr "Sen estado actual"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Ningún chío."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Non se puido crear o favorito."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -2050,6 +2332,51 @@ msgstr "Toque enviado"
 msgid "Nudge sent!"
 msgstr "Toque enviado!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Outras opcions"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Non estás suscrito a ese perfil"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "O chío non ten perfil"
@@ -2068,8 +2395,8 @@ msgstr "Conectar"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Non é un formato de datos soportado."
 
@@ -2082,7 +2409,8 @@ msgid "Notice Search"
 msgstr "Procura de Chíos"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Outros axustes"
 
 #: actions/othersettings.php:71
@@ -2138,6 +2466,11 @@ msgstr "Contido do chío inválido"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Band. Saída para %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2211,7 +2544,7 @@ msgstr "Non se pode gardar a contrasinal."
 msgid "Password saved."
 msgstr "Contrasinal gardada."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2219,142 +2552,159 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Invitar"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "Recuperar"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Novo chío"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Avatar"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Configuracións de Twitter"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Avatar actualizado."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Avatar actualizado."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Recuperar"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Chíos"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Recuperar"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Novo chío"
@@ -2419,7 +2769,7 @@ msgid "Full name"
 msgstr "Nome completo"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Páxina persoal"
 
@@ -2443,7 +2793,7 @@ msgstr "Bio"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Localización"
@@ -2469,7 +2819,7 @@ msgstr ""
 "Etiquetas para o teu usuario (letras, números, -, ., e _), separados por "
 "coma ou espazo"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Linguaxe"
 
@@ -2497,7 +2847,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "O teu Bio é demasiado longo (max 140 car.)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Fuso Horario non seleccionado"
 
@@ -2510,24 +2860,24 @@ msgstr "A Linguaxe é demasiado longa (max 50 car.)."
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta inválida: '%s'"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Non se puido actualizar o usuario para autosuscrición."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Non se puideron gardar as etiquetas."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Non se puido gardar o perfil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Non se puideron gardar as etiquetas."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Configuracións gardadas."
 
@@ -2549,39 +2899,39 @@ msgstr "Liña de tempo pública"
 msgid "Public timeline"
 msgstr "Liña de tempo pública"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Sindicación do Fio Público"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Sindicación do Fio Público"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Sindicación do Fio Público"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2594,7 +2944,7 @@ msgstr ""
 "(http://status.net/). [Únete agora](%%action.register%%) para compartir "
 "chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2632,7 +2982,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2771,7 +3121,7 @@ msgstr "Acounteceu un erro co código de confirmación."
 msgid "Registration successful"
 msgstr "Xa estas rexistrado!!"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Rexistrar"
@@ -2817,7 +3167,7 @@ msgid "Same as password above. Required."
 msgstr "A mesma contrasinal que arriba. Requerido."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Correo Electrónico"
 
@@ -2925,7 +3275,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Enderezo do teu perfil en outro servizo de microblogaxe compatíbel"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subscribir"
 
@@ -2968,7 +3318,7 @@ msgstr "Non podes rexistrarte se non estas de acordo coa licenza."
 msgid "You already repeated that notice."
 msgstr "Xa bloqueaches a este usuario."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Crear"
@@ -2984,6 +3334,11 @@ msgstr "Crear"
 msgid "Replies to %s"
 msgstr "Replies to %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Mensaxe de %1$s en %2$s"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -3025,6 +3380,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Mensaxe de %1$s en %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Avatar actualizado."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -3035,6 +3395,126 @@ msgstr "Non podes enviar mensaxes a este usurio."
 msgid "User is already sandboxed."
 msgstr "O usuario bloqueoute."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Configuracións de Twitter"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "O chío non ten perfil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Alcume"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Invitación(s) enviada(s)."
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "Subscricións"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Estatísticas"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Estas seguro que queres eliminar este chío?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Chíos favoritos de %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Non se pode "
@@ -3084,18 +3564,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Tódalas subscricións"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Non existe o perfil."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 #, fuzzy
 msgid "Note"
 msgstr "Chíos"
@@ -3145,10 +3630,6 @@ msgstr "(nada)"
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Estatísticas"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3213,6 +3694,11 @@ msgstr "Chío publicado"
 msgid " tagged %s"
 msgstr "Chíos tagueados con %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s e amigos"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3238,25 +3724,25 @@ msgstr "Fonte de chíos para %s"
 msgid "FOAF for %s"
 msgstr "Band. Saída para %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3269,7 +3755,7 @@ msgstr ""
 "(http://status.net/). [Únete agora](%%action.register%%) para compartir "
 "chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3281,7 +3767,7 @@ msgstr ""
 "(http://status.net/). [Únete agora](%%action.register%%) para compartir "
 "chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Replies to %s"
@@ -3300,206 +3786,148 @@ msgstr "O usuario bloqueoute."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Non é unha dirección de correo válida"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Novo chío"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Nova dirección de email para posterar en %s"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Localización"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "Linguaxe preferida"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Recuperar"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Aceptar"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Privacidade"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Invitar"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Bloquear"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Configuracións de Twitter"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3607,15 +4035,26 @@ msgstr "Non se inseriu ningún código"
 msgid "You are not subscribed to that profile."
 msgstr "Non estás suscrito a ese perfil"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Non se pode gardar a subscrición."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Non é usuario local."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Ningún chío."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Non estás suscrito a ese perfil"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Suscrito"
 
@@ -3675,7 +4114,7 @@ msgstr "Esa é a xente á que lle estas a escoitar os seus chíos"
 msgid "These are the people whose notices %s listens to."
 msgstr "Esta é a xente á que lle estas a escoitar os chíos %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3685,19 +4124,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s está a escoitar os teus chíos %2$s."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Usuarios auto-etiquetados como %s - páxina %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3728,7 +4172,8 @@ msgstr "Tags"
 msgid "User profile"
 msgstr "O usuario non ten perfil."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3793,7 +4238,7 @@ msgstr "Non hai identificador de perfil na peticion."
 msgid "Unsubscribed"
 msgstr "De-suscribido"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3808,91 +4253,71 @@ msgstr "Usuario"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Perfil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "Invitar a novos usuarios"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Tódalas subscricións"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Suscribirse automáticamente a calquera que se suscriba a min (o mellor para "
 "non humáns)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Invitación(s) enviada(s)."
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Invitación(s) enviada(s)."
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Subscrición de autorización."
@@ -3908,38 +4333,38 @@ msgstr ""
 "user's notices. If you didn't just ask to subscribe to someone's notices, "
 "click \"Cancel\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Aceptar"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "Suscrito a %s"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Rexeitar"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Subscrición de autorización."
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Sen petición de autorización!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Subscrición autorizada"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3950,11 +4375,11 @@ msgstr ""
 "proporcionada. Comproba coas instruccións do sitio para máis detalles en "
 "como autorizar subscricións. O teu token de subscrición é:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Subscrición rexeitada"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3965,37 +4390,37 @@ msgstr ""
 "with the site's instructions for details on how to fully reject the "
 "subscription."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Non se pode ler a URL do avatar de '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Tipo de imaxe incorrecto para '%s'"
@@ -4015,6 +4440,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Tódalas subscricións"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -4041,11 +4471,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Avatar actualizado."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4077,12 +4502,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Alcume"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Persoal"
@@ -4091,11 +4511,6 @@ msgstr "Persoal"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "Subscricións"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4146,28 +4561,28 @@ msgstr "Non se pode inserir unha mensaxe."
 msgid "Could not update message with new URI."
 msgstr "Non se puido actualizar a mensaxe coa nova URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Erro ó inserir o hashtag na BD: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Aconteceu un erro ó gardar o chío."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Aconteceu un erro ó gardar o chío. Usuario descoñecido."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Demasiados chíos en pouco tempo; tomate un respiro e envíao de novo dentro "
 "duns minutos."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4176,35 +4591,62 @@ msgstr ""
 "Demasiados chíos en pouco tempo; tomate un respiro e envíao de novo dentro "
 "duns minutos."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Tes restrinxido o envio de chíos neste sitio."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Aconteceu un erro ó gardar o chío."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Erro ó inserir a contestación na BD: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Aconteceu un erro ó gardar o chío."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "Este usuario non che permite suscribirte a el."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "O usuario bloqueoute."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Non está suscrito!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Non se pode eliminar a subscrición."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Non se pode eliminar a subscrición."
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Mensaxe de %1$s en %2$s"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "Non se puido crear o favorito."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Non se pode gardar a subscrición."
@@ -4248,139 +4690,134 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Persoal"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "Sobre"
-
-#: lib/action.php:435
+#: lib/action.php:441
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "Cambiar contrasinal"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Conectar"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Non se pode redireccionar ao servidor: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Navegación de subscricións"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitar"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, fuzzy, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 "Emprega este formulario para invitar ós teus amigos e colegas a empregar "
 "este servizo."
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "Crear nova conta"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Axuda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "Axuda"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Buscar"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "Novo chío"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "Novo chío"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Navegación de subscricións"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Preguntas frecuentes"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Fonte"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contacto"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4389,12 +4826,12 @@ msgstr ""
 "**%%site.name%%** é un servizo de microbloguexo que che proporciona [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** é un servizo de microbloguexo."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4405,38 +4842,59 @@ msgstr ""
 "%s, dispoñible baixo licenza [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "Atopar no contido dos chíos"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 #, fuzzy
 msgid "All "
 msgstr "Todos"
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "« Despois"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "Antes »"
 
-#: lib/action.php:1167
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4473,11 +4931,105 @@ msgstr "Confirmar correo electrónico"
 msgid "Design configuration"
 msgstr "Confirmación de SMS"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Confirmación de SMS"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Confirmación de SMS"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "Confirmación de SMS"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Confirmación de SMS"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres."
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres."
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Fonte"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Eliminar"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4499,12 +5051,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Contrasinal gardada."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Contrasinal gardada."
@@ -4662,55 +5214,64 @@ msgstr "Aconteceu un erro ó gardar o chío."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Especifica o nome do usuario ó que queres suscribirte"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Ningún usuario."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Suscrito a %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Especifica o nome de usuario ó que queres deixar de seguir"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Desuscribir de %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Comando non implementado."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificación desactivada."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "No se pode desactivar a notificación."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificación habilitada."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Non se pode activar a notificación."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Desuscribir de %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Non estás suscrito a ese perfil"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Xa estas suscrito a estes usuarios:"
@@ -4719,12 +5280,12 @@ msgstr[2] ""
 msgstr[3] ""
 msgstr[4] ""
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Outro usuario non se puido suscribir a ti."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Outro usuario non se puido suscribir a ti."
@@ -4733,12 +5294,12 @@ msgstr[2] ""
 msgstr[3] ""
 msgstr[4] ""
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Non estás suscrito a ese perfil"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Non estás suscrito a ese perfil"
@@ -4747,7 +5308,7 @@ msgstr[2] ""
 msgstr[3] ""
 msgstr[4] ""
 
-#: lib/command.php:728
+#: lib/command.php:769
 #, fuzzy
 msgid ""
 "Commands:\n"
@@ -4762,6 +5323,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4815,20 +5377,20 @@ msgstr ""
 "tracks - non implementado por agora.\n"
 "tracking - non implementado por agora.\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Sen código de confirmación."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4844,6 +5406,15 @@ msgstr "Chíos dende mensaxería instantánea (IM)"
 msgid "Updates by SMS"
 msgstr "Chíos dende SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Conectar"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -5038,12 +5609,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5304,7 +5875,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " dende "
@@ -5426,62 +5997,58 @@ msgid "Do not share my location"
 msgstr "Non se puideron gardar as etiquetas."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "Sen contido!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Crear"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "Non se pode eliminar este chíos."
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "contestar"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Chío publicado"
@@ -5518,12 +6085,7 @@ msgstr "Aconteceu un erro ó inserir o perfil remoto"
 msgid "Duplicate notice"
 msgstr "Eliminar chío"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Este usuario non che permite suscribirte a el."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Non se puido inserir a nova subscrición."
 
@@ -5539,19 +6101,19 @@ msgstr "Respostas"
 msgid "Favorites"
 msgstr "Favoritos"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Band. Entrada"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "As túas mensaxes entrantes"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Band. Saída"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "As túas mensaxes enviadas"
 
@@ -5636,6 +6198,10 @@ msgstr "Non se pode eliminar este chíos."
 msgid "Repeat this notice"
 msgstr "Non se pode eliminar este chíos."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5710,36 +6276,6 @@ msgstr "Suscrito a %s"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "O usuario bloqueoute."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "No se pode suscribir."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Outro usuario non se puido suscribir a ti."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Non está suscrito!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Non se pode eliminar a subscrición."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Non se pode eliminar a subscrición."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5796,70 +6332,70 @@ msgstr "Avatar"
 msgid "User actions"
 msgstr "Outras opcions"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Configuración de perfil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 #, fuzzy
 msgid "Send a direct message to this user"
 msgstr "Non podes enviar mensaxes a este usurio."
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 #, fuzzy
 msgid "Message"
 msgstr "Nova mensaxe"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "fai uns segundos"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "fai un minuto"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "fai %d minutos"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "fai unha hora"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "fai %d horas"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "fai un día"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "fai %d días"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "fai un mes"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "fai %d meses"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "fai un ano"
 
@@ -5873,7 +6409,7 @@ msgstr "%1s non é unha orixe fiable."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Mensaxe demasiado longa - o máximo é 140 caracteres, ti enviaches %d "
index c6e90c550ced17854d55653a179ce26a98e5ee57..424917efb27a7f635f644faef7356058eaabcbab 100644 (file)
@@ -7,17 +7,75 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:22+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:54+0000\n"
 "Language-Team: Hebrew\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "קבל"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "הגדרות"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "הירשם"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "פרטיות"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "אין משתמש כזה."
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "שמור"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "הגדרות"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -33,25 +91,29 @@ msgstr "אין הודעה כזו."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "אין משתמש כזה."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s וחברים"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +154,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +166,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s וחברים"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -115,23 +177,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "קוד האישור לא נמצא."
@@ -146,7 +208,7 @@ msgstr "קוד האישור לא נמצא."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -177,8 +239,9 @@ msgstr "שמירת הפרופיל נכשלה."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -297,12 +360,12 @@ msgstr "עידכון המשתמש נכשל."
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "עידכון המשתמש נכשל."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "עידכון המשתמש נכשל."
@@ -325,7 +388,8 @@ msgstr "כינוי זה כבר תפוס. נסה כינוי אחר."
 msgid "Not a valid nickname."
 msgstr "שם משתמש לא חוקי."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -337,7 +401,8 @@ msgstr "לאתר הבית יש כתובת לא חוקית."
 msgid "Full name is too long (max 255 chars)."
 msgstr "השם המלא ארוך מידי (מותרות 255 אותיות בלבד)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיות)"
@@ -373,7 +438,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "לא נמצא"
@@ -417,6 +482,115 @@ msgstr ""
 msgid "groups on %s"
 msgstr ""
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "גודל לא חוקי."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "שם המשתמש או הסיסמה לא חוקיים"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "שגיאה ביצירת שם המשתמש."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "שגיאת מסד נתונים בהכנסת התגובה: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "הגשת טופס לא צפויה."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "אודות"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "כינוי"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "סיסמה"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -449,17 +623,17 @@ msgstr "התמונה עודכנה."
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "זה ארוך מידי. אורך מירבי להודעה הוא 140 אותיות."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "לא נמצא"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -474,7 +648,7 @@ msgstr "פורמט התמונה אינו נתמך."
 msgid "%1$s / Favorites from %2$s"
 msgstr "הסטטוס של %1$s ב-%2$s "
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "מיקרובלוג מאת %s"
@@ -485,7 +659,7 @@ msgstr "מיקרובלוג מאת %s"
 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!"
@@ -501,27 +675,22 @@ msgstr "הסטטוס של %1$s ב-%2$s "
 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "תגובת עבור %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "תגובת עבור %s"
@@ -531,7 +700,7 @@ msgstr "תגובת עבור %s"
 msgid "Notices tagged with %s"
 msgstr ""
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "מיקרובלוג מאת %s"
@@ -594,8 +763,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete"
 msgstr "מחק"
@@ -608,29 +777,6 @@ msgstr "ההעלה"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "הגשת טופס לא צפויה."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -669,8 +815,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "לא"
 
@@ -679,13 +826,13 @@ msgstr "לא"
 msgid "Do not block this user"
 msgstr "אין משתמש כזה."
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "אין משתמש כזה."
@@ -772,7 +919,8 @@ msgid "Couldn't delete email confirmation."
 msgstr ""
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "אשר כתובת"
 
 #: actions/confirmaddress.php:159
@@ -790,10 +938,54 @@ msgstr "מיקום"
 msgid "Notices"
 msgstr "הודעות"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "עידכון המשתמש נכשל."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "להודעה אין פרופיל"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "לא שלחנו אלינו את הפרופיל הזה"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "אין הודעה כזו."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "אין הודעה כזו."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "תאר את עצמך ואת נושאי העניין שלך ב-140 אותיות"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -823,7 +1015,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "אין הודעה כזו."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr ""
 
@@ -964,16 +1156,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "שמור"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -987,10 +1169,84 @@ msgstr ""
 msgid "Add to favorites"
 msgstr "מועדפים"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "אין מסמך כזה."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "להודעה אין פרופיל"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "אין הודעה כזו."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "השם המלא ארוך מידי (מותרות 255 אותיות בלבד)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "כינוי זה כבר תפוס. נסה כינוי אחר."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "הרשמות"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "לאתר הבית יש כתובת לא חוקית."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "שם המיקום ארוך מידי (מותר עד 255 אותיות)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "עידכון המשתמש נכשל."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1019,7 +1275,7 @@ msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיו
 msgid "Could not update group."
 msgstr "עידכון המשתמש נכשל."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "שמירת מידע התמונה נכשל"
@@ -1061,7 +1317,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "בטל"
 
@@ -1142,7 +1399,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr ""
 
@@ -1154,7 +1411,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "הכנסת קוד האישור נכשלה."
@@ -1213,7 +1470,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1368,7 +1625,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 "אין משתמש כזה."
@@ -1469,23 +1726,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1662,6 +1919,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "זהו לא זיהוי ה-Jabber שלך."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1738,7 +2000,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "שלח"
 
@@ -1814,7 +2076,7 @@ msgstr "שם משתמש או סיסמה לא נכונים."
 msgid "Error setting user. You are probably not authorized."
 msgstr "לא מורשה."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "היכנס"
@@ -1823,17 +2085,6 @@ msgstr "היכנס"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "כינוי"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "סיסמה"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "זכור אותי"
@@ -1861,21 +2112,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 "למשתמש אין פרופיל."
@@ -1884,6 +2135,28 @@ msgstr "למשתמש אין פרופיל."
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "אין הודעה כזו."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "שמירת מידע התמונה נכשל"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1992,6 +2265,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "לא שלחנו אלינו את הפרופיל הזה"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "להודעה אין פרופיל"
@@ -2010,8 +2326,8 @@ msgstr "התחבר"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -2025,7 +2341,7 @@ msgstr ""
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "הגדרות"
 
 #: actions/othersettings.php:71
@@ -2082,6 +2398,11 @@ msgstr "תוכן ההודעה לא חוקי"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2154,7 +2475,7 @@ msgstr "לא ניתן לשמור את הסיסמה"
 msgid "Password saved."
 msgstr "הסיסמה נשמרה."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2162,141 +2483,158 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "עמוד זה אינו זמין בסוג מדיה שאתה יכול לקבל"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "שיחזור"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "הודעה חדשה"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
-msgid "Theme"
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
-msgid "Theme server"
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
-msgid "Theme path"
+#: actions/pathsadminpanel.php:259
+msgid "Theme"
+msgstr ""
+
+#: actions/pathsadminpanel.php:264
+msgid "Theme server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:268
+msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "תמונה"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "הגדרות"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "התמונה עודכנה."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "התמונה עודכנה."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "סמס"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "שיחזור"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "הודעות"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "שיחזור"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "הודעה חדשה"
@@ -2358,7 +2696,7 @@ msgid "Full name"
 msgstr "שם מלא"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "אתר בית"
 
@@ -2382,7 +2720,7 @@ msgstr "ביוגרפיה"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "מיקום"
@@ -2406,7 +2744,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "שפה"
 
@@ -2432,7 +2770,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיות)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2445,25 +2783,25 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "כתובת אתר הבית '%s' אינה חוקית"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "שמירת הפרופיל נכשלה."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "שמירת הפרופיל נכשלה."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "שמירת הפרופיל נכשלה."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "ההגדרות נשמרו."
 
@@ -2485,39 +2823,39 @@ msgstr "קו זמן ציבורי"
 msgid "Public timeline"
 msgstr "קו זמן ציבורי"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "הזנת זרם הציבורי"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "הזנת זרם הציבורי"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "הזנת זרם הציבורי"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2526,7 +2864,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2560,7 +2898,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2697,7 +3035,7 @@ msgstr "שגיאה באישור הקוד."
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "הירשם"
@@ -2737,7 +3075,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr ""
 
@@ -2825,7 +3163,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "כתובת הפרופיל שלך בשרות ביקרובלוג תואם אחר"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "הירשם כמנוי"
 
@@ -2866,7 +3204,7 @@ msgstr "לא ניתן להירשם ללא הסכמה לרשיון"
 msgid "You already repeated that notice."
 msgstr "כבר נכנסת למערכת!"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "צור"
@@ -2882,6 +3220,11 @@ msgstr "צור"
 msgid "Replies to %s"
 msgstr "תגובת עבור %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "תגובת עבור %s"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2923,6 +3266,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "תגובת עבור %s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "התמונה עודכנה."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2933,6 +3281,124 @@ msgstr "לא שלחנו אלינו את הפרופיל הזה"
 msgid "User is already sandboxed."
 msgstr "למשתמש אין פרופיל."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "הגדרות"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "להודעה אין פרופיל"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "כינוי"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "מיקום"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "הרשמות"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "סטטיסטיקה"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s וחברים"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2982,18 +3448,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "כל המנויים"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "אין הודעה כזו."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 #, fuzzy
 msgid "Note"
 msgstr "הודעות"
@@ -3041,10 +3512,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "סטטיסטיקה"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3101,6 +3568,11 @@ msgstr "הודעות"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s וחברים"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3126,25 +3598,25 @@ msgstr "הזנת הודעות של %s"
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3153,7 +3625,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3161,7 +3633,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "תגובת עבור %s"
@@ -3179,202 +3651,145 @@ msgstr "למשתמש אין פרופיל."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr ""
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "הודעה חדשה"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr ""
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "מיקום"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "שיחזור"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "קבל"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "פרטיות"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "אין משתמש כזה."
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "הגדרות"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3475,17 +3890,27 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr "לא שלחנו אלינו את הפרופיל הזה"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "יצירת המנוי נכשלה."
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "×\90×\99×\9f ×\9eשת×\9eש ×\9b×\96×\94."
+msgid "No such profile."
+msgstr "×\90×\99×\9f ×\94×\95×\93×¢×\94 ×\9b×\96×\95."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "לא שלחנו אלינו את הפרופיל הזה"
+
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "הירשם כמנוי"
@@ -3546,7 +3971,7 @@ msgstr "אלה האנשים שלהודעות שלהם אתה מאזין."
 msgid "These are the people whose notices %s listens to."
 msgstr "אלה האנשים ש%s מאזין להודעות שלהם."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3556,20 +3981,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s כעת מאזין להודעות שלך ב-%2$s"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "אין זיהוי Jabber כזה."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "סמס"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "מיקרובלוג מאת %s"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3600,7 +4030,8 @@ msgstr ""
 msgid "User profile"
 msgstr "למשתמש אין פרופיל."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3662,7 +4093,7 @@ msgstr "השרת לא החזיר כתובת פרופיל"
 msgid "Unsubscribed"
 msgstr "בטל מנוי"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3677,88 +4108,68 @@ msgstr "מתשמש"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "פרופיל"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "מחק"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "כל המנויים"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "ההרשמה אושרה"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "מיקום"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "אשר מנוי"
@@ -3773,38 +4184,38 @@ msgstr ""
 "בדוק את הפרטים כדי לוודא שברצונך להירשם כמנוי להודעות משתמש זה. אם אינך רוצה "
 "להירשם, לחץ \"בטל\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "קבל"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "ההרשמה אושרה"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "דחה"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "כל המנויים"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "לא התבקש אישור!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "ההרשמה אושרה"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3814,11 +4225,11 @@ msgstr ""
 "המנוי אושר, אבל לא התקבלה כתובת אליה ניתן לחזור. בדוק את הוראות האתר וחפש "
 "כיצד לאשר מנוי. אסימון המנוי שלך הוא:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "ההרשמה נדחתה"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3828,37 +4239,37 @@ msgstr ""
 "המנוי נדחה, אבל לא התקבלה כתובת לחזרה. בדוק את הוראות האתר וחפש כיצד להשלים "
 "דחיית מנוי."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "לא ניתן לקרוא את ה-URL '%s' של התמונה"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "סוג התמונה של '%s' אינו מתאים"
@@ -3878,6 +4289,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "כל המנויים"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3904,11 +4320,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "התמונה עודכנה."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3940,12 +4351,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "כינוי"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "אישי"
@@ -3954,11 +4360,6 @@ msgstr "אישי"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "הרשמות"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4008,61 +4409,88 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "בעיה בשמירת ההודעה."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "בעיה בשמירת ההודעה."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "בעיה בשמירת ההודעה."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "ש×\92×\99×\90ת ×\9eס×\93 × ×ª×\95× ×\99×\9d ×\91×\94×\9bנסת ×\94ת×\92×\95×\91×\94: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "×\91×¢×\99×\94 ×\91ש×\9e×\99רת ×\94×\94×\95×\93×¢×\94."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+#, fuzzy
+msgid "User has blocked you."
+msgstr "למשתמש אין פרופיל."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "לא מנוי!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "מחיקת המנוי לא הצליחה."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "מחיקת המנוי לא הצליחה."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "שמירת מידע התמונה נכשל"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "יצירת המנוי נכשלה."
@@ -4106,136 +4534,131 @@ msgstr "הסטטוס של %1$s ב-%2$s "
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "בית"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "אודות"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "התחבר"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "נכשלה ההפניה לשרת: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "הרשמות"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "צא"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "צור חשבון חדש"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "עזרה"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "עזרה"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "חיפוש"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "הרשמות"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "אודות"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "רשימת שאלות נפוצות"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "פרטיות"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "מקור"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "צור קשר"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4244,12 +4667,12 @@ msgstr ""
 "**%%site.name%%** הוא שרות ביקרובלוג הניתן על ידי [%%site.broughtby%%](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** הוא שרות ביקרובלוג."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4260,35 +4683,57 @@ msgstr ""
 "s, המופצת תחת רשיון [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)"
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "<< אחרי"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "לפני >>"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4320,11 +4765,105 @@ msgstr "הרשמות"
 msgid "Design configuration"
 msgstr ""
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "הרשמות"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "הרשמות"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "הרשמות"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "הרשמות"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "תאר את עצמך ואת נושאי העניין שלך ב-140 אותיות"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "תאר את עצמך ואת נושאי העניין שלך ב-140 אותיות"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "מקור"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "הכתובת של אתר הבית שלך, בלוג, או פרופיל באתר אחר "
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "הכתובת של אתר הבית שלך, בלוג, או פרופיל באתר אחר "
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "הסר"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4346,12 +4885,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "הסיסמה נשמרה."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "הסיסמה נשמרה."
@@ -4507,83 +5046,93 @@ msgstr "בעיה בשמירת ההודעה."
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "אין משתמש כזה."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "בטל מנוי"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "לא שלחנו אלינו את הפרופיל הזה"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "לא שלחנו אלינו את הפרופיל הזה"
 msgstr[1] "לא שלחנו אלינו את הפרופיל הזה"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "הרשמה מרוחקת"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "הרשמה מרוחקת"
 msgstr[1] "הרשמה מרוחקת"
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "לא שלחנו אלינו את הפרופיל הזה"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "לא שלחנו אלינו את הפרופיל הזה"
 msgstr[1] "לא שלחנו אלינו את הפרופיל הזה"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4597,6 +5146,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4624,20 +5174,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "אין קוד אישור."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4653,6 +5203,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "התחבר"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4844,12 +5403,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5053,7 +5612,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr ""
 
@@ -5173,61 +5732,57 @@ msgid "Do not share my location"
 msgstr "שמירת הפרופיל נכשלה."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "לא"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "אין תוכן!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "צור"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "הגב"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "הודעות"
@@ -5261,11 +5816,7 @@ msgstr "שגיאה בהכנסת פרופיל מרוחק"
 msgid "Duplicate notice"
 msgstr "הודעה חדשה"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "הכנסת מנוי חדש נכשלה."
 
@@ -5281,19 +5832,19 @@ msgstr "תגובות"
 msgid "Favorites"
 msgstr "מועדפים"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5376,6 +5927,10 @@ msgstr "אין הודעה כזו."
 msgid "Repeat this notice"
 msgstr "אין הודעה כזו."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5448,37 +6003,6 @@ msgstr "הרשמה מרוחקת"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-#, fuzzy
-msgid "User has blocked you."
-msgstr "למשתמש אין פרופיל."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "לא מנוי!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "מחיקת המנוי לא הצליחה."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "מחיקת המנוי לא הצליחה."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5533,69 +6057,69 @@ msgstr "תמונה"
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "הגדרות הפרופיל"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 #, fuzzy
 msgid "Message"
 msgstr "הודעה חדשה"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "לפני מספר שניות"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "לפני כדקה"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "לפני כ-%d דקות"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "לפני כשעה"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "לפני כ-%d שעות"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "לפני כיום"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "לפני כ-%d ימים"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "לפני כחודש"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "לפני כ-%d חודשים"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "לפני כשנה"
 
@@ -5609,7 +6133,7 @@ msgstr "לאתר הבית יש כתובת לא חוקית."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 8f548104d909b783e102350980924fca42fa734b..7b6870afec7e8b9a913f78d982fe4de620c923e7 100644 (file)
@@ -9,18 +9,73 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:25+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:50:58+0000\n"
 "Language-Team: Dutch\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : (n%100==3 || "
 "n%100==4) ? 2 : 3)\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Přistup"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Sydłowe nastajenja składować"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Registrować"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Priwatny"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Jenož přeprosyć"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Začinjeny"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Nowe registrowanja znjemóžnić."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Składować"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Sydłowe nastajenja składować"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +90,29 @@ msgstr "Strona njeeksistuje"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Wužiwar njeeksistuje"
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s a přećeljo, strona %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -94,7 +153,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -105,8 +164,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Ty a přećeljo"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -116,23 +175,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API-metoda njenamakana."
 
@@ -146,7 +205,7 @@ msgstr "API-metoda njenamakana."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Tuta metoda wužaduje sej POST."
 
@@ -175,8 +234,9 @@ msgstr "Profil njeje so składować dał."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -290,11 +350,11 @@ msgstr "Njemóžeš slědowanje swójskich aktiwitow blokować."
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr ""
 
@@ -316,7 +376,8 @@ msgstr "Přimjeno so hižo wužiwa. Spytaj druhe."
 msgid "Not a valid nickname."
 msgstr "Žane płaćiwe přimjeno."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -328,7 +389,8 @@ msgstr "Startowa strona njeje płaćiwy URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Dospołne mjeno je předołho (maks. 255 znamješkow)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Wopisanje je předołho (maks. %d znamješkow)."
@@ -364,7 +426,7 @@ msgstr "Alias njemóže samsny kaž přimjeno być."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Skupina njenamakana!"
 
@@ -405,6 +467,113 @@ msgstr ""
 msgid "groups on %s"
 msgstr "skupiny na %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Njepłaćiwa wulkosć."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Njepłaćiwe přimjeno abo hesło!"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Zmylk datoweje banki při zasunjenju wužiwarja OAuth-aplikacije."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Zmylk datoweje banki při zasunjenju wužiwarja OAuth-aplikacije."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Přimjeno"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Hesło"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Wotpokazać"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Dowolić"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Tuta metoda wužaduje sej POST abo DELETE."
@@ -434,17 +603,17 @@ msgstr "Status zničeny."
 msgid "No status with that ID found."
 msgstr "Žadyn status z tym ID namakany."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "To je předołho. Maksimalna wulkosć zdźělenki je %d znamješkow."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Njenamakany"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -458,7 +627,7 @@ msgstr "Njepodpěrany format."
 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 ""
@@ -469,7 +638,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!"
@@ -485,27 +654,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr ""
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr ""
@@ -515,7 +679,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 ""
@@ -576,8 +740,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Přehlad"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Zničić"
 
@@ -589,29 +753,6 @@ msgstr "Nahrać"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -647,8 +788,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Ně"
 
@@ -656,13 +798,13 @@ msgstr "Ně"
 msgid "Do not block this user"
 msgstr "Tutoho wužiwarja njeblokować"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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ć"
 
@@ -745,7 +887,7 @@ msgid "Couldn't delete email confirmation."
 msgstr ""
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Adresu wobkrućić"
 
 #: actions/confirmaddress.php:159
@@ -762,10 +904,53 @@ msgstr "Konwersacija"
 msgid "Notices"
 msgstr "Zdźělenki"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Dyrbiš přizjewjeny być, zo by skupinu wobdźěłał."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Aplikaciski profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Njejsy wobsedźer tuteje aplikacije."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Aplikacija njeeksistuje."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Tutu zdźělenku njewušmórnyć"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Tutu zdźělenku wušmórnyć"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -794,7 +979,7 @@ msgstr "Chceš woprawdźe tutu zdźělenku wušmórnyć?"
 msgid "Do not delete this notice"
 msgstr "Tutu zdźělenku njewušmórnyć"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Tutu zdźělenku wušmórnyć"
 
@@ -923,16 +1108,6 @@ msgstr "Standardne designy wobnowić"
 msgid "Reset back to default"
 msgstr "Na standard wróćo stajić"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Składować"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Design składować"
@@ -945,10 +1120,78 @@ msgstr "Tuta zdźělenka faworit njeje!"
 msgid "Add to favorites"
 msgstr "K faworitam přidać"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Dokument njeeksistuje."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Aplikacije OAuth"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Dyrbiš přizjewjeny być, zo by skupinu wobdźěłał."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Aplikacija njeeksistuje."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Wužij tutón formular, zo by aplikaciju wobdźěłał."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Mjeno je trěbne."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Mjeno je předołho (maks. 255 znamješkow)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Přimjeno so hižo wužiwa. Spytaj druhe."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Wopisanje je trěbne."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "URL žórła płaćiwy njeje."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Mjeno organizacije je předołho (maks. 255 znamješkow)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Aplikacija njeda so aktualizować."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -976,7 +1219,7 @@ msgstr "wopisanje je předołho (maks. %d znamješkow)."
 msgid "Could not update group."
 msgstr "Skupina njeje so dała aktualizować."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Aliasy njejsu so dali wutworić."
 
@@ -1015,7 +1258,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Přetorhnyć"
 
@@ -1095,7 +1339,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Njepłaćiwa e-mejlowa adresa."
 
@@ -1107,7 +1351,7 @@ msgstr "To je hižo twoja e-mejlowa adresa."
 msgid "That email address already belongs to another user."
 msgstr "Ta e-mejlowa adresa hižo słuša k druhemu wužiwarjej."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr ""
@@ -1166,7 +1410,7 @@ msgstr "Tuta zdźělenka je hižo faworit!"
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Woblubowane zdźělenki"
@@ -1308,7 +1552,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ć"
 
@@ -1401,23 +1645,23 @@ msgstr "%1$s skupinskich čłonow, strona %2$d"
 msgid "A list of the users in this group."
 msgstr "Lisćina wužiwarjow w tutej skupinje."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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ć"
 
@@ -1576,6 +1820,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "To njeje twój ID Jabber."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1654,7 +1903,7 @@ msgstr "Wosobinska powěsć"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Wosobinsku powěsć po dobrozdaću přeprošenju přidać."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Pósłać"
 
@@ -1728,7 +1977,7 @@ msgstr "Wopačne wužiwarske mjeno abo hesło."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Zmylk při nastajenju wužiwarja. Snano njejsy awtorizowany."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Přizjewić"
@@ -1737,17 +1986,6 @@ msgstr "Přizjewić"
 msgid "Login to site"
 msgstr "Při sydle přizjewić"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Přimjeno"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Hesło"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Składować"
@@ -1773,21 +2011,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ć."
@@ -1796,6 +2034,27 @@ msgstr "Njeje móžno %1$S k administratorej w skupinje %2$s činić."
 msgid "No current status"
 msgstr "Žadyn aktualny status"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Aplikacija njeeksistuje."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Dyrbiš přizjewjeny być, zo by aplikaciju registrował."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Wužij tutón formular, zo by nowu aplikaciju registrował."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Aplikacija njeda so wutworić."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nowa skupina"
@@ -1900,6 +2159,48 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Dyrbiš přizjewjeny być, zo by swoje aplikacije nalistował."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Aplikacije OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Njejsy wužiwar tuteje aplikacije."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Zdźělenka nima profil"
@@ -1917,8 +2218,8 @@ msgstr ""
 msgid "Only "
 msgstr "Jenož "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Njeje podpěrany datowy format."
 
@@ -1931,7 +2232,7 @@ msgid "Notice Search"
 msgstr "Zdźělenku pytać"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Druhe nastajenja"
 
 #: actions/othersettings.php:71
@@ -1963,28 +2264,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr ""
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Žana skupina podata."
+msgstr "Žadyn wužiwarski ID podaty."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Žana zdźělenka podata."
+msgstr "Žane přizjewjenske znamješko podate."
 
 #: actions/otp.php:90
 msgid "No login token requested."
 msgstr ""
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "Žana zdźělenka podata."
+msgstr "Njepłaćiwe přizjewjenske znamješko podate."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "Při sydle přizjewić"
+msgstr "Přizjewjenske znamješko spadnjene."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
 
 #: actions/outbox.php:61
 #, php-format
@@ -2056,7 +2358,7 @@ msgstr ""
 msgid "Password saved."
 msgstr "Hesło składowane."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Šćežki"
 
@@ -2064,132 +2366,148 @@ msgstr "Šćežki"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Šćežka a serwerowe nastajenja za tute sydło StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Sydło"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Serwer"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Šćežka"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Sydłowa šćežka"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Šćežka k lokalam"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Zapisowa šćežka k lokalam"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Šat"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Šatowy serwer"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Šatowa šćežka"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Šatowy zapis"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Awatary"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Awatarowy serwer"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Awatarowa šćežka"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Awatarowy zapis"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Pozadki"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Pozadkowy serwer"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Pozadkowa šćežka"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Pozadkowy zapis"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Ženje"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Druhdy"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Přeco"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "SSL wužiwać"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-serwer"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Šćežki składować"
 
@@ -2247,7 +2565,7 @@ msgid "Full name"
 msgstr "Dospołne mjeno"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Startowa strona"
 
@@ -2270,7 +2588,7 @@ msgstr "Biografija"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Městno"
@@ -2294,7 +2612,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Rěč"
 
@@ -2320,7 +2638,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Biografija je předołha (maks. %d znamješkow)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Časowe pasmo njeje wubrane."
 
@@ -2333,23 +2651,23 @@ msgstr "Mjeno rěče je předołhe (maks. 50 znamješkow)."
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Nastajenja městna njedachu so składować."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr ""
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr ""
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Nastajenja składowane."
 
@@ -2371,36 +2689,36 @@ msgstr ""
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2409,7 +2727,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2442,7 +2760,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2579,7 +2897,7 @@ msgstr "Wodaj, njepłaćiwy přeprošenski kod."
 msgid "Registration successful"
 msgstr "Registrowanje wuspěšne"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrować"
@@ -2619,7 +2937,7 @@ msgid "Same as password above. Required."
 msgstr "Jenake kaž hesło horjeka. Trěbne."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mejl"
 
@@ -2703,7 +3021,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Abonować"
 
@@ -2739,7 +3057,7 @@ msgstr "Njemóžeš swójsku zdźělenku wospjetować."
 msgid "You already repeated that notice."
 msgstr "Sy tutu zdźělenku hižo wospjetował."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Wospjetowany"
 
@@ -2753,6 +3071,11 @@ msgstr "Wospjetowany!"
 msgid "Replies to %s"
 msgstr ""
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr ""
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2794,6 +3117,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2802,18 +3129,133 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
-#: actions/showfavorites.php:132
-msgid "Could not retrieve favorite notices."
-msgstr ""
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Posedźenja"
 
-#: actions/showfavorites.php:170
-#, php-format
-msgid "Feed for favorites of %s (RSS 1.0)"
-msgstr ""
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Designowe nastajenja za tute sydło StatusNet."
 
-#: actions/showfavorites.php:177
-#, php-format
-msgid "Feed for favorites of %s (RSS 2.0)"
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Z posedźenjemi wobchadźeć"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Sydłowe nastajenja składować"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Dyrbiš přizjewjeny być, zo by sej aplikaciju wobhladał."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Aplikaciski profil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Mjeno"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organizacija"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Wopisanje"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistika"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "URL awtorizować"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Chceš woprawdźe tutu zdźělenku wušmórnyć?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%1$s a přećeljo, strona %2$d"
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr ""
+
+#: actions/showfavorites.php:170
+#, php-format
+msgid "Feed for favorites of %s (RSS 1.0)"
+msgstr ""
+
+#: actions/showfavorites.php:177
+#, php-format
+msgid "Feed for favorites of %s (RSS 2.0)"
 msgstr ""
 
 #: actions/showfavorites.php:184
@@ -2851,17 +3293,22 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s skupinskich čłonow, strona %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Skupinski profil"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -2907,10 +3354,6 @@ msgstr "(Žadyn)"
 msgid "All members"
 msgstr "Wšitcy čłonojo"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistika"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Wutworjeny"
@@ -2965,6 +3408,11 @@ msgstr "Zdźělenka zničena."
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s a přećeljo, strona %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -2990,25 +3438,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr "FOAF za %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3017,7 +3465,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3025,7 +3473,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr ""
@@ -3042,195 +3490,143 @@ msgstr ""
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Dyrbiš płaćiwu kontaktowu e-mejlowu adresu měć."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Njeznata rěč \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Powšitkowny"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Sydłowe mjeno"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr ""
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Lokalny"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Standardne časowe pasmo"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Standardna sydłowa rěč"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Serwer"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Přistup"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Priwatny"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Jenož přeprosyć"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Začinjeny"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Nowe registrowanja znjemóžnić."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frekwenca"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limity"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Tekstowy limit"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Maksimalna ličba znamješkow za zdźělenki."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Sydłowe nastajenja składować"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "SMS-nastajenja"
@@ -3327,15 +3723,26 @@ msgstr "Žadyn kod zapodaty"
 msgid "You are not subscribed to that profile."
 msgstr "Njejsy tón profil abonował."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr ""
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Njeje lokalny wužiwar."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Dataja njeeksistuje."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Njejsy tón profil abonował."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Abonowany"
 
@@ -3395,7 +3802,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3405,19 +3812,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr ""
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3446,7 +3858,8 @@ msgstr ""
 msgid "User profile"
 msgstr "Wužiwarski profil"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3501,7 +3914,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr "Wotskazany"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3516,84 +3929,64 @@ msgstr "Wužiwar"
 msgid "User settings for this StatusNet site."
 msgstr "Wužiwarske nastajenja za sydło StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nowi wužiwarjo"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Powitanje noweho wužiwarja"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Powitanski tekst za nowych wužiwarjow (maks. 255 znamješkow)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Standardny abonement"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Přeprošenja"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Přeprošenja zmóžnjene"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Posedźenja"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Z posedźenjemi wobchadźeć"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr ""
@@ -3605,84 +3998,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licenca"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Akceptować"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Tutoho wužiwarja abonować"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Wotpokazać"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Tutón abonement wotpokazać"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Abonement awtorizowany"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Abonement wotpokazany"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3701,6 +4094,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s skupinskich čłonow, strona %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3727,10 +4125,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3762,11 +4156,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Mjeno"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Wersija"
 
@@ -3774,10 +4164,6 @@ msgstr "Wersija"
 msgid "Author(s)"
 msgstr "Awtorojo"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Wopisanje"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3796,19 +4182,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr ""
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Skupinski profil"
+msgstr "Přizamknjenje k skupinje je so njeporadźiło."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Skupina njeje so dała aktualizować."
+msgstr "Njeje dźěl skupiny."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Skupinski profil"
+msgstr "Wopušćenje skupiny je so njeporadźiło."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -3827,58 +4210,81 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr ""
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
 msgstr ""
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Hižo abonowany!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Wužiwar je će zablokował."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Njeje abonowany!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Sebjeabonement njeje so dał zničić."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Abonoment njeje so dał zničić."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr ""
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr ""
 
@@ -3911,148 +4317,144 @@ msgid "Other options"
 msgstr "Druhe opcije"
 
 #: 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"
 msgstr "Strona bjez titula"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Konto"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Zwjazać"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Přeprosyć"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Konto załožić"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Pomoc"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Pomhaj!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Pytać"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Za ludźimi abo tekstom pytać"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Wo"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Huste prašenja"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Priwatnosć"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Žórło"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4060,32 +4462,54 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4116,10 +4540,99 @@ msgstr ""
 msgid "Design configuration"
 msgstr ""
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS-wobkrućenje"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS-wobkrućenje"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr ""
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS-wobkrućenje"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Wopisaj swoju aplikaciju z %d znamješkami"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Wopisaj swoju aplikaciju"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL žórła"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Wotwołać"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4140,11 +4653,11 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Změnjenje hesła je so njeporadźiło"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Změnjenje hesła njeje dowolene"
 
@@ -4187,44 +4700,41 @@ msgid ""
 msgstr ""
 
 #: lib/command.php:152 lib/command.php:390 lib/command.php:451
-#, fuzzy
 msgid "Notice with that id does not exist"
-msgstr "Zdźělenka z tym ID njeeksistuje."
+msgstr "Zdźělenka z tym ID njeeksistuje"
 
 #: lib/command.php:168 lib/command.php:406 lib/command.php:467
 #: lib/command.php:523
-#, fuzzy
 msgid "User has no last notice"
-msgstr "Wužiwar nima poslednju powěsć."
+msgstr "Wužiwar nima poslednju powěsć"
 
 #: lib/command.php:190
 msgid "Notice marked as fave."
 msgstr ""
 
 #: lib/command.php:217
-#, fuzzy
 msgid "You are already a member of that group"
-msgstr "Sy hižo čłon teje skupiny."
+msgstr "Sy hižo čłon teje skupiny"
 
 #: lib/command.php:231
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s"
-msgstr "Njebě móžno wužiwarja %1$s skupinje %2%s přidać."
+msgstr "Njebě móžno wužiwarja %s skupinje %s přidać"
 
 #: lib/command.php:236
-#, fuzzy, php-format
+#, php-format
 msgid "%s joined group %s"
-msgstr "Wužiwarske skupiny"
+msgstr "%s je so k skupinje %s přizamknył"
 
 #: lib/command.php:275
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "Njebě móžno wužiwarja %1$s do skupiny $2$s přesunyć."
+msgstr "Njebě móžno wužiwarja %s do skupiny %s přesunyć"
 
 #: lib/command.php:280
-#, fuzzy, php-format
+#, php-format
 msgid "%s left group %s"
-msgstr "Wužiwarske skupiny"
+msgstr "%s je skupinu %s wopušćił"
 
 #: lib/command.php:309
 #, php-format
@@ -4252,18 +4762,17 @@ msgid "Message too long - maximum is %d characters, you sent %d"
 msgstr ""
 
 #: lib/command.php:367
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent"
-msgstr "Direktna powěsć do %s pósłana."
+msgstr "Direktna powěsć do %s pósłana"
 
 #: lib/command.php:369
 msgid "Error sending direct message."
 msgstr ""
 
 #: lib/command.php:413
-#, fuzzy
 msgid "Cannot repeat your own notice"
-msgstr "Njemóžno twoju zdźělenku wospjetować."
+msgstr "Njemóžeš swójsku powěsć wospjetować"
 
 #: lib/command.php:418
 msgid "Already repeated that notice"
@@ -4284,9 +4793,9 @@ msgid "Notice too long - maximum is %d characters, you sent %d"
 msgstr ""
 
 #: lib/command.php:491
-#, fuzzy, php-format
+#, php-format
 msgid "Reply to %s sent"
-msgstr "Wotmołwa na %s pósłana."
+msgstr "Wotmołwa na %s pósłana"
 
 #: lib/command.php:493
 msgid "Error saving notice."
@@ -4296,54 +4805,64 @@ msgstr ""
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Wužiwar njeeksistuje"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Wotskazany"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr ""
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Sy tutu wosobu abonował:"
@@ -4351,11 +4870,11 @@ msgstr[1] "Sy tutej wosobje abonował:"
 msgstr[2] "Sy tute wosoby abonował:"
 msgstr[3] "Sy tute wosoby abonował:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr ""
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Tuta wosoba je će abonowała:"
@@ -4363,11 +4882,11 @@ msgstr[1] "Tutej wosobje stej će abonowałoj:"
 msgstr[2] "Tute wosoby su će abonowali:"
 msgstr[3] "Tute wosoby su će abonowali:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr ""
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Sy čłon tuteje skupiny:"
@@ -4375,7 +4894,7 @@ msgstr[1] "Sy čłon tuteju skupinow:"
 msgstr[2] "Sy čłon tutych skupinow:"
 msgstr[3] "Sy čłon tutych skupinow:"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4389,6 +4908,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4416,19 +4936,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Žana konfiguraciska dataja namakana. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4444,6 +4964,14 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Zwiski"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Zmylk w datowej bance"
@@ -4626,15 +5154,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "KB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Njeznata rěč \"%s\"."
+msgstr "Njeznate žórło postoweho kašćika %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4826,7 +5354,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "wot"
 
@@ -4933,67 +5461,61 @@ msgid "Attach a file"
 msgstr "Dataju připowěsnyć"
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "Městno dźělić."
+msgstr "Městno dźělić"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Městno njedźělić."
+msgstr "Njedźěl moje městno"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "S"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "J"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "W"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "Z"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Wospjetowany wot"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Na tutu zdźělenku wotmołwić"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Wotmołwić"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Zdźělenka wospjetowana"
 
@@ -5025,11 +5547,7 @@ msgstr "Zmylk při zasunjenju zdaleneho profila"
 msgid "Duplicate notice"
 msgstr "Dwójna zdźělenka"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr ""
 
@@ -5045,19 +5563,19 @@ msgstr "Wotmołwy"
 msgid "Favorites"
 msgstr "Fawority"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Twoje dochadźace powěsće"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Twoje pósłane powěsće"
 
@@ -5134,6 +5652,10 @@ msgstr "Tutu zdźělenku wospjetować?"
 msgid "Repeat this notice"
 msgstr "Tutu zdźělenku wospjetować"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5201,34 +5723,6 @@ msgstr ""
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Hižo abonowany!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Wužiwar je će zablokował."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Abonowanje njebě móžno"
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Njeje abonowany!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Sebjeabonement njeje so dał zničić."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Abonoment njeje so dał zničić."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5279,67 +5773,67 @@ msgstr "Awatar wobdźěłać"
 msgid "User actions"
 msgstr "Wužiwarske akcije"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Profilowe nastajenja wobdźěłać"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Wobdźěłać"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Tutomu wužiwarja direktnu powěsć pósłać"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Powěsć"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "před něšto sekundami"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "před něhdźe jednej mjeńšinu"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "před %d mjeńšinami"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "před něhdźe jednej hodźinu"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "před něhdźe %d hodźinami"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "před něhdźe jednym dnjom"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "před něhdźe %d dnjemi"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "před něhdźe jednym měsacom"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "před něhdźe %d měsacami"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "před něhdźe jednym lětom"
 
@@ -5355,7 +5849,7 @@ msgstr ""
 "%s płaćiwa barba njeje! Wužij 3 heksadecimalne znamješka abo 6 "
 "heksadecimalnych znamješkow."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 3115ed7cef951847b668e78e1e634dce5bdd76a4..fa42bd3fea3e11bfb22f4d42b3f4cccdf69f8bd3 100644 (file)
@@ -8,17 +8,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:28+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:01+0000\n"
 "Language-Team: Interlingua\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Accesso"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Configurationes de accesso al sito"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registration"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Private"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Prohibir al usatores anonyme (sin session aperte) de vider le sito?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Solmente per invitation"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Permitter le registration solmente al invitatos."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Claudite"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Disactivar le creation de nove contos."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Salveguardar"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Salveguardar configurationes de accesso"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -33,25 +85,29 @@ msgstr "Pagina non existe"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Usator non existe."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s e amicos, pagina %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -90,15 +146,15 @@ msgstr ""
 "action.groups%%) o publica alique tu mesme."
 
 #: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Tu pote tentar [dar un pulsata a %s](../%s) in su profilo o [publicar un "
-"message a su attention](%%%%action.newnotice%%%%?status_textarea=%s)."
+"Tu pote tentar [dar un pulsata a %1$s](../%2$s) in su profilo o [publicar un "
+"message a su attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -111,8 +167,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Tu e amicos"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Actualisationes de %1$s e su amicos in %2$s!"
@@ -122,23 +178,23 @@ msgstr "Actualisationes de %1$s e su amicos in %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Methodo API non trovate."
 
@@ -152,7 +208,7 @@ msgstr "Methodo API non trovate."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Iste methodo require un POST."
 
@@ -183,8 +239,9 @@ msgstr "Non poteva salveguardar le profilo."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -264,18 +321,16 @@ msgid "No status found with that ID."
 msgstr "Nulle stato trovate con iste ID."
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 msgid "This status is already a favorite."
-msgstr "Iste stato es ja favorite!"
+msgstr "Iste stato es ja favorite."
 
 #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
 msgid "Could not create favorite."
 msgstr "Non poteva crear le favorite."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "Iste stato non es favorite!"
+msgstr "Iste stato non es favorite."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -295,19 +350,18 @@ msgid "Could not unfollow user: User not found."
 msgstr "Non poteva cessar de sequer le usator: Usator non trovate."
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "Tu non pote cessar de sequer te mesme!"
+msgstr "Tu non pote cessar de sequer te mesme."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Duo IDs de usator o pseudonymos debe esser fornite."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Non poteva determinar le usator de origine."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Non poteva trovar le usator de destination."
 
@@ -329,7 +383,8 @@ msgstr "Pseudonymo ja in uso. Proba un altere."
 msgid "Not a valid nickname."
 msgstr "Non un pseudonymo valide."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -341,7 +396,8 @@ msgstr "Le pagina personal non es un URL valide."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Le nomine complete es troppo longe (max. 255 characteres)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Description es troppo longe (max %d charachteres)."
@@ -377,7 +433,7 @@ msgstr "Le alias non pote esser identic al pseudonymo."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Gruppo non trovate!"
 
@@ -390,18 +446,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr "Le administrator te ha blocate de iste gruppo."
 
 #: 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 "Non poteva inscriber le usator %s in le gruppo %s."
+msgstr "Non poteva inscriber le usator %1$s in le gruppo %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
 msgstr "Tu non es membro de iste gruppo."
 
 #: 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 "Non poteva remover le usator %s del gruppo %s."
+msgstr "Non poteva remover le usator %1$s del gruppo %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -418,6 +474,118 @@ msgstr "Gruppos de %s"
 msgid "groups on %s"
 msgstr "gruppos in %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Nulle parametro oauth_token fornite."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Indicio invalide."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Occurreva un problema con le indicio de tu session. Per favor reproba."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Nomine de usator o contrasigno invalide!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+"Error del base de datos durante le deletion del usator del application OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+"Error del base de datos durante le insertion del usator del application "
+"OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Le indicio de requesta %s ha essite autorisate. Per favor excambia lo pro un "
+"indicio de accesso."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Le indicio de requesta %s ha essite refusate e revocate."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Submission de formulario inexpectate."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Un application vole connecter se a tu conto"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Permitter o refusar accesso"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Le application <strong>%1$s</strong> per <strong>%2$s</strong> vole poter "
+"<strong>%3$s</strong> le datos de tu conto de %4$s. Tu debe solmente dar "
+"accesso a tu conto de %4$s a tertie personas in le quales tu ha confidentia."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Conto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Pseudonymo"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Contrasigno"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Refusar"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Permitter"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Permitter o refusar accesso al informationes de tu conto."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Iste methodo require un commando POST o DELETE."
@@ -447,18 +615,18 @@ msgstr "Stato delite."
 msgid "No status with that ID found."
 msgstr "Nulle stato trovate con iste ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 "Isto es troppo longe. Le longitude maximal del notas es %d characteres."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Non trovate"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -470,14 +638,14 @@ msgid "Unsupported format."
 msgstr "Formato non supportate."
 
 #: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Favorites from %2$s"
-msgstr "%s / Favorites de %s"
+msgstr "%1$s / Favorites 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 actualisationes favoritisate per %s / %s."
+msgstr "%1$s actualisationes favoritisate per %2$s / %2$s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -485,7 +653,7 @@ msgstr "%s actualisationes favoritisate per %s / %s."
 msgid "%s timeline"
 msgstr "Chronologia 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!"
@@ -502,27 +670,22 @@ msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr ""
 "Actualisationes de %1$s que responde al actualisationes 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 "Chronologia public 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 "Actualisationes de totes in %s!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repetite per %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Repetite a %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Repetitiones de %s"
@@ -532,7 +695,7 @@ msgstr "Repetitiones de %s"
 msgid "Notices tagged with %s"
 msgstr "Notas con etiquetta %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 "Actualisationes con etiquetta %1$s in %2$s!"
@@ -543,7 +706,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
@@ -569,7 +732,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
@@ -592,42 +756,19 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Previsualisation"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 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"
 msgstr "Taliar"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Occurreva un problema con le indicio de tu session. Per favor reproba."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Submission de formulario inexpectate."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Selige un area quadrate del imagine pro facer lo tu avatar"
@@ -666,8 +807,9 @@ msgstr ""
 "cancellate, ille non potera resubscriber se a te in le futuro, e tu non "
 "recipera notification de su @-responsas."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -675,13 +817,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "Non blocar iste usator"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -705,9 +847,9 @@ msgid "%s blocked profiles"
 msgstr "%s profilos blocate"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "%s profilos blocate, pagina %d"
+msgstr "%1$s profilos blocate, pagina %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -764,7 +906,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Non poteva deler confirmation de e-mail."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Confirmar adresse"
 
 #: actions/confirmaddress.php:159
@@ -781,10 +923,51 @@ msgstr "Conversation"
 msgid "Notices"
 msgstr "Notas"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Tu debe aperir un session pro deler un application."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Application non trovate."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Tu non es le proprietario de iste application."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Il habeva un problema con tu indicio de session."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Deler application"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Es tu secur de voler deler iste application? Isto radera tote le datos super "
+"le application del base de datos, includente tote le existente connexiones "
+"de usator."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Non deler iste application"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Deler iste application"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -815,7 +998,7 @@ msgstr "Es tu secur de voler deler iste nota?"
 msgid "Do not delete this notice"
 msgstr "Non deler iste nota"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Deler iste nota"
 
@@ -896,8 +1079,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"
@@ -947,16 +1130,6 @@ msgstr "Restaurar apparentias predefinite"
 msgid "Reset back to default"
 msgstr "Revenir al predefinitiones"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Salveguardar"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Salveguardar apparentia"
@@ -969,9 +1142,75 @@ msgstr "Iste nota non es favorite!"
 msgid "Add to favorites"
 msgstr "Adder al favorites"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Documento non existe."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Le documento \"%s\" non existe."
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Modificar application"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Tu debe aperir un session pro modificar un application."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Application non trovate."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Usa iste formulario pro modificar le application."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Le nomine es requirite."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Le nomine es troppo longe (max. 255 characteres)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Nomine ja in uso. Proba un altere."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Le description es requirite."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Le URL de origine es troppo longe."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Le URL de origine non es valide."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Le organisation es requirite."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Le organisation es troppo longe (max. 255 characteres)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Le sito web del organisation es requirite."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Le reappello (callback) es troppo longe."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "Le URL de reappello (callback) non es valide."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Non poteva actualisar application."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -984,7 +1223,6 @@ msgstr "Tu debe aperir un session pro crear un gruppo."
 
 #: 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 "Tu debe esser administrator pro modificar le gruppo."
 
@@ -1001,7 +1239,7 @@ msgstr "description es troppo longe (max %d chars)."
 msgid "Could not update group."
 msgstr "Non poteva actualisar gruppo."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Non poteva crear aliases."
 
@@ -1010,7 +1248,6 @@ msgid "Options saved."
 msgstr "Optiones salveguardate."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
 msgstr "Configuration de e-mail"
 
@@ -1043,14 +1280,14 @@ msgstr ""
 "spam!) pro un message con ulterior instructiones."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancellar"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "Adresses de e-mail"
+msgstr "Adresse de e-mail"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1097,7 +1334,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."
@@ -1125,7 +1362,7 @@ msgid "Cannot normalize that email address"
 msgstr "Non pote normalisar iste adresse de e-mail"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Adresse de e-mail invalide."
 
@@ -1137,7 +1374,7 @@ msgstr "Isto es ja tu adresse de e-mail."
 msgid "That email address already belongs to another user."
 msgstr "Iste adresse de e-mail pertine ja a un altere usator."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Non poteva inserer le codice de confirmation."
@@ -1199,7 +1436,7 @@ msgstr "Iste nota es ja favorite!"
 msgid "Disfavor favorite"
 msgstr "Disfavorir favorite"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Notas popular"
@@ -1271,11 +1508,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!"
@@ -1346,20 +1583,20 @@ 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"
 
 #: actions/groupblock.php:162
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
-"Es tu secur de voler blocar le usator \"%s\" del gruppo \"%s\"? Ille essera "
-"removite del gruppo, non potera publicar messages, e non potera subscriber "
-"se al gruppo in le futuro."
+"Es tu secur de voler blocar le usator \"%1$s\" del gruppo \"%2$s\"? Ille "
+"essera removite del gruppo, non potera publicar messages, e non potera "
+"subscriber se al gruppo in le futuro."
 
 #: actions/groupblock.php:178
 msgid "Do not block this user from this group"
@@ -1411,11 +1648,10 @@ 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
-#, fuzzy
 msgid "User without matching profile."
 msgstr "Usator sin profilo correspondente"
 
@@ -1437,31 +1673,31 @@ msgid "%s group members"
 msgstr "Membros del gruppo %s"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "Membros del gruppo %s, pagina %d"
+msgstr "Membros del gruppo %1$s, pagina %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "Un lista de usatores in iste gruppo."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1548,7 +1784,6 @@ msgid "Error removing the block."
 msgstr "Error de remover le blocada."
 
 #: actions/imsettings.php:59
-#, fuzzy
 msgid "IM settings"
 msgstr "Configuration de messageria instantanee"
 
@@ -1579,7 +1814,6 @@ msgstr ""
 "message con ulterior instructiones. (Ha tu addite %s a tu lista de amicos?)"
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
 msgstr "Adresse de messageria instantanee"
 
@@ -1644,6 +1878,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Isto non es tu ID de Jabber."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Cassa de entrata de %1$s - pagina %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1684,7 +1923,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 ""
@@ -1727,7 +1966,7 @@ msgstr "Message personal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Si tu vole, adde un message personal al invitation."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Inviar"
 
@@ -1798,9 +2037,9 @@ msgid "You must be logged in to join a group."
 msgstr "Tu debe aperir un session pro facer te membro de un gruppo."
 
 #: actions/joingroup.php:131
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s joined group %2$s"
-msgstr "%s se faceva membro del gruppo %s"
+msgstr "%1$s es ora membro del gruppo %2$s"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
@@ -1811,9 +2050,9 @@ msgid "You are not a member of that group."
 msgstr "Tu non es membro de iste gruppo."
 
 #: actions/leavegroup.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s left group %2$s"
-msgstr "%s quitava le gruppo %s"
+msgstr "%1$s quitava le gruppo %2$s"
 
 #: actions/login.php:80 actions/otp.php:62 actions/register.php:137
 msgid "Already logged in."
@@ -1828,7 +2067,7 @@ msgid "Error setting user. You are probably not authorized."
 msgstr ""
 "Error de acceder al conto de usator. Tu probabilemente non es autorisate."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Aperir session"
@@ -1837,17 +2076,6 @@ msgstr "Aperir session"
 msgid "Login to site"
 msgstr "Identificar te a iste sito"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Pseudonymo"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Contrasigno"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Memorar me"
@@ -1877,31 +2105,51 @@ 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
-#, fuzzy, php-format
+#: actions/makeadmin.php:96
+#, php-format
 msgid "%1$s is already an admin for group \"%2$s\"."
-msgstr "%s es ja administrator del gruppo \"%s\"."
+msgstr "%1$s es ja administrator del gruppo \"%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 "Non poteva obtener le datos del membrato de %s in le gruppo %s"
+msgstr "Non pote obtener le datos del membrato de %1$s in le gruppo %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 "Non pote facer %s administrator del gruppo %s"
+msgstr "Non pote facer %1$s administrator del gruppo %2$s."
 
 #: actions/microsummary.php:69
 msgid "No current status"
 msgstr "Nulle stato actual"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nove application"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Tu debe aperir un session pro registrar un application."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Usa iste formulario pro registrar un nove application."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Le URL de origine es requirite."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Non poteva crear application."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nove gruppo"
@@ -1939,9 +2187,9 @@ msgid "Message sent"
 msgstr "Message inviate"
 
 #: actions/newmessage.php:185
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent."
-msgstr "Message directe a %s inviate"
+msgstr "Message directe a %s inviate."
 
 #: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
@@ -1969,9 +2217,9 @@ msgid "Text search"
 msgstr "Recerca de texto"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%1$s\" on %2$s"
-msgstr "Resultatos del recerca de \"%s\" in %s"
+msgstr "Resultatos del recerca de \"%1$s\" in %2$s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -2017,6 +2265,50 @@ msgstr "Pulsata inviate"
 msgid "Nudge sent!"
 msgstr "Pulsata inviate!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Tu debe aperir un session pro listar tu applicationes."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Applicationes OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Applicationes que tu ha registrate"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Tu non ha ancora registrate alcun application."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Applicationes connectite"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Tu ha permittite al sequente applicationes de acceder a tu conto."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Tu non es usator de iste application."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Impossibile revocar le accesso del application: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Tu non ha autorisate alcun application a usar tu conto."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Le programmatores pote modificar le parametros de registration pro lor "
+"applicationes "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Le nota ha nulle profilo"
@@ -2034,8 +2326,8 @@ msgstr "typo de contento "
 msgid "Only "
 msgstr "Solmente "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Formato de datos non supportate."
 
@@ -2048,7 +2340,7 @@ msgid "Notice Search"
 msgstr "Rercerca de notas"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Altere configurationes"
 
 #: actions/othersettings.php:71
@@ -2080,28 +2372,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr "Le servicio de accurtamento de URL es troppo longe (max 50 chars)."
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Nulle gruppo specificate."
+msgstr "Nulle identificator de usator specificate."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Nulle nota specificate."
+msgstr "Nulle indicio de identification specificate."
 
 #: actions/otp.php:90
 msgid "No login token requested."
-msgstr ""
+msgstr "Nulle indicio de identification requestate."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "Indicio invalide o expirate."
+msgstr "Indicio de identification invalide specificate."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "Identificar te a iste sito"
+msgstr "Le indicio de identification ha expirate."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Cassa de exito de %1$s - pagina %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2174,7 +2467,7 @@ msgstr "Non pote salveguardar le nove contrasigno."
 msgid "Password saved."
 msgstr "Contrasigno salveguardate."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Camminos"
 
@@ -2182,133 +2475,148 @@ msgstr "Camminos"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Configuration de cammino e servitor pro iste sito StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Directorio de thema non legibile: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Directorio de avatar non scriptibile: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Directorio de fundo non scriptibile: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Directorio de localitates non scriptibile: %s"
 
-#: actions/pathsadminpanel.php:166
+#: 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:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Sito"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Servitor"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nomine de host del servitor del sito."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Cammino"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Cammino del sito"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Cammino al localitates"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Cammino al directorio de localitates"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "URLs de luxo"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Usar URLs de luxo (plus legibile e memorabile)?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Thema"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Servitor de themas"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Cammino al themas"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Directorio del themas"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatares"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Servitor de avatares"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Cammino al avatares"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Directorio del avatares"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Fundos"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Servitor de fundos"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Cammino al fundos"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Directorio al fundos"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Nunquam"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Alcun vices"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Sempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Usar SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Quando usar SSL"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Servitor SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Servitor verso le qual diriger le requestas SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Salveguardar camminos"
 
@@ -2331,19 +2639,20 @@ msgid "Not a valid people tag: %s"
 msgstr "Etiquetta de personas invalide: %s"
 
 #: actions/peopletag.php:144
-#, fuzzy, php-format
+#, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
-msgstr "Usatores auto-etiquettate con %s - pagina %d"
+msgstr "Usatores auto-etiquettate con %1$s - pagina %2$d"
 
 #: actions/postnotice.php:84
 msgid "Invalid notice content"
 msgstr "Le contento del nota es invalide"
 
 #: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"Le licentia del nota '%s' non es compatibile con le licentia del sito '%s'."
+"Le licentia del nota ‘%1$s’ non es compatibile con le licentia del sito ‘%2"
+"$s’."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2371,7 +2680,7 @@ msgid "Full name"
 msgstr "Nomine complete"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Pagina personal"
 
@@ -2394,7 +2703,7 @@ msgstr "Bio"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Loco"
@@ -2420,7 +2729,7 @@ msgstr ""
 "Etiquettas pro te (litteras, numeros, -, ., e _), separate per commas o "
 "spatios"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Lingua"
 
@@ -2447,7 +2756,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Bio es troppo longe (max %d chars)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Fuso horari non seligite."
 
@@ -2460,23 +2769,23 @@ msgstr "Lingua es troppo longe (max 50 chars)."
 msgid "Invalid tag: \"%s\""
 msgstr "Etiquetta invalide: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Non poteva actualisar usator pro autosubscription."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Non poteva salveguardar le preferentias de loco."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Non poteva salveguardar profilo."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Non poteva salveguardar etiquettas."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Preferentias confirmate."
 
@@ -2498,19 +2807,19 @@ msgstr "Chronologia public, pagina %d"
 msgid "Public timeline"
 msgstr "Chronologia public"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Syndication del fluxo public (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Syndication del fluxo public (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Syndication del fluxo public (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2519,11 +2828,11 @@ msgstr ""
 "Isto es le chronologia public pro %%site.name%%, ma nulle persona ha ancora "
 "scribite alique."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Sia le prime a publicar!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2531,7 +2840,7 @@ msgstr ""
 "Proque non [registrar un conto](%%action.register%%) e devenir le prime a "
 "publicar?"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2544,7 +2853,7 @@ msgstr ""
 "[Inscribe te ora](%%action.register%%) pro condivider notas super te con "
 "amicos, familia e collegas! ([Leger plus](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2567,7 +2876,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!"
@@ -2582,7 +2891,7 @@ msgstr ""
 "Proque non [registrar un conto](%%action.register%%) e devenir le prime a "
 "publicar un?"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Etiquettario"
 
@@ -2722,10 +3031,10 @@ msgstr "Pardono, le codice de invitation es invalide."
 msgid "Registration successful"
 msgstr "Registration succedite"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: 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."
@@ -2733,8 +3042,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."
@@ -2754,18 +3062,18 @@ 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:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mail"
 
@@ -2781,7 +3089,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"
@@ -2796,7 +3104,7 @@ msgstr ""
 "messageria instantanee, numero de telephono."
 
 #: 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"
@@ -2813,9 +3121,9 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"Felicitationes, %s! Benvenite a %%%%site.name%%%%. Ora tu pote...\n"
+"Felicitationes, %1$s! Benvenite a %%%%site.name%%%%. Ora tu pote...\n"
 "\n"
-"* Visitar [tu profilo](%s) e publicar tu prime message.\n"
+"* Visitar [tu profilo](%2$s) e publicar tu prime message.\n"
 "* Adder un [adresse Jabber/GTalk](%%%%action.imsettings%%%%) pro poter "
 "inviar notas per messages instantanee.\n"
 "* [Cercar personas](%%%%action.peoplesearch%%%%) que tu cognosce o con que "
@@ -2872,7 +3180,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL de tu profilo in un altere servicio de microblogging compatibile"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subscriber"
 
@@ -2910,7 +3218,7 @@ msgstr "Tu non pote repeter tu proprie nota."
 msgid "You already repeated that notice."
 msgstr "Tu ha ja repetite iste nota."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Repetite"
 
@@ -2924,6 +3232,11 @@ msgstr "Repetite!"
 msgid "Replies to %s"
 msgstr "Responsas a %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Responsas a %1$s, pagina %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2940,13 +3253,13 @@ msgid "Replies feed for %s (Atom)"
 msgstr "Syndication de responsas pro %s (Atom)"
 
 #: actions/replies.php:198
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "This is the timeline showing replies to %1$s but %2$s hasn't received a "
 "notice to his attention yet."
 msgstr ""
-"Isto es le chronologia de responsas a %s, ma %s non ha ancora recipite alcun "
-"nota a su attention."
+"Isto es le chronologia de responsas a %1$s, ma %2$s non ha ancora recipite "
+"alcun nota a su attention."
 
 #: actions/replies.php:203
 #, php-format
@@ -2958,19 +3271,23 @@ msgstr ""
 "personas o [devenir membro de gruppos](%%action.groups%%)."
 
 #: actions/replies.php:205
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) or [post something to his or her "
 "attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Tu pote tentar [pulsar %s](../%s) o [publicar alique a su attention](%%%%"
-"action.newnotice%%%%?status_textarea=%s)."
+"Tu pote tentar [pulsar %1$s](../%2$s) o [publicar alique a su attention](%%%%"
+"action.newnotice%%%%?status_textarea=%3$s)."
 
 #: actions/repliesrss.php:72
 #, php-format
 msgid "Replies to %1$s on %2$s!"
 msgstr "Responsas a %1$s in %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Tu non pote mitter usatores in le cassa de sablo in iste sito."
@@ -2979,13 +3296,128 @@ msgstr "Tu non pote mitter usatores in le cassa de sablo in iste sito."
 msgid "User is already sandboxed."
 msgstr "Usator es ja in cassa de sablo."
 
-#: actions/showfavorites.php:132
-msgid "Could not retrieve favorite notices."
-msgstr "Non poteva recuperar notas favorite."
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessiones"
 
-#: actions/showfavorites.php:170
-#, php-format
-msgid "Feed for favorites of %s (RSS 1.0)"
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Parametros de session pro iste sito StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gerer sessiones"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Si nos debe gerer le sessiones nos mesme."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Cercar defectos de session"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Producer informationes technic pro cercar defectos in sessiones."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Salveguardar configurationes del sito"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Tu debe aperir un session pro vider un application."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Profilo del application"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Icone"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nomine"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organisation"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Description"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statisticas"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Create per %1$s - accesso %2$s per predefinition - %3$d usatores"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Actiones de application"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Reinitialisar clave e secreto"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Info del application"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Clave de consumitor"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Secreto de consumitor"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL del indicio de requesta"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL del indicio de accesso"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "URL de autorisation"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Nota: Nos supporta le signaturas HMAC-SHA1. Nos non accepta signaturas in "
+"texto simple."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Es tu secur de voler reinitialisar tu clave e secreto de consumitor?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Notas favorite de %1$s, pagina %2$d"
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr "Non poteva recuperar notas favorite."
+
+#: actions/showfavorites.php:170
+#, php-format
+msgid "Feed for favorites of %s (RSS 1.0)"
 msgstr "Syndication del favorites de %s (RSS 1.0)"
 
 #: actions/showfavorites.php:177
@@ -3036,17 +3468,22 @@ msgstr "Isto es un modo de condivider lo que te place."
 msgid "%s group"
 msgstr "Gruppo %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Gruppo %1$s, pagina %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Profilo del gruppo"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Nota"
 
@@ -3092,10 +3529,6 @@ msgstr "(Nulle)"
 msgid "All members"
 msgstr "Tote le membros"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statisticas"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Create"
@@ -3159,10 +3592,15 @@ msgstr "Nota delite."
 msgid " tagged %s"
 msgstr "  con etiquetta %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, pagina %2$d"
+
 #: actions/showstream.php:122
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
-msgstr "Syndication de notas pro %s con etiquetta %s (RSS 1.0)"
+msgstr "Syndication de notas pro %1$s con etiquetta %2$s (RSS 1.0)"
 
 #: actions/showstream.php:129
 #, php-format
@@ -3184,12 +3622,13 @@ msgstr "Syndication de notas pro %s (Atom)"
 msgid "FOAF for %s"
 msgstr "Amico de un amico pro %s"
 
-#: actions/showstream.php:191
-#, fuzzy, php-format
+#: actions/showstream.php:200
+#, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
-msgstr "Isto es le chronologia pro %s, ma %s non ha ancora publicate alique."
+msgstr ""
+"Isto es le chronologia pro %1$s, ma %2$s non ha ancora publicate alique."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3197,16 +3636,16 @@ msgstr ""
 "Videva tu qualcosa de interessante recentemente? Tu non ha ancora publicate "
 "alcun nota, dunque iste es un bon momento pro comenciar :)"
 
-#: actions/showstream.php:198
-#, fuzzy, php-format
+#: actions/showstream.php:207
+#, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
-"Tu pote tentar pulsar %s o [publicar un nota a su attention](%%%%action."
-"newnotice%%%%?status_textarea=%s)."
+"Tu pote tentar pulsar %1$s o [publicar un nota a su attention](%%%%action."
+"newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3220,7 +3659,7 @@ msgstr ""
 "pro sequer le notas de **%s** e multe alteres! ([Lege plus](%%%%doc.help%%%"
 "%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3231,7 +3670,7 @@ msgstr ""
 "(http://en.wikipedia.org/wiki/Microblog) a base del software libere "
 "[StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Repetition de %s"
@@ -3248,202 +3687,148 @@ msgstr "Usator es ja silentiate."
 msgid "Basic settings for this StatusNet site."
 msgstr "Configurationes de base pro iste sito de StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Le longitude del nomine del sito debe esser plus que zero."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Tu debe haber un valide adresse de e-mail pro contacto."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "Lingua \"%s\" incognite"
+msgstr "Lingua \"%s\" incognite."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Le URL pro reportar instantaneos es invalide."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Valor de execution de instantaneo invalide."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Le frequentia de instantaneos debe esser un numero."
 
-#: actions/siteadminpanel.php:197
+#: 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:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Le limite de duplicatos debe esser 1 o plus secundas."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "General"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nomine del sito"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Le nomine de tu sito, como \"Le microblog de TuCompania\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Realisate per"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Le texto usate pro le ligamine al creditos in le pede de cata pagina"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL pro \"Realisate per\""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL usate pro le ligamine al creditos in le pede de cata pagina"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Le adresse de e-mail de contacto pro tu sito"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Local"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Fuso horari predefinite"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Fuso horari predefinite pro le sito; normalmente UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Lingua predefinite del sito"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URLs"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Servitor"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nomine de host del servitor del sito."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "URLs de luxo"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Usar URLs de luxo (plus legibile e memorabile)?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Accesso"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Private"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Prohiber al usatores anonyme (sin session aperte) de vider le sito?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Solmente per invitation"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Permitter le registration solmente al invitatos."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Claudite"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Disactivar le creation de nove contos."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Instantaneos"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Aleatorimente durante un accesso web"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "In un processo planificate"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Instantaneos de datos"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Quando inviar datos statistic al servitores de status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequentia"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Un instantaneo essera inviate a cata N accessos web"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL pro reporto"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Le instantaneos essera inviate a iste URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limites"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Limite de texto"
 
-#: actions/siteadminpanel.php:370
+#: 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:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Limite de duplicatos"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Quante tempore (in secundas) le usatores debe attender ante de poter "
 "publicar le mesme cosa de novo."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Salveguardar configurationes del sito"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "Configuration SMS"
+msgstr "Parametros de SMS"
 
 #: actions/smssettings.php:69
 #, php-format
@@ -3471,7 +3856,6 @@ msgid "Enter the code you received on your phone."
 msgstr "Entra le codice que tu ha recipite in tu telephono."
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
 msgstr "Numero de telephono pro SMS"
 
@@ -3545,15 +3929,26 @@ msgstr "Nulle codice entrate"
 msgid "You are not subscribed to that profile."
 msgstr "Tu non es subscribite a iste profilo."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Non poteva salveguardar le subscription."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Le usator non es local."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "File non existe."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Tu non es subscribite a iste profilo."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Subscribite"
 
@@ -3563,9 +3958,9 @@ msgid "%s subscribers"
 msgstr "Subscriptores a %s"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "Subscriptores a %s, pagina %d"
+msgstr "Subscriptores a %1$s, pagina %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3587,7 +3982,7 @@ msgstr ""
 #: actions/subscribers.php:110
 #, php-format
 msgid "%s has no subscribers. Want to be the first?"
-msgstr ""
+msgstr "%s non ha subscriptores. Vole esser le prime?"
 
 #: actions/subscribers.php:114
 #, php-format
@@ -3595,27 +3990,29 @@ msgid ""
 "%s has no subscribers. Why not [register an account](%%%%action.register%%%"
 "%) and be the first?"
 msgstr ""
+"%s non ha subscriptores. Proque non [crear un conto](%%%%action.register%%%"
+"%) e esser le prime?"
 
 #: actions/subscriptions.php:52
 #, php-format
 msgid "%s subscriptions"
-msgstr ""
+msgstr "Subscriptiones de %s"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "Subscriptores a %s, pagina %d"
+msgstr "Subscriptiones de %1$s, pagina %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
-msgstr ""
+msgstr "Tu seque le notas de iste personas."
 
 #: actions/subscriptions.php:69
 #, php-format
 msgid "These are the people whose notices %s listens to."
-msgstr ""
+msgstr "%s seque le notas de iste personas."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3624,34 +4021,45 @@ msgid ""
 "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
 "automatically subscribe to people you already follow there."
 msgstr ""
+"Tu non seque le notas de alcuno in iste momento. Tenta subscriber te a "
+"personas que tu cognosce. Proba [le recerca de personas](%%action."
+"peoplesearch%%), cerca membros in le gruppos de tu interesse e in le "
+"[usatores in evidentia](%%action.featured%%). Si tu es [usator de Twitter](%%"
+"action.twittersettings%%), tu pote automaticamente subscriber te a personas "
+"que tu ja seque la."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
-msgstr ""
+msgstr "%s non seque alcuno."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
-msgstr ""
+msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
-msgstr ""
+msgstr "SMS"
+
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Notas etiquettate con %1$s, pagina %2$d"
 
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
-msgstr ""
+msgstr "Syndication de notas pro le etiquetta %s (RSS 1.0)"
 
 #: actions/tag.php:92
 #, php-format
 msgid "Notice feed for tag %s (RSS 2.0)"
-msgstr ""
+msgstr "Syndication de notas pro le etiquetta %s (RSS 2.0)"
 
 #: actions/tag.php:98
 #, php-format
 msgid "Notice feed for tag %s (Atom)"
-msgstr ""
+msgstr "Syndication de notas pro le etiquetta %s (Atom)"
 
 #: actions/tagother.php:39
 msgid "No ID argument."
@@ -3660,164 +4068,151 @@ msgstr "Nulle parametro de ID."
 #: actions/tagother.php:65
 #, php-format
 msgid "Tag %s"
-msgstr ""
+msgstr "Etiquetta %s"
 
 #: actions/tagother.php:77 lib/userprofile.php:75
 msgid "User profile"
-msgstr ""
+msgstr "Profilo del usator"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
-msgstr ""
+msgstr "Photo"
 
 #: actions/tagother.php:141
 msgid "Tag user"
-msgstr ""
+msgstr "Etiquettar usator"
 
 #: actions/tagother.php:151
 msgid ""
 "Tags for this user (letters, numbers, -, ., and _), comma- or space- "
 "separated"
 msgstr ""
+"Etiquettas pro iste usator (litteras, numeros, -, . e _), separate per "
+"commas o spatios"
 
 #: actions/tagother.php:193
 msgid ""
 "You can only tag people you are subscribed to or who are subscribed to you."
 msgstr ""
+"Tu pote solmente etiquettar personas a qui tu es subscribite o qui es "
+"subscribite a te."
 
 #: actions/tagother.php:200
 msgid "Could not save tags."
-msgstr ""
+msgstr "Non poteva salveguardar etiquettas."
 
 #: actions/tagother.php:236
 msgid "Use this form to add tags to your subscribers or subscriptions."
 msgstr ""
+"Usa iste formulario pro adder etiquettas a tu subscriptores o subscriptiones."
 
 #: actions/tagrss.php:35
 msgid "No such tag."
-msgstr ""
+msgstr "Etiquetta non existe."
 
 #: actions/twitapitrends.php:87
 msgid "API method under construction."
-msgstr ""
+msgstr "Methodo API in construction."
 
 #: actions/unblock.php:59
 msgid "You haven't blocked that user."
-msgstr ""
+msgstr "Tu non ha blocate iste usator."
 
 #: actions/unsandbox.php:72
 msgid "User is not sandboxed."
-msgstr ""
+msgstr "Le usator non es in le cassa de sablo."
 
 #: actions/unsilence.php:72
 msgid "User is not silenced."
-msgstr ""
+msgstr "Le usator non es silentiate."
 
 #: actions/unsubscribe.php:77
 msgid "No profile id in request."
-msgstr ""
+msgstr "Nulle ID de profilo in requesta."
 
 #: actions/unsubscribe.php:98
 msgid "Unsubscribed"
-msgstr ""
+msgstr "Subscription cancellate"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
-#, fuzzy, php-format
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
+#, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"Le licentia del nota '%s' non es compatibile con le licentia del sito '%s'."
+"Le licentia del fluxo que tu ascolta, ‘%1$s’, non es compatibile con le "
+"licentia del sito ‘%2$s’."
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
 #: lib/personalgroupnav.php:115
 msgid "User"
-msgstr ""
+msgstr "Usator"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr ""
+msgstr "Configurationes de usator pro iste sito de StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "Limite de biographia invalide. Debe esser un numero."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
-msgstr ""
+msgstr "Texto de benvenita invalide. Longitude maximal es 255 characteres."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr ""
+msgstr "Subscription predefinite invalide: '%1$s' non es usator."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
-msgstr ""
+msgstr "Profilo"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
-msgstr ""
+msgstr "Limite de biographia"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
-msgstr ""
+msgstr "Le longitude maximal del biographia de un profilo in characteres."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
-msgstr ""
+msgstr "Nove usatores"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
-msgstr ""
+msgstr "Message de benvenita a nove usatores"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr ""
+msgstr "Texto de benvenita pro nove usatores (max. 255 characteres)"
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
-msgstr ""
+msgstr "Subscription predefinite"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
-msgstr ""
+msgstr "Subscriber automaticamente le nove usatores a iste usator."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
-msgstr ""
+msgstr "Invitationes"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
-msgstr ""
+msgstr "Invitationes activate"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
-msgstr ""
-
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
+msgstr "Si le usatores pote invitar nove usatores."
 
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
-msgstr ""
+msgstr "Autorisar subscription"
 
 #: actions/userauthorization.php:110
 msgid ""
@@ -3825,121 +4220,137 @@ msgid ""
 "user’s notices. If you didn’t just ask to subscribe to someone’s notices, "
 "click “Reject”."
 msgstr ""
+"Per favor verifica iste detalios pro assecurar te que tu vole subscriber te "
+"al notas de iste usator. Si tu non ha requestate isto, clicca \"Rejectar\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
-msgstr ""
+msgstr "Licentia"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
-msgstr ""
+msgstr "Acceptar"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
-msgstr ""
+msgstr "Subscriber me a iste usator"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
-msgstr ""
+msgstr "Rejectar"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
-msgstr ""
+msgstr "Rejectar iste subscription"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
-msgstr ""
+msgstr "Nulle requesta de autorisation!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
-msgstr ""
+msgstr "Subscription autorisate"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
+"Le subscription ha essite autorisate, ma nulle URL de retorno ha essite "
+"recipite. Lege in le instructiones del sito in question como autorisar le "
+"subscription. Tu indicio de subscription es:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
-msgstr ""
+msgstr "Subscription rejectate"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
+"Le subscription ha essite rejectate, ma nulle URL de retorno ha essite "
+"recipite. Lege in le instructiones del sito in question como rejectar "
+"completemente le subscription."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
-msgstr ""
+msgstr "URI de ascoltator ‘%s’ non trovate hic."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
-msgstr ""
+msgstr "URI de ascoltato ‘%s’ es troppo longe."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
-msgstr ""
+msgstr "URI de ascoltato ‘%s’ es un usator local."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
-msgstr ""
+msgstr "URL de profilo ‘%s’ es de un usator local."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
-msgstr ""
+msgstr "URL de avatar ‘%s’ non es valide."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
-msgstr ""
+msgstr "Non pote leger URL de avatar ‘%s’."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
-msgstr ""
+msgstr "Typo de imagine incorrecte pro URL de avatar ‘%s’."
 
 #: actions/userdesignsettings.php:76 lib/designsettings.php:65
 msgid "Profile design"
-msgstr ""
+msgstr "Apparentia del profilo"
 
 #: actions/userdesignsettings.php:87 lib/designsettings.php:76
 msgid ""
 "Customize the way your profile looks with a background image and a colour "
 "palette of your choice."
 msgstr ""
+"Personalisa le apparentia de tu profilo con un imagine de fundo e un paletta "
+"de colores de tu preferentia."
 
 #: actions/userdesignsettings.php:282
 msgid "Enjoy your hotdog!"
-msgstr ""
+msgstr "Bon appetito!"
+
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Gruppos %1$s, pagina %2$d"
 
 #: actions/usergroups.php:130
 msgid "Search for more groups"
-msgstr ""
+msgstr "Cercar altere gruppos"
 
 #: actions/usergroups.php:153
 #, php-format
 msgid "%s is not a member of any group."
-msgstr ""
+msgstr "%s non es membro de alcun gruppo."
 
 #: actions/usergroups.php:158
 #, php-format
 msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
 msgstr ""
+"Tenta [cercar gruppos](%%action.groupsearch%%) e facer te membro de illos."
 
 #: actions/version.php:73
-#, fuzzy, php-format
+#, php-format
 msgid "StatusNet %s"
-msgstr "Statisticas"
+msgstr "StatusNet %s"
 
 #: actions/version.php:153
 #, php-format
@@ -3947,15 +4358,12 @@ msgid ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 msgstr ""
-
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Stato delite."
+"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 ""
@@ -3964,6 +4372,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 ""
@@ -3972,6 +4384,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
@@ -3979,28 +4395,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 ""
-
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Pseudonymo"
+msgstr "Plug-ins"
 
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "Conversation"
+msgstr "Version"
 
 #: actions/version.php:197
 msgid "Author(s)"
-msgstr ""
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr ""
+msgstr "Autor(es)"
 
 #: classes/File.php:144
 #, php-format
@@ -4008,402 +4416,541 @@ 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
-#, fuzzy, php-format
+#, php-format
 msgid "Could not create login token for %s"
-msgstr "Non poteva crear aliases."
+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:171
+#: 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:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
-msgstr ""
+msgstr "Problema salveguardar nota. Troppo longe."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
-msgstr ""
+msgstr "Problema salveguardar nota. Usator incognite."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 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:240
+#: classes/Notice.php:237
 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:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
-msgstr ""
+msgstr "Il te es prohibite publicar notas in iste sito."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
-msgstr ""
+msgstr "Problema salveguardar nota."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr ""
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problema salveguardar le cassa de entrata del gruppo."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
-msgstr ""
+msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
-#, php-format
-msgid "Welcome to %1$s, @%2$s!"
-msgstr ""
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Tu ha essite blocate del subscription."
 
-#: classes/User_group.php:380
-msgid "Could not create group."
-msgstr ""
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Ja subscribite!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Le usator te ha blocate."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Non subscribite!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Non poteva deler auto-subscription."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Non poteva deler subscription."
+
+#: classes/User.php:372
+#, php-format
+msgid "Welcome to %1$s, @%2$s!"
+msgstr "Benvenite a %1$s, @%2$s!"
+
+#: classes/User_group.php:423
+msgid "Could not create group."
+msgstr "Non poteva crear gruppo."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 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:427
+#: lib/action.php:433
 msgid "Primary site navigation"
-msgstr ""
+msgstr "Navigation primari del sito"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
-msgstr ""
+msgstr "Initio"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
-msgstr ""
+msgstr "Profilo personal e chronologia de amicos"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr ""
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
-msgstr ""
+msgstr "Cambiar tu e-mail, avatar, contrasigno, profilo"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
-msgstr ""
+msgstr "Connecter"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
-msgstr ""
+msgstr "Connecter con servicios"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
-msgstr ""
+msgstr "Modificar le configuration del sito"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
-msgstr ""
+msgstr "Invitar"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: 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:452
+#: lib/action.php:458
 msgid "Logout"
-msgstr ""
+msgstr "Clauder session"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
-msgstr ""
+msgstr "Terminar le session del sito"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
-msgstr ""
+msgstr "Crear un conto"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
-msgstr ""
+msgstr "Identificar te a iste sito"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
-msgstr ""
+msgstr "Adjuta"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
-msgstr ""
+msgstr "Adjuta me!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
-msgstr ""
+msgstr "Cercar"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
-msgstr ""
+msgstr "Cercar personas o texto"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
-msgstr ""
+msgstr "Aviso del sito"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
-msgstr ""
+msgstr "Vistas local"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
-msgstr ""
+msgstr "Aviso de pagina"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
-msgstr ""
+msgstr "Navigation secundari del sito"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
-msgstr ""
+msgstr "A proposito"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
-msgstr ""
+msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
-msgstr ""
+msgstr "CdS"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
-msgstr ""
+msgstr "Confidentialitate"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
-msgstr ""
+msgstr "Fonte"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
-msgstr ""
+msgstr "Contacto"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
-msgstr ""
+msgstr "Insignia"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
-msgstr ""
+msgstr "Licentia del software StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 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:778
+#: 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:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
 "s, available under the [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
+"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:794
+#: lib/action.php:801
 msgid "Site content license"
+msgstr "Licentia del contento del sito"
+
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+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 "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:803
+#: lib/action.php:827
 msgid "All "
-msgstr ""
+msgstr "Totes "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
-msgstr ""
+msgstr "licentia."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
-msgstr ""
+msgstr "Pagination"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
-msgstr ""
+msgstr "Post"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
+msgstr "Ante"
+
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
 msgstr ""
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: 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
+msgid "User configuration"
+msgstr "Configuration del usator"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Configuration del accesso"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
+msgstr "Configuration del camminos"
+
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+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 "Modificar application"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Icone pro iste application"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Describe tu application in %d characteres"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Describe tu application"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL de origine"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL del pagina initial de iste application"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organisation responsabile de iste application"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL del pagina initial del organisation"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL verso le qual rediriger post authentication"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Navigator"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Scriptorio"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Typo de application, navigator o scriptorio"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Lectura solmente"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+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
+msgid "Revoke"
+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:182 lib/authenticationplugin.php:187
-#, fuzzy
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
-msgstr "Cambio del contrasigno"
+msgstr "Cambio del contrasigno fallite"
 
-#: lib/authenticationplugin.php:197
-#, fuzzy
+#: lib/authenticationplugin.php:233
 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
@@ -4412,21 +4959,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"
@@ -4453,29 +5001,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
@@ -4484,7 +5032,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"
@@ -4495,9 +5043,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."
@@ -4506,95 +5054,107 @@ 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 lib/command.php:589
+msgid "No such user"
+msgstr "Usator non existe"
 
-#: lib/command.php:554
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
-msgstr ""
+msgstr "Subscribite a %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 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
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
-msgstr ""
+msgstr "Subscription a %s cancellate"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
-msgstr ""
+msgstr "Commando non ancora implementate."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
-msgstr ""
+msgstr "Notification disactivate."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
-msgstr ""
+msgstr "Non pote disactivar notification."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
-msgstr ""
+msgstr "Notification activate."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
-msgstr ""
+msgstr "Non pote activar notification."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
-msgstr ""
+msgstr "Le commando de apertura de session es disactivate"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, 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:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Subscription a %s cancellate"
 
-#: lib/command.php:668
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
-msgstr ""
+msgstr "Tu non es subscribite a alcuno."
 
-#: lib/command.php:670
+#: lib/command.php:711
 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
+#: lib/command.php:731
 msgid "No one is subscribed to you."
-msgstr ""
+msgstr "Necuno es subscribite a te."
 
-#: lib/command.php:692
+#: lib/command.php:733
 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
+#: lib/command.php:753
 msgid "You are not a member of any groups."
-msgstr ""
+msgstr "Tu non es membro de alcun gruppo."
 
-#: lib/command.php:714
+#: lib/command.php:755
 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
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4608,6 +5168,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4634,246 +5195,295 @@ msgid ""
 "tracks - not yet implemented.\n"
 "tracking - not yet implemented.\n"
 msgstr ""
-
-#: lib/common.php:131
+"Commandos:\n"
+"on - activar notificationes\n"
+"off - disactivar notificationes\n"
+"help - monstrar iste adjuta\n"
+"follow <pseudonymo> - 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 <pseudonymo> - cancellar subscription al usator\n"
+"d <pseudonymo> <texto> - diriger message al usator\n"
+"get <pseudonymo> - obtener ultime nota del usator\n"
+"whois <pseudonymo> - obtener info de profilo del usator\n"
+"fav <pseudonymo> - adder ultime nota del usator como favorite\n"
+"fav #<id_de_nota> - adder nota con le ID date como favorite\n"
+"repeat #<id_de_nota> - repeter le nota con le ID date\n"
+"repeat <pseudonymo> - repeter le ultime nota del usator\n"
+"reply #<id_de_nota> - responder al nota con le ID date\n"
+"reply <pseudonymo> - responder al ultime nota del usator\n"
+"join <gruppo> - facer te membro del gruppo\n"
+"login - obtener ligamine pro aperir session al interfacie web\n"
+"drop <gruppo> - quitar gruppo\n"
+"stats - obtener tu statisticas\n"
+"stop - como 'off'\n"
+"quit - como 'off'\n"
+"sub <pseudonymo> - como 'follow'\n"
+"unsub <pseudonymo> - como 'leave'\n"
+"last <pseudonymo> - como 'get'\n"
+"on <pseudonymo> - non ancora implementate.\n"
+"off <pseudonymo> - non ancora implementate.\n"
+"nudge <pseudonymo> - rememorar un usator de scriber alique.\n"
+"invite <numero de telephono> - non ancora implementate.\n"
+"track <parola> - non ancora implementate.\n"
+"untrack <parola> - 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:136
 msgid "No configuration file found. "
-msgstr ""
+msgstr "Nulle file de configuration trovate. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
-msgstr ""
+msgstr "Io cercava files de configuration in le sequente locos: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
-msgstr ""
+msgstr "Considera executar le installator pro reparar isto."
 
-#: lib/common.php:135
+#: lib/common.php:140
 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
+msgid "Connections"
+msgstr "Connexiones"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+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:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
-msgstr ""
+msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, 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
@@ -4891,11 +5501,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
@@ -4911,16 +5533,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
@@ -4934,20 +5566,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
@@ -4964,11 +5604,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
@@ -4988,11 +5639,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
@@ -5014,11 +5679,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
@@ -5034,549 +5716,531 @@ 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
+#: lib/mailbox.php:227 lib/noticelist.php:482
 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 "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 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
+#: lib/noticelist.php:429
 #, 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
+#: lib/noticelist.php:430
 msgid "N"
-msgstr ""
+msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
-msgstr ""
+msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
-msgstr ""
+msgstr "E"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
-msgstr ""
+msgstr "W"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
-msgstr ""
+msgstr "a"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
-msgstr ""
+msgstr "in contexto"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Repetite per"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
-msgstr ""
+msgstr "Responder a iste nota"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
-msgstr ""
+msgstr "Responder"
 
-#: lib/noticelist.php:628
-#, fuzzy
+#: lib/noticelist.php:655
 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:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: 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:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
-msgstr ""
+msgstr "Cassa de entrata"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
-msgstr ""
+msgstr "Tu messages recipite"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
-msgstr ""
+msgstr "Cassa de exito"
 
-#: lib/personalgroupnav.php:130
+#: 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"
 msgstr "Repeter iste nota"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+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 ""
-
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr ""
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr ""
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr ""
+msgstr "Gruppos del quales %s es membro"
 
 #: 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
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
-msgstr ""
+msgstr "Modificar configuration de profilo"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
-msgstr ""
+msgstr "Modificar"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
-msgstr ""
+msgstr "Inviar un message directe a iste usator"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
-msgstr ""
+msgstr "Message"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
-msgstr ""
+msgstr "Moderar"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
-msgstr ""
+msgstr "alcun secundas retro"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
-msgstr ""
+msgstr "circa un minuta retro"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
-msgstr ""
+msgstr "circa %d minutas retro"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
-msgstr ""
+msgstr "circa un hora retro"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
-msgstr ""
+msgstr "circa %d horas retro"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
-msgstr ""
+msgstr "circa un die retro"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
-msgstr ""
+msgstr "circa %d dies retro"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
-msgstr ""
+msgstr "circa un mense retro"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
-msgstr ""
+msgstr "circa %d menses retro"
 
-#: lib/util.php:895
+#: lib/util.php:970
 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."
 
-#: scripts/xmppdaemon.php:301
+#: 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."
index beef92d1242f3780c2eca3e1e9a8aca9e3db12bb..08e4fec9521de844921ac562853ba9f124e80d07 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:31+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:05+0000\n"
 "Language-Team: Icelandic\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
@@ -21,6 +21,64 @@ msgstr ""
 "= 31 && n % 100 != 41 && n % 100 != 51 && n % 100 != 61 && n % 100 != 71 && "
 "n % 100 != 81 && n % 100 != 91);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Samþykkja"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Stillingar fyrir mynd"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Nýskrá"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Friðhelgi"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "Bjóða"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr ""
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Vista"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Stillingar fyrir mynd"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -36,25 +94,29 @@ msgstr "Ekkert þannig merki."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Enginn svoleiðis notandi."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s og vinirnir, síða %d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -95,7 +157,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -106,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr ""
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Færslur frá %1$s og vinum á %2$s!"
@@ -117,23 +179,23 @@ msgstr "Færslur frá %1$s og vinum á %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Aðferð í forritsskilum fannst ekki!"
@@ -148,7 +210,7 @@ msgstr "Aðferð í forritsskilum fannst ekki!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Þessi aðferð krefst POST."
 
@@ -179,8 +241,9 @@ msgstr "Gat ekki vistað persónulega síðu."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -301,11 +364,11 @@ msgstr "Gat ekki uppfært notanda."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Tvo notendakenni eða skjáarnöfn verða að vera uppgefin."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr ""
 
@@ -327,7 +390,8 @@ msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað."
 msgid "Not a valid nickname."
 msgstr "Ekki tækt stuttnefni."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -339,7 +403,8 @@ msgstr "Heimasíða er ekki gild vefslóð."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Lýsing er of löng (í mesta lagi 140 tákn)."
@@ -375,7 +440,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "Aðferð í forritsskilum fannst ekki!"
@@ -419,6 +484,115 @@ msgstr "Hópar %s"
 msgid "groups on %s"
 msgstr "Hópsaðgerðir"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ótæk stærð."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Það kom upp vandamál með setutókann þinn. Vinsamlegast reyndu aftur."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Ótækt notendanafn eða lykilorð."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Villa kom upp í stillingu notanda."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Bjóst ekki við innsendingu eyðublaðs."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Aðgangur"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Stuttnefni"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Lykilorð"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Allt"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Þessi aðferð krefst POST eða DELETE."
@@ -450,17 +624,17 @@ msgstr ""
 msgid "No status with that ID found."
 msgstr "Engin staða með þessu kenni fannst."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Fannst ekki"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -475,7 +649,7 @@ msgstr "Skráarsnið myndar ekki stutt."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Uppáhaldsbabl frá %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s færslur gerðar að uppáhaldsbabli af %s / %s."
@@ -486,7 +660,7 @@ msgstr "%s færslur gerðar að uppáhaldsbabli af %s / %s."
 msgid "%s timeline"
 msgstr "Rás %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!"
@@ -502,27 +676,22 @@ msgstr ""
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s færslur sem svara færslum frá %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 "Almenningsrás %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 færslur frá öllum!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Svör við %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Svör við %s"
@@ -532,7 +701,7 @@ msgstr "Svör við %s"
 msgid "Notices tagged with %s"
 msgstr "Babl merkt með %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 ""
@@ -592,8 +761,8 @@ msgstr "Upphafleg mynd"
 msgid "Preview"
 msgstr "Forsýn"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Eyða"
 
@@ -605,29 +774,6 @@ msgstr "Hlaða upp"
 msgid "Crop"
 msgstr "Skera af"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Það kom upp vandamál með setutókann þinn. Vinsamlegast reyndu aftur."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Bjóst ekki við innsendingu eyðublaðs."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -665,8 +811,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nei"
 
@@ -675,13 +822,13 @@ msgstr "Nei"
 msgid "Do not block this user"
 msgstr "Opna á þennan notanda"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -765,7 +912,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Gat ekki eytt tölvupóstsstaðfestingu."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Staðfesta tölvupóstfang"
 
 #: actions/confirmaddress.php:159
@@ -783,10 +931,54 @@ msgstr ""
 msgid "Notices"
 msgstr "Babl"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Babl hefur enga persónulega síðu"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Þú ert ekki meðlimur í þessum hópi."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Það komu upp vandamál varðandi setutókann þinn."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Ekkert svoleiðis babl."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Gat ekki uppfært hóp."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eyða þessu babli"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -815,7 +1007,7 @@ msgstr "Ertu viss um að þú viljir eyða þessu babli?"
 msgid "Do not delete this notice"
 msgstr ""
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Eyða þessu babli"
 
@@ -953,16 +1145,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Vista"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -975,10 +1157,87 @@ msgstr "Þetta babl er ekki í uppáhaldi!"
 msgid "Add to favorites"
 msgstr "Bæta við sem uppáhaldsbabli"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Ekkert svoleiðis skjal."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Aðrir valkostir"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Ekkert svoleiðis babl."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Notaðu þetta eyðublað til að breyta hópnum."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Sama og lykilorðið hér fyrir ofan. Nauðsynlegt."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Lýsing"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Heimasíða er ekki gild vefslóð."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Staðsetning er of löng (í mesta lagi 255 stafir)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Gat ekki uppfært hóp."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1007,7 +1266,7 @@ msgstr "Lýsing er of löng (í mesta lagi 140 tákn)."
 msgid "Could not update group."
 msgstr "Gat ekki uppfært hóp."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr ""
 
@@ -1049,7 +1308,8 @@ msgstr ""
 "ruslpóstinn þinn!). Þar ættu að vera skilaboð með ítarlegri leiðbeiningum."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Hætta við"
 
@@ -1130,7 +1390,7 @@ msgid "Cannot normalize that email address"
 msgstr "Get ekki staðlað þetta tölvupóstfang"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Ekki tækt tölvupóstfang."
 
@@ -1142,7 +1402,7 @@ msgstr "Þetta er nú þegar tölvupóstfangið þitt."
 msgid "That email address already belongs to another user."
 msgstr "Þetta tölvupóstfang tilheyrir öðrum notanda."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Gat ekki sett inn staðfestingarlykil."
@@ -1204,7 +1464,7 @@ msgstr "Þetta babl er nú þegar í uppáhaldi!"
 msgid "Disfavor favorite"
 msgstr "Ekki lengur í uppáhaldi"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Vinsælt babl"
@@ -1355,7 +1615,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 ""
 
@@ -1448,23 +1708,23 @@ msgstr "Hópmeðlimir %s, síða %d"
 msgid "A list of the users in this group."
 msgstr "Listi yfir notendur í þessum hóp."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1638,6 +1898,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Þetta er ekki Jabber-kennið þitt."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Innhólf %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1720,7 +1985,7 @@ msgstr "Persónuleg skilaboð"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Bættu persónulegum skilaboðum við boðskortið ef þú vilt."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Senda"
 
@@ -1821,7 +2086,7 @@ msgstr "Rangt notendanafn eða lykilorð."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Engin heimild."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Innskráning"
@@ -1830,17 +2095,6 @@ msgstr "Innskráning"
 msgid "Login to site"
 msgstr "Skrá þig inn á síðuna"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Stuttnefni"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Lykilorð"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Muna eftir mér"
@@ -1873,21 +2127,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"
@@ -1896,6 +2150,30 @@ msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s"
 msgid "No current status"
 msgstr "Engin núverandi staða"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Ekkert svoleiðis babl."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Notaðu þetta eyðublað til að búa til nýjan hóp."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Gat ekki búið til uppáhald."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nýr hópur"
@@ -2006,6 +2284,51 @@ msgstr "Ýtt við notanda"
 msgid "Nudge sent!"
 msgstr "Ýtt við notanda!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Þú verður að hafa skráð þig inn til að bæta þér í hóp."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Aðrir valkostir"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Þú ert ekki meðlimur í þessum hópi."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Babl hefur enga persónulega síðu"
@@ -2023,8 +2346,8 @@ msgstr ""
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Enginn stuðningur við gagnasnið."
 
@@ -2037,7 +2360,8 @@ msgid "Notice Search"
 msgstr "Leit í babli"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Aðrar stillingar"
 
 #: actions/othersettings.php:71
@@ -2094,6 +2418,11 @@ msgstr "Ótækt bablinnihald"
 msgid "Login token expired."
 msgstr "Skrá þig inn á síðuna"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Úthólf %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2165,7 +2494,7 @@ msgstr "Get ekki vistað nýja lykilorðið."
 msgid "Password saved."
 msgstr "Lykilorð vistað."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2173,141 +2502,158 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Þessi síða er ekki aðgengileg í "
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Bjóða"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
-msgstr ""
-
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
 #, fuzzy
-msgid "Site path"
-msgstr "Babl vefsíðunnar"
+msgid "Server"
+msgstr "Endurheimta"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+#, fuzzy
+msgid "Site path"
+msgstr "Babl vefsíðunnar"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Mynd"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Stillingar fyrir mynd"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Mynd hefur verið uppfærð."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Endurheimta"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Babl"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Endurheimta"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Babl vefsíðunnar"
@@ -2370,7 +2716,7 @@ msgid "Full name"
 msgstr "Fullt nafn"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Heimasíða"
 
@@ -2396,7 +2742,7 @@ msgstr "Lýsing"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Staðsetning"
@@ -2422,7 +2768,7 @@ msgstr ""
 "Merki fyrir þig (bókstafir, tölustafir, -, ., og _), aðskilin með kommu eða "
 "bili"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Tungumál"
 
@@ -2450,7 +2796,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Lýsingin er of löng (í mesta lagi 140 tákn)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Tímabelti ekki valið."
 
@@ -2463,24 +2809,24 @@ msgstr "Tungumál er of langt (í mesta lagi 50 stafir)."
 msgid "Invalid tag: \"%s\""
 msgstr "Ógilt merki: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Gat ekki uppfært notanda í sjálfvirka áskrift."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Gat ekki vistað merki."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Gat ekki vistað persónulega síðu."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Gat ekki vistað merki."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Stillingar vistaðar."
 
@@ -2502,36 +2848,36 @@ msgstr "Almenningsrás, síða %d"
 msgid "Public timeline"
 msgstr "Almenningsrás"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2540,7 +2886,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2573,7 +2919,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Merkjaský"
 
@@ -2713,7 +3059,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr "Nýskráning tókst"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Nýskrá"
@@ -2754,7 +3100,7 @@ msgid "Same as password above. Required."
 msgstr "Sama og lykilorðið hér fyrir ofan. Nauðsynlegt."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Tölvupóstur"
 
@@ -2859,7 +3205,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Veffang persónulegrar síðu á samvirkandi örbloggsþjónustu"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Gerast áskrifandi"
 
@@ -2904,7 +3250,7 @@ msgstr "Þú getur ekki nýskráð þig nema þú samþykkir leyfið."
 msgid "You already repeated that notice."
 msgstr "Þú hefur nú þegar lokað á þennan notanda."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Í sviðsljósinu"
@@ -2919,6 +3265,11 @@ msgstr ""
 msgid "Replies to %s"
 msgstr "Svör við %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Skilaboð til %1$s á %2$s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2960,6 +3311,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Skilaboð til %1$s á %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Tölfræði"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2969,6 +3325,125 @@ msgstr "Þú getur ekki sent þessum notanda skilaboð."
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Stillingar fyrir mynd"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Þú verður aða hafa skráð þig inn til að ganga úr hóp."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Babl hefur enga persónulega síðu"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Stuttnefni"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Uppröðun"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Lýsing"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Tölfræði"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ertu viss um að þú viljir eyða þessu babli?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Uppáhaldsbabl %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Gat ekki sótt uppáhaldsbabl."
@@ -3018,17 +3493,22 @@ msgstr ""
 msgid "%s group"
 msgstr "%s hópurinn"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Hópmeðlimir %s, síða %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Hópssíðan"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "Vefslóð"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Athugasemd"
 
@@ -3074,10 +3554,6 @@ msgstr "(Ekkert)"
 msgid "All members"
 msgstr "Allir meðlimir"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Tölfræði"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr ""
@@ -3133,6 +3609,11 @@ msgstr "Babl sent inn"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s og vinirnir, síða %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3158,25 +3639,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3185,7 +3666,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3193,7 +3674,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Svör við %s"
@@ -3211,206 +3692,148 @@ msgstr ""
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Ekki tækt tölvupóstfang"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Babl vefsíðunnar"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Nýtt tölvupóstfang til að senda á %s"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Staðbundin sýn"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "Tungumál (ákjósanlegt)"
 
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "Vefslóð"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Endurheimta"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Samþykkja"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Friðhelgi"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Bjóða"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr ""
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Stillingar fyrir mynd"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3515,15 +3938,26 @@ msgstr "Enginn lykill sleginn inn"
 msgid "You are not subscribed to that profile."
 msgstr "Þú ert ekki áskrifandi."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Gat ekki vistað áskrift."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Ekki staðbundinn notandi."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Ekkert svoleiðis babl."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Þú ert ekki áskrifandi."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Þú ert nú í áskrift"
 
@@ -3583,7 +4017,7 @@ msgstr "Þetta er fólkið sem þú hlustar á bablið í."
 msgid "These are the people whose notices %s listens to."
 msgstr "Þetta er fólkið sem %s hlustar á bablið í."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3593,19 +4027,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber snarskilaboðaþjónusta"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Notendur sjálfmerktir með %s - síða %d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3635,7 +4074,8 @@ msgstr "Merki %s"
 msgid "User profile"
 msgstr "Persónuleg síða notanda"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Ljósmynd"
 
@@ -3699,7 +4139,7 @@ msgstr "Ekkert einkenni persónulegrar síðu í beiðni."
 msgid "Unsubscribed"
 msgstr "Ekki lengur áskrifandi"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3714,91 +4154,71 @@ msgstr "Notandi"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Persónuleg síða"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "Bjóða nýjum notendum að vera með"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Allar áskriftir"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Gerast sjálfkrafa áskrifandi að hverjum þeim sem gerist áskrifandi að þér "
 "(best fyrir ómannlega notendur)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Boðskort hefur verið sent út"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Boðskort hefur verið sent út"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Heimila áskriftir"
@@ -3814,36 +4234,36 @@ msgstr ""
 "gerast áskrifandi að babli þessa notanda. Ef þú baðst ekki um að gerast "
 "áskrifandi að babli, smelltu þá á \"Hætta við\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Samþykkja"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Gerast áskrifandi að þessum notanda"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Hafna"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr ""
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Engin heimildarbeiðni!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Áskrift heimiluð"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3854,11 +4274,11 @@ msgstr ""
 "leiðbeiningar síðunnar um það hvernig á að heimila áskrift. Áskriftartókinn "
 "þinn er;"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Áskrift hafnað"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3868,37 +4288,37 @@ msgstr ""
 "Áskriftinni hefur verið hafnað en afturkallsveffang var ekki sent. Athugaðu "
 "leiðbeiningar síðunnar um það hvernig á að hafna áskrift alveg."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Get ekki lesið slóðina fyrir myndina '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Röng gerð myndar fyrir '%s'"
@@ -3917,6 +4337,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Hópmeðlimir %s, síða %d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3943,11 +4368,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Tölfræði"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3979,12 +4399,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Stuttnefni"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Persónulegt"
@@ -3993,10 +4408,6 @@ msgstr "Persónulegt"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Lýsing"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4047,60 +4458,87 @@ msgstr "Gat ekki skeytt skilaboðum inn í."
 msgid "Could not update message with new URI."
 msgstr "Gat ekki uppfært skilaboð með nýju veffangi."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Gat ekki vistað babl. Óþekktur notandi."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Of mikið babl í einu; slakaðu aðeins á og haltu svo áfram eftir nokkrar "
 "mínútur."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Það hefur verið lagt bann við babli frá þér á þessari síðu."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Vandamál komu upp við að vista babl."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Gagnagrunnsvilla við innsetningu svars: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Vandamál komu upp við að vista babl."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "Þessi notandi hefur bannað þér að gerast áskrifandi"
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Notandinn hefur lokað á þig."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Ekki í áskrift!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Gat ekki eytt áskrift."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Gat ekki eytt áskrift."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Gat ekki búið til hóp."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Gat ekki skráð hópmeðlimi."
 
@@ -4141,132 +4579,128 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Ónafngreind síða"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Stikl aðalsíðu"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Heim"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Persónuleg síða og vinarás"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Aðgangur"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 "Breyttu tölvupóstinum þínum, einkennismyndinni þinni, lykilorðinu þínu, "
 "persónulegu síðunni þinni"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Tengjast"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Gat ekki framsent til vefþjóns: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Stikl aðalsíðu"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Bjóða"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Bjóða vinum og vandamönnum að slást í hópinn á %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Útskráning"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Skrá þig út af síðunni"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Búa til aðgang"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Skrá þig inn á síðuna"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hjálp"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Hjálp!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Leita"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Leita að fólki eða texta"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Babl vefsíðunnar"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Staðbundin sýn"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Babl síðunnar"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Stikl undirsíðu"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Um"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Spurt og svarað"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Friðhelgi"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Frumþula"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Tengiliður"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Hugbúnaðarleyfi StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4275,12 +4709,12 @@ msgstr ""
 "**%%site.name%%** er örbloggsþjónusta í boði [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er örbloggsþjónusta."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4291,34 +4725,56 @@ msgstr ""
 "sem er gefinn út undir [GNU Affero almenningsleyfinu](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "Hugbúnaðarleyfi StatusNet"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Allt "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "leyfi."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Uppröðun"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Eftir"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Áður"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Það komu upp vandamál varðandi setutókann þinn."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4354,11 +4810,105 @@ msgstr "Staðfesting tölvupóstfangs"
 msgid "Design configuration"
 msgstr "SMS staðfesting"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS staðfesting"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS staðfesting"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS staðfesting"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS staðfesting"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Frumþula"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "Vefslóð vefsíðu hópsins eða umfjöllunarefnisins"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "Vefslóð vefsíðu hópsins eða umfjöllunarefnisins"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Fjarlægja"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4379,12 +4929,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Lykilorðabreyting"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Lykilorðabreyting"
@@ -4538,83 +5088,92 @@ msgstr "Vandamál komu upp við að vista babl."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Tilgreindu nafn notandans sem þú vilt gerast áskrifandi að"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Enginn svoleiðis notandi."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Nú ert þú áskrifandi að %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Tilgreindu nafn notandans sem þú vilt hætta sem áskrifandi að"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Nú ert þú ekki lengur áskrifandi að %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Skipun hefur ekki verið fullbúin"
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Tilkynningar af."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Get ekki slökkt á tilkynningum."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Tilkynningar á."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Get ekki kveikt á tilkynningum."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Nú ert þú ekki lengur áskrifandi að %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Þú ert ekki áskrifandi."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Þú ert nú þegar í áskrift að þessum notendum:"
 msgstr[1] "Þú ert nú þegar í áskrift að þessum notendum:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Gat ekki leyft öðrum að gerast áskrifandi að þér."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Gat ekki leyft öðrum að gerast áskrifandi að þér."
 msgstr[1] "Gat ekki leyft öðrum að gerast áskrifandi að þér."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Þú ert ekki meðlimur í þessum hópi."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Þú ert ekki meðlimur í þessum hópi."
 msgstr[1] "Þú ert ekki meðlimur í þessum hópi."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4628,6 +5187,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4655,20 +5215,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Enginn staðfestingarlykill."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "Skrá þig inn á síðuna"
@@ -4685,6 +5245,15 @@ msgstr "Færslur sendar með snarskilaboðaþjónustu (instant messaging)"
 msgid "Updates by SMS"
 msgstr "Færslur sendar með SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Tengjast"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4871,12 +5440,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5081,7 +5650,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr "frá"
@@ -5200,59 +5769,55 @@ msgid "Do not share my location"
 msgstr "Gat ekki vistað merki."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "Nei"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Í sviðsljósinu"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Svara þessu babli"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Svara"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Babl sent inn"
@@ -5286,12 +5851,7 @@ msgstr "Villa kom upp við að setja inn persónulega fjarsíðu"
 msgid "Duplicate notice"
 msgstr "Eyða babli"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Þessi notandi hefur bannað þér að gerast áskrifandi"
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Gat ekki sett inn nýja áskrift."
 
@@ -5307,19 +5867,19 @@ msgstr "Svör"
 msgid "Favorites"
 msgstr "Uppáhald"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Innhólf"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Mótteknu skilaboðin þín"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Úthólf"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Skilaboð sem þú hefur sent"
 
@@ -5400,6 +5960,10 @@ msgstr "Svara þessu babli"
 msgid "Repeat this notice"
 msgstr "Svara þessu babli"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5471,36 +6035,6 @@ msgstr "Fólk sem eru áskrifendur að %s"
 msgid "Groups %s is a member of"
 msgstr "Hópar sem %s er meðlimur í"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Notandinn hefur lokað á þig."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Gat ekki farið í áskrift."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Gat ekki leyft öðrum að gerast áskrifandi að þér."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Ekki í áskrift!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Gat ekki eytt áskrift."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Gat ekki eytt áskrift."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5553,67 +6087,67 @@ msgstr ""
 msgid "User actions"
 msgstr "Notandaaðgerðir"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr ""
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Senda bein skilaboð til þessa notanda"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Skilaboð"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "fyrir nokkrum sekúndum"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "fyrir um einni mínútu síðan"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "fyrir um %d mínútum síðan"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "fyrir um einum klukkutíma síðan"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "fyrir um %d klukkutímum síðan"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "fyrir um einum degi síðan"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "fyrir um %d dögum síðan"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "fyrir um einum mánuði síðan"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "fyrir um %d mánuðum síðan"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "fyrir um einu ári síðan"
 
@@ -5627,7 +6161,7 @@ msgstr ""
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Skilaboð eru of löng - 140 tákn eru í mesta lagi leyfð en þú sendir %d"
index 81c1d1fe7c4261c24c80da1c95f58b27dffcc5c4..7e3d7998a12cbdbc8483a5ac292c1b5e8e452b93 100644 (file)
@@ -9,17 +9,71 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:34+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:09+0000\n"
 "Language-Team: Italian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Accesso"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Impostazioni di accesso al sito"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registrazione"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privato"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Proibire agli utenti anonimi (che non hanno effettuato l'accesso) di vedere "
+"il sito?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Solo invito"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Rende la registrazione solo su invito"
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Chiuso"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Disabilita la creazione di nuovi account"
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Salva"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Salva impostazioni di accesso"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +88,29 @@ msgstr "Pagina inesistente."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Utente inesistente."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s e amici, pagina %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -100,7 +158,7 @@ msgstr ""
 "qualche cosa alla sua attenzione](%%%%action.newnotice%%%%?status_textarea=%3"
 "$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -113,8 +171,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Tu e i tuoi amici"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Messaggi da %1$s e amici su %2$s!"
@@ -124,23 +182,23 @@ msgstr "Messaggi da %1$s e amici su %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Metodo delle API non trovato."
 
@@ -154,7 +212,7 @@ msgstr "Metodo delle API non trovato."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Questo metodo richiede POST."
 
@@ -185,8 +243,9 @@ msgstr "Impossibile salvare il profilo."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -302,11 +361,11 @@ msgstr "Non puoi non seguirti."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Devono essere forniti due ID utente o nominativi."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Impossibile determinare l'utente sorgente."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Impossibile trovare l'utente destinazione."
 
@@ -330,7 +389,8 @@ msgstr "Soprannome già in uso. Prova con un altro."
 msgid "Not a valid nickname."
 msgstr "Non è un soprannome valido."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -342,7 +402,8 @@ msgstr "L'indirizzo della pagina web non è valido."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nome troppo lungo (max 255 caratteri)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "La descrizione è troppo lunga (max %d caratteri)."
@@ -378,7 +439,7 @@ msgstr "L'alias non può essere lo stesso del soprannome."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Gruppo non trovato!"
 
@@ -419,6 +480,116 @@ msgstr "Gruppi di %s"
 msgid "groups on %s"
 msgstr "Gruppi su %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Nessun parametro oauth_token fornito."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Token non valido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Si è verificato un problema con il tuo token di sessione. Prova di nuovo."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Nome utente o password non valido."
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Errore nel database nell'eliminare l'applicazione utente OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Errore nel database nell'inserire l'applicazione utente OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Il token di richiesta %s è stato autorizzato. Scambiarlo con un token di "
+"accesso."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+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
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Invio del modulo inaspettato."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Un'applicazione vorrebbe collegarsi al tuo account"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Consenti o nega l'accesso"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"L'applicazione <strong>%1$s</strong> di <strong>%2$s</strong> vorrebbe poter "
+"<strong>%3$s</strong> ai dati del tuo account %4$s. È consigliato fornire "
+"accesso al proprio account %4$s solo ad applicazioni di cui ci si può fidare."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Account"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Soprannome"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Password"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Nega"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Consenti"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Consenti o nega l'accesso alle informazioni del tuo account."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Questo metodo richiede POST o DELETE."
@@ -446,19 +617,19 @@ msgstr "Messaggio eliminato."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
-msgstr "Nessun stato trovato con quel ID."
+msgstr "Nessuno stato trovato con quel ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Troppo lungo. Lunghezza massima %d caratteri."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Non trovato"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -473,7 +644,7 @@ msgstr "Formato non supportato."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s / Preferiti da %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 aggiornamenti preferiti da %2$s / %3$s"
@@ -484,7 +655,7 @@ msgstr "%1$s aggiornamenti preferiti da %2$s / %3$s"
 msgid "%s timeline"
 msgstr "Attività di %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!"
@@ -500,27 +671,22 @@ msgstr "%1$s / Messaggi che citano %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s messaggi in risposta a quelli da %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 "Attività pubblica di %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 "Aggiornamenti di %s da tutti!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Ripetuto da %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Ripetuto a %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Ripetizioni di %s"
@@ -530,7 +696,7 @@ msgstr "Ripetizioni di %s"
 msgid "Notices tagged with %s"
 msgstr "Messaggi etichettati con %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 "Messaggi etichettati con %1$s su %2$s!"
@@ -591,8 +757,8 @@ msgstr "Originale"
 msgid "Preview"
 msgstr "Anteprima"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Elimina"
 
@@ -604,30 +770,6 @@ msgstr "Carica"
 msgid "Crop"
 msgstr "Ritaglia"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Si è verificato un problema con il tuo token di sessione. Prova di nuovo."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Invio del modulo inaspettato."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Scegli un'area quadrata per la tua immagine personale"
@@ -666,8 +808,9 @@ msgstr ""
 "tuoi messaggi, non potrà più abbonarsi e non riceverai notifica delle @-"
 "risposte che ti invierà."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -675,13 +818,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "Non bloccare questo utente"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -764,7 +907,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Impossibile eliminare l'email di conferma."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Conferma indirizzo"
 
 #: actions/confirmaddress.php:159
@@ -781,10 +924,50 @@ msgstr "Conversazione"
 msgid "Notices"
 msgstr "Messaggi"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Devi eseguire l'accesso per eliminare un'applicazione."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Applicazione non trovata."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Questa applicazione non è di tua proprietà."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+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
+msgid "Delete application"
+msgstr "Elimina applicazione"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Vuoi eliminare questa applicazione? Questa azione eliminerà tutti i dati "
+"riguardo all'applicazione dal database, comprese tutte le connessioni utente."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Non eliminare l'applicazione"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -815,7 +998,7 @@ msgstr "Vuoi eliminare questo messaggio?"
 msgid "Do not delete this notice"
 msgstr "Non eliminare il messaggio"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Elimina questo messaggio"
 
@@ -947,16 +1130,6 @@ msgstr "Ripristina i valori predefiniti"
 msgid "Reset back to default"
 msgstr "Reimposta i valori predefiniti"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Salva"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Salva aspetto"
@@ -969,9 +1142,75 @@ msgstr "Questo messaggio non è un preferito!"
 msgid "Add to favorites"
 msgstr "Aggiungi ai preferiti"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Nessun documento."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Nessun documento \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Modifica applicazione"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Devi eseguire l'accesso per modificare un'applicazione."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Nessuna applicazione."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Usa questo modulo per modificare la tua applicazione."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Il nome è richiesto."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Il nome è troppo lungo (max 255 caratteri)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Nome già in uso. Prova con un altro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "La descrizione è richiesta."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "L'URL sorgente è troppo lungo."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "L'URL sorgente non è valido."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "L'organizzazione è richiesta."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "L'organizzazione è troppo lunga (max 255 caratteri)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Il sito web dell'organizzazione è richiesto."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Il callback è troppo lungo."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "L'URL di callback non è valido."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Impossibile aggiornare l'applicazione."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -1000,7 +1239,7 @@ msgstr "La descrizione è troppo lunga (max %d caratteri)."
 msgid "Could not update group."
 msgstr "Impossibile aggiornare il gruppo."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Impossibile creare gli alias."
 
@@ -1042,7 +1281,8 @@ msgstr ""
 "istruzioni."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Annulla"
 
@@ -1125,7 +1365,7 @@ msgid "Cannot normalize that email address"
 msgstr "Impossibile normalizzare quell'indirizzo email"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Non è un indirizzo email valido."
 
@@ -1137,7 +1377,7 @@ msgstr "Quello è già il tuo indirizzo email."
 msgid "That email address already belongs to another user."
 msgstr "Quell'indirizzo email appartiene già a un altro utente."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Impossibile inserire il codice di conferma."
@@ -1199,7 +1439,7 @@ msgstr "Questo messaggio è già un preferito!"
 msgid "Disfavor favorite"
 msgstr "Rimuovi preferito"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Messaggi famosi"
@@ -1347,7 +1587,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"
 
@@ -1445,23 +1685,23 @@ msgstr "Membri del gruppo %1$s, pagina %2$d"
 msgid "A list of the users in this group."
 msgstr "Un elenco degli utenti in questo gruppo."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1642,6 +1882,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Quello non è il tuo ID di Jabber."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Casella posta in arrivo di %s - pagina %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1724,7 +1969,7 @@ msgstr "Messaggio personale"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Puoi aggiungere un messaggio personale agli inviti."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Invia"
 
@@ -1824,7 +2069,7 @@ msgstr "Nome utente o password non corretto."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Errore nell'impostare l'utente. Forse non hai l'autorizzazione."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Accedi"
@@ -1833,17 +2078,6 @@ msgstr "Accedi"
 msgid "Login to site"
 msgstr "Accedi al sito"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Soprannome"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Password"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Ricordami"
@@ -1873,22 +2107,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"
@@ -1897,6 +2131,26 @@ msgstr "Impossibile rendere %1$s un amministratore del gruppo %2$s"
 msgid "No current status"
 msgstr "Nessun messaggio corrente"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nuova applicazione"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Devi eseguire l'accesso per registrare un'applicazione."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Usa questo modulo per registrare un'applicazione."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "L'URL sorgente è richiesto."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Impossibile creare l'applicazione."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nuovo gruppo"
@@ -1962,7 +2216,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"
 
@@ -2009,6 +2263,50 @@ msgstr "Richiamo inviato"
 msgid "Nudge sent!"
 msgstr "Richiamo inviato!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Devi eseguire l'accesso per poter elencare le tue applicazioni."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Applicazioni OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Applicazioni che hai registrato"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Non hai ancora registrato alcuna applicazione."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Applicazioni collegate"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Hai consentito alle seguenti applicazioni di accedere al tuo account."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Non sei un utente di quella applicazione."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+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 "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"
 msgstr "Il messaggio non ha un profilo"
@@ -2026,8 +2324,8 @@ msgstr "tipo di contenuto "
 msgid "Only "
 msgstr "Solo "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Non è un formato di dati supportato."
 
@@ -2040,7 +2338,7 @@ msgid "Notice Search"
 msgstr "Cerca messaggi"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Altre impostazioni"
 
 #: actions/othersettings.php:71
@@ -2072,30 +2370,30 @@ 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
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Casella posta inviata di %s - pagina %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2168,7 +2466,7 @@ msgstr "Impossibile salvare la nuova password."
 msgid "Password saved."
 msgstr "Password salvata."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Percorsi"
 
@@ -2176,132 +2474,148 @@ msgstr "Percorsi"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Percorso e impostazioni server per questo sito StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Directory del tema non leggibile: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Directory delle immagini degli utenti non scrivibile: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Directory degli sfondi non scrivibile: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Directory delle localizzazioni non leggibile: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Server SSL non valido. La lunghezza massima è di 255 caratteri."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Sito"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Server"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nome host del server"
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Percorso"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Percorso del sito"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Percorso alle localizzazioni"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Percorso della directory alle localizzazioni"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "URL semplici"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Usare gli URL semplici (più leggibili e facili da ricordare)?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Tema"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Server del tema"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Percorso del tema"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Directory del tema"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Immagini"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Server dell'immagine"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Percorso dell'immagine"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Directory dell'immagine"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Sfondi"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Server dello sfondo"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Percorso dello sfondo"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Directory dello sfondo"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Mai"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Qualche volta"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Sempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Usa SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Quando usare SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Server SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Server a cui dirigere le richieste SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Salva percorsi"
 
@@ -2366,7 +2680,7 @@ msgid "Full name"
 msgstr "Nome"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Pagina web"
 
@@ -2389,7 +2703,7 @@ msgstr "Biografia"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Ubicazione"
@@ -2414,7 +2728,7 @@ msgid ""
 msgstr ""
 "Le tue etichette (lettere, numeri, -, . e _), separate da virgole o spazi"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Lingua"
 
@@ -2442,7 +2756,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "La biografia è troppo lunga (max %d caratteri)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Fuso orario non selezionato"
 
@@ -2455,23 +2769,23 @@ msgstr "La lingua è troppo lunga (max 50 caratteri)."
 msgid "Invalid tag: \"%s\""
 msgstr "Etichetta non valida: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Impossibile aggiornare l'utente per auto-abbonarsi."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Impossibile salvare le preferenze della posizione."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Impossibile salvare il profilo."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Impossibile salvare le etichette."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Impostazioni salvate."
 
@@ -2493,19 +2807,19 @@ msgstr "Attività pubblica, pagina %d"
 msgid "Public timeline"
 msgstr "Attività pubblica"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Feed dell'attività pubblica (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Feed dell'attività pubblica (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Feed dell'attività pubblica (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2514,18 +2828,18 @@ msgstr ""
 "Questa è l'attività pubblica di %%site.name%%, ma nessuno ha ancora scritto "
 "qualche cosa."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Fallo tu!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 "Perché non [crei un account](%%action.register%%) e scrivi qualche cosa!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2538,7 +2852,7 @@ msgstr ""
 "net/). [Registrati](%%action.register%%) per condividere messaggi con i tuoi "
 "amici, i tuoi familiari e colleghi! ([Maggiori informazioni](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2574,7 +2888,7 @@ msgid ""
 "one!"
 msgstr "Perché non [crei un accout](%%action.register%%) e ne scrivi uno tu!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Insieme delle etichette"
 
@@ -2715,7 +3029,7 @@ msgstr "Codice di invito non valido."
 msgid "Registration successful"
 msgstr "Registrazione riuscita"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registra"
@@ -2759,7 +3073,7 @@ msgid "Same as password above. Required."
 msgstr "Stessa password di sopra; richiesta"
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Email"
 
@@ -2866,7 +3180,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL del tuo profilo su un altro servizio di microblog compatibile"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Abbonati"
 
@@ -2904,7 +3218,7 @@ msgstr "Non puoi ripetere i tuoi stessi messaggi."
 msgid "You already repeated that notice."
 msgstr "Hai già ripetuto quel messaggio."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Ripetuti"
 
@@ -2918,6 +3232,11 @@ msgstr "Ripetuti!"
 msgid "Replies to %s"
 msgstr "Risposte a %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Risposte a %1$s, pagina %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2965,6 +3284,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Risposte a %1$s su %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Non puoi mettere in \"sandbox\" gli utenti su questo sito."
@@ -2973,6 +3296,121 @@ msgstr "Non puoi mettere in \"sandbox\" gli utenti su questo sito."
 msgid "User is already sandboxed."
 msgstr "L'utente è già nella \"sandbox\"."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessioni"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Impostazioni di sessione per questo sito di StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gestione sessioni"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Indica se gestire autonomamente le sessioni"
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Debug delle sessioni"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Abilita il debug per le sessioni"
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Salva impostazioni"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Devi eseguire l'accesso per visualizzare un'applicazione."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Profilo applicazione"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Icona"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nome"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organizzazione"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Descrizione"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistiche"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "creata da %1$s - %2$s accessi predefiniti - %3$d utenti"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Azioni applicazione"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Reimposta chiave e segreto"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Informazioni applicazione"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Chiave consumatore"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Segreto consumatore"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL token di richiesta"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL token di accesso"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+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
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ripristinare la chiave e il segreto?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Messaggi preferiti di %1$s, pagina %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Impossibile recuperare i messaggi preferiti."
@@ -3027,19 +3465,24 @@ msgstr "Questo è un modo per condividere ciò che ti piace."
 #: actions/showgroup.php:82 lib/groupnav.php:86
 #, php-format
 msgid "%s group"
-msgstr "Gruppi di %s"
+msgstr "Gruppo %s"
+
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Gruppi di %1$s, pagina %2$d"
 
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Profilo del gruppo"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Nota"
 
@@ -3085,10 +3528,6 @@ msgstr "(nessuno)"
 msgid "All members"
 msgstr "Tutti i membri"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistiche"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Creato"
@@ -3152,6 +3591,11 @@ msgstr "Messaggio eliminato."
 msgid " tagged %s"
 msgstr " etichettati con %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, pagina %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3177,12 +3621,12 @@ msgstr "Feed dei messaggi per %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF per %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Questa è l'attività di %1$s, ma %2$s non ha ancora scritto nulla."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3190,7 +3634,7 @@ msgstr ""
 "Visto niente di interessante? Non hai scritto ancora alcun messaggio, questo "
 "potrebbe essere un buon momento per iniziare! :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3199,7 +3643,7 @@ msgstr ""
 "Puoi provare a richiamare %1$s o [scrivere qualche cosa che attiri la sua "
 "attenzione](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3213,7 +3657,7 @@ msgstr ""
 "i messaggi di **%s** e di molti altri! ([Maggiori informazioni](%%%%doc.help%"
 "%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3224,7 +3668,7 @@ msgstr ""
 "it.wikipedia.org/wiki/Microblogging) basato sul software libero [StatusNet]"
 "(http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Ripetizione di %s"
@@ -3241,199 +3685,145 @@ msgstr "L'utente è già stato zittito."
 msgid "Basic settings for this StatusNet site."
 msgstr "Impostazioni di base per questo sito StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Il nome del sito non deve avere lunghezza parti a zero."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Devi avere un'email di contatto valida."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Lingua \"%s\" sconosciuta."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "URL di segnalazione snapshot non valido."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Valore di esecuzione dello snapshot non valido."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "La frequenza degli snapshot deve essere un numero."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Il limite minimo del testo è di 140 caratteri."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Il limite per i duplicati deve essere di 1 o più secondi."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Generale"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nome del sito"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Il nome del tuo sito, topo \"Acme Microblog\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Offerto da"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Testo usato per i crediti nel piè di pagina di ogni pagina"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL per offerto da"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL usato per i crediti nel piè di pagina di ogni pagina"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Indirizzo email di contatto per il sito"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Locale"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Fuso orario predefinito"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Fuso orario predefinito; tipicamente UTC"
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Lingua predefinita"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Server"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nome host del server"
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "URL semplici"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Usare gli URL semplici (più leggibili e facili da ricordare)?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Accesso"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privato"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Proibire agli utenti anonimi (che non hanno effettuato l'accesso) di vedere "
-"il sito?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Solo invito"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Rende la registrazione solo su invito"
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Chiuso"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Disabilita la creazione di nuovi account"
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Snapshot"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "A caso quando avviene un web hit"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "In un job pianificato"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Snapshot dei dati"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Quando inviare dati statistici a status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequenza"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Gli snapshot verranno inviati ogni N web hit"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL per la segnalazione"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Gli snapshot verranno inviati a questo URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limiti"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Limiti del testo"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Numero massimo di caratteri per messaggo"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Limite duplicati"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Quanto tempo gli utenti devono attendere (in secondi) prima di inviare "
 "nuovamente lo stesso messaggio"
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Salva impostazioni"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Impostazioni SMS"
@@ -3537,15 +3927,26 @@ msgstr "Nessun codice inserito"
 msgid "You are not subscribed to that profile."
 msgstr "Non hai una abbonamento a quel profilo."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Impossibile salvare l'abbonamento."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Non un utente locale."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Nessun file."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Non hai una abbonamento a quel profilo."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Abbonati"
 
@@ -3609,7 +4010,7 @@ msgstr "Queste sono le persone che stai seguendo."
 msgid "These are the people whose notices %s listens to."
 msgstr "Queste sono le persone seguite da %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3624,19 +4025,24 @@ msgstr ""
 "[usi Twitter](%%action.twittersettings%%), puoi abbonarti automaticamente "
 "alle persone che già seguivi lì."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s non sta seguendo nessuno."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Messaggi etichettati con %1$s, pagina %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3665,7 +4071,8 @@ msgstr "Etichetta %s"
 msgid "User profile"
 msgstr "Profilo utente"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Fotografia"
 
@@ -3726,7 +4133,7 @@ msgstr "Nessun ID di profilo nella richiesta."
 msgid "Unsubscribed"
 msgstr "Abbonamento annullato"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3743,85 +4150,65 @@ msgstr "Utente"
 msgid "User settings for this StatusNet site."
 msgstr "Impostazioni utente per questo sito StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Limite per la biografia non valido. Deve essere numerico."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 "Testo di benvenuto non valido. La lunghezza massima è di 255 caratteri."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Abbonamento predefinito non valido: \"%1$s\" non è un utente."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profilo"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Limite biografia"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Lunghezza massima in caratteri della biografia"
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nuovi utenti"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Messaggio per nuovi utenti"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Messaggio di benvenuto per nuovi utenti (max 255 caratteri)"
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Abbonamento predefinito"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Abbonare automaticamente i nuovi utenti a questo utente"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Inviti"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Inviti abilitati"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Indica se consentire agli utenti di invitarne di nuovi"
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessioni"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Gestione sessioni"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Indica se gestire autonomamente le sessioni"
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Debug delle sessioni"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Abilita il debug per le sessioni"
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizza abbonamento"
@@ -3835,36 +4222,36 @@ msgstr ""
 "Controlla i dettagli seguenti per essere sicuro di volerti abbonare ai "
 "messaggi di questo utente. Se non hai richiesto ciò, fai clic su \"Rifiuta\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licenza"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Accetta"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Abbonati a questo utente"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Rifiuta"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Rifiuta questo abbonamento"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Nessuna richiesta di autorizzazione!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Abbonamento autorizzato"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3874,11 +4261,11 @@ msgstr ""
 "richiamo. Controlla le istruzioni del sito per i dettagli su come "
 "autorizzare l'abbonamento. Il tuo token per l'abbonamento è:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Abbonamento rifiutato"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3888,37 +4275,37 @@ msgstr ""
 "richiamo. Controlla le istruzioni del sito per i dettagli su come rifiutare "
 "completamente l'abbonamento."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "URL \"%s\" dell'ascoltatore non trovato qui."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "L'URI \"%s\" di colui che si ascolta è troppo lungo."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "L'URI \"%s\" di colui che si ascolta è un utente locale."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "L'URL \"%s\" del profilo è per un utente locale."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "L'URL \"%s\" dell'immagine non è valido."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Impossibile leggere l'URL \"%s\" dell'immagine."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Tipo di immagine errata per l'URL \"%s\"."
@@ -3939,6 +4326,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Gustati il tuo hotdog!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Gruppi di %1$s, pagina %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Cerca altri gruppi"
@@ -3967,10 +4359,6 @@ msgstr ""
 "Questo sito esegue il software %1$s versione %2$s, Copyright 2008-2010 "
 "StatusNet, Inc. e collaboratori."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Collaboratori"
@@ -4012,11 +4400,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Plugin"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Nome"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Versione"
 
@@ -4024,10 +4408,6 @@ msgstr "Versione"
 msgid "Author(s)"
 msgstr "Autori"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Descrizione"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4050,19 +4430,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
@@ -4081,27 +4458,27 @@ msgstr "Impossibile inserire il messaggio."
 msgid "Could not update message with new URI."
 msgstr "Impossibile aggiornare il messaggio con il nuovo URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Errore del DB nell'inserire un hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problema nel salvare il messaggio. Troppo lungo."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problema nel salvare il messaggio. Utente sconosciuto."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Troppi messaggi troppo velocemente; fai una pausa e scrivi di nuovo tra "
 "qualche minuto."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4109,34 +4486,57 @@ msgstr ""
 "Troppi messaggi duplicati troppo velocemente; fai una pausa e scrivi di "
 "nuovo tra qualche minuto."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Ti è proibito inviare messaggi su questo sito."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problema nel salvare il messaggio."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Errore del DB nell'inserire la risposta: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problema nel salvare la casella della posta del gruppo."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Non ti è possibile abbonarti."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Hai già l'abbonamento!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "L'utente non ti consente di seguirlo."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Non hai l'abbonamento!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Impossibile eliminare l'auto-abbonamento."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Impossibile eliminare l'abbonamento."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Benvenuti su %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Impossibile creare il gruppo."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Impossibile impostare la membership al gruppo."
 
@@ -4169,7 +4569,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"
 
@@ -4177,128 +4577,124 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr "Pagina senza nome"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Esplorazione sito primaria"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Home"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Profilo personale e attività degli amici"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Account"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Modifica la tua email, immagine, password o il tuo profilo"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Connetti"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Connettiti con altri servizi"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Modifica la configurazione del sito"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invita"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Invita amici e colleghi a seguirti su %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Esci"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Termina la tua sessione sul sito"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Crea un account"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Accedi al sito"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Aiuto"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Aiutami!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Cerca"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Cerca persone o del testo"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Messaggio del sito"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Viste locali"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Pagina messaggio"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Esplorazione secondaria del sito"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Informazioni"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Sorgenti"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contatti"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Badge"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licenza del software StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4307,12 +4703,12 @@ msgstr ""
 "**%%site.name%%** è un servizio di microblog offerto da [%%site.broughtby%%]"
 "(%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** è un servizio di microblog. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4323,33 +4719,58 @@ msgstr ""
 "s, disponibile nei termini della licenza [GNU Affero General Public License]"
 "(http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licenza del contenuto del sito"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+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:827
 msgid "All "
 msgstr "Tutti "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licenza."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginazione"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Successivi"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Precedenti"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Si è verificato un problema con il tuo token di sessione."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4379,10 +4800,101 @@ msgstr "Configurazione di base"
 msgid "Design configuration"
 msgstr "Configurazione aspetto"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Configurazione utente"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Configurazione di accesso"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Configurazione percorsi"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+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 "Modifica applicazione"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Icona per questa applicazione"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Descrivi l'applicazione in %d caratteri"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Descrivi l'applicazione"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL sorgente"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL della pagina web di questa applicazione"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organizzazione responsabile per questa applicazione"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL della pagina web dell'organizzazione"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL verso cui redirigere dopo l'autenticazione"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Browser"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Desktop"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Tipo di applicazione, browser o desktop"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Sola lettura"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+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
+msgid "Revoke"
+msgstr "Revoca"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Allegati"
@@ -4403,11 +4915,11 @@ msgstr "Messaggi in cui appare questo allegato"
 msgid "Tags for this attachment"
 msgstr "Etichette per questo allegato"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Modifica della password non riuscita"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "La modifica della password non è permessa"
 
@@ -4558,82 +5070,92 @@ msgstr "Errore nel salvare il messaggio."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Specifica il nome dell'utente a cui abbonarti."
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Utente inesistente."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Abbonati a %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Specifica il nome dell'utente da cui annullare l'abbonamento."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Abbonamento a %s annullato"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Comando non ancora implementato."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notifiche disattivate."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Impossibile disattivare le notifiche."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notifiche attivate."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Impossibile attivare le notifiche."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Il comando di accesso è disabilitato"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Questo collegamento è utilizzabile una sola volta ed è valido solo per 2 "
 "minuti: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Abbonamento a %s annullato"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Il tuo abbonamento è stato annullato."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Persona di cui hai già un abbonamento:"
 msgstr[1] "Persone di cui hai già un abbonamento:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Nessuno è abbonato ai tuoi messaggi."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Questa persona è abbonata ai tuoi messaggi:"
 msgstr[1] "Queste persone sono abbonate ai tuoi messaggi:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Non fai parte di alcun gruppo."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Non fai parte di questo gruppo:"
 msgstr[1] "Non fai parte di questi gruppi:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4647,6 +5169,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4713,21 +5236,21 @@ msgstr ""
 "tracks - non ancora implementato\n"
 "tracking - non ancora implementato\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Non è stato trovato alcun file di configurazione. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "I file di configurazione sono stati cercati in questi posti: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 "Potrebbe essere necessario lanciare il programma d'installazione per "
 "correggere il problema."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Vai al programma d'installazione."
 
@@ -4743,6 +5266,14 @@ msgstr "Messaggi via messaggistica istantanea (MI)"
 msgid "Updates by SMS"
 msgstr "Messaggi via SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Connessioni"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Applicazioni collegate autorizzate"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Errore del database"
@@ -4928,15 +5459,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Lingua \"%s\" sconosciuta."
+msgstr "Sorgente casella in arrivo %d sconosciuta."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5214,7 +5745,7 @@ msgstr ""
 "iniziare una conversazione con altri utenti. Altre persone possono mandare "
 "messaggi riservati solamente a te."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "via"
 
@@ -5324,67 +5855,63 @@ 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"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Nascondi info"
-
-#: lib/noticeform.php:217
 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
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "presso"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
-msgstr "nel contesto"
+msgstr "in una discussione"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Ripetuto da"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Rispondi a questo messaggio"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Rispondi"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Messaggio ripetuto"
 
@@ -5416,11 +5943,7 @@ msgstr "Errore nell'inserire il profilo remoto"
 msgid "Duplicate notice"
 msgstr "Messaggio duplicato"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Non ti è possibile abbonarti."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Impossibile inserire un nuovo abbonamento."
 
@@ -5436,19 +5959,19 @@ msgstr "Risposte"
 msgid "Favorites"
 msgstr "Preferiti"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "In arrivo"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "I tuoi messaggi in arrivo"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Inviati"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "I tuoi messaggi inviati"
 
@@ -5525,6 +6048,10 @@ msgstr "Ripetere questo messaggio?"
 msgid "Repeat this notice"
 msgstr "Ripeti questo messaggio"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Nessun utente singolo definito per la modalità single-user."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Sandbox"
@@ -5592,34 +6119,6 @@ msgstr "Persone abbonate a %s"
 msgid "Groups %s is a member of"
 msgstr "Gruppi di cui %s fa parte"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Hai già l'abbonamento!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "L'utente non ti consente di seguirlo."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Impossibile abbonarsi."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Impossibile abbonare altri a te."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Non hai l'abbonamento!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Impossibile eliminare l'auto-abbonamento."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Impossibile eliminare l'abbonamento."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5670,67 +6169,67 @@ msgstr "Modifica immagine"
 msgid "User actions"
 msgstr "Azioni utente"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Modifica impostazioni del profilo"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Modifica"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Invia un messaggio diretto a questo utente"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Messaggio"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Modera"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "pochi secondi fa"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "circa un minuto fa"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "circa %d minuti fa"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "circa un'ora fa"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "circa %d ore fa"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "circa un giorno fa"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "circa %d giorni fa"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "circa un mese fa"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "circa %d mesi fa"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "circa un anno fa"
 
@@ -5744,7 +6243,7 @@ msgstr "%s non è un colore valido."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s non è un colore valido. Usa 3 o 6 caratteri esadecimali."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Messaggio troppo lungo: massimo %1$d caratteri, inviati %2$d."
index b3c04d2f434bf281d9e862c0e08c771c4bdda01d..e05ddbd15384bc4e128770e9b1314a89655ad7c2 100644 (file)
@@ -11,17 +11,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:37+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:12+0000\n"
 "Language-Team: Japanese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "アクセス"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "サイトアクセス設定"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "登録"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "プライベート"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "匿名ユーザー(ログインしていません)がサイトを見るのを禁止しますか?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "招待のみ"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "招待のみ登録する"
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "閉じられた"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "新規登録を無効。"
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "保存"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "アクセス設定の保存"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -36,25 +88,29 @@ msgstr "そのようなページはありません。"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
-msgstr "そのような利用者はいません。"
+msgstr "そのようなユーザはいません。"
+
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s と友人、ページ %2$d"
 
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -99,7 +155,7 @@ msgstr ""
 "プロフィールから [%1$s さんに合図](../%2$s) したり、[知らせたいことについて投"
 "稿](%%%%action.newnotice%%%%?status_textarea=%3$s) したりできます。"
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -112,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "あなたと友人"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "%2$s に %1$s と友人からの更新があります!"
@@ -123,23 +179,23 @@ msgstr "%2$s に %1$s と友人からの更新があります!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API メソッドが見つかりません。"
 
@@ -153,7 +209,7 @@ msgstr "API メソッドが見つかりません。"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "このメソッドには POST が必要です。"
 
@@ -167,7 +223,7 @@ msgstr ""
 
 #: actions/apiaccountupdatedeliverydevice.php:132
 msgid "Could not update user."
-msgstr "利用者を更新できませんでした。"
+msgstr "ユーザを更新できませんでした。"
 
 #: actions/apiaccountupdateprofile.php:112
 #: actions/apiaccountupdateprofilebackgroundimage.php:194
@@ -176,7 +232,7 @@ msgstr "利用者を更新できませんでした。"
 #: actions/avatarbynickname.php:80 actions/foaf.php:65 actions/replies.php:80
 #: actions/usergroups.php:98 lib/galleryaction.php:66 lib/profileaction.php:84
 msgid "User has no profile."
-msgstr "利用者はプロフィールをもっていません。"
+msgstr "ユーザはプロフィールをもっていません。"
 
 #: actions/apiaccountupdateprofile.php:147
 msgid "Could not save profile."
@@ -184,8 +240,9 @@ msgstr "プロフィールを保存できませんでした。"
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -216,11 +273,11 @@ msgstr "自分自身をブロックすることはできません!"
 
 #: actions/apiblockcreate.php:126
 msgid "Block user failed."
-msgstr "利用者のブロックに失敗しました。"
+msgstr "ユーザのブロックに失敗しました。"
 
 #: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
-msgstr "利用者のブロック解除に失敗しました。"
+msgstr "ユーザのブロック解除に失敗しました。"
 
 #: actions/apidirectmessage.php:89
 #, php-format
@@ -253,11 +310,11 @@ msgstr "長すぎます。メッセージは最大 %d 字までです。"
 
 #: actions/apidirectmessagenew.php:146
 msgid "Recipient user not found."
-msgstr "受け取り手の利用者が見つかりません。"
+msgstr "受け取り手のユーザが見つかりません。"
 
 #: actions/apidirectmessagenew.php:150
 msgid "Can't send direct messages to users who aren't your friend."
-msgstr "友人でない利用者にダイレクトメッセージを送ることはできません。"
+msgstr "友人でないユーザにダイレクトメッセージを送ることはできません。"
 
 #: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109
 #: actions/apistatusesdestroy.php:113
@@ -282,17 +339,17 @@ msgstr "お気に入りを取り消すことができません。"
 
 #: actions/apifriendshipscreate.php:109
 msgid "Could not follow user: User not found."
-msgstr "利用者をフォローできませんでした: 利用者が見つかりません。"
+msgstr "ユーザをフォローできませんでした: ユーザが見つかりません。"
 
 #: actions/apifriendshipscreate.php:118
 #, php-format
 msgid "Could not follow user: %s is already on your list."
 msgstr ""
-"利用者をフォローできませんでした: %s は既にあなたのリストに入っています。"
+"ユーザをフォローできませんでした: %s は既にあなたのリストに入っています。"
 
 #: actions/apifriendshipsdestroy.php:109
 msgid "Could not unfollow user: User not found."
-msgstr "利用者のフォローを停止できませんでした: 利用者が見つかりません。"
+msgstr "ユーザのフォローを停止できませんでした: ユーザが見つかりません。"
 
 #: actions/apifriendshipsdestroy.php:120
 msgid "You cannot unfollow yourself."
@@ -302,11 +359,11 @@ msgstr "自分自身をフォロー停止することはできません。"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "ふたつのIDかスクリーンネームが必要です。"
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "ソースユーザーを決定できません。"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "ターゲットユーザーを見つけられません。"
 
@@ -330,7 +387,8 @@ msgstr "そのニックネームは既に使用されています。他のもの
 msgid "Not a valid nickname."
 msgstr "有効なニックネームではありません。"
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -342,7 +400,8 @@ msgstr "ホームページのURLが不適切です。"
 msgid "Full name is too long (max 255 chars)."
 msgstr "フルネームが長すぎます。(255字まで)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "記述が長すぎます。(最長140字)"
@@ -378,7 +437,7 @@ msgstr "別名はニックネームと同じではいけません。"
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "グループが見つかりません!"
 
@@ -393,7 +452,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."
@@ -402,7 +461,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
@@ -419,13 +478,119 @@ msgstr "%s グループ"
 msgid "groups on %s"
 msgstr "%s 上のグループ"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "oauth_token パラメータは提供されませんでした。"
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "不正なトークン。"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "あなたのセッショントークンに問題がありました。再度お試しください。"
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "不正なユーザ名またはパスワード。"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "OAuth アプリケーションユーザの削除時DBエラー。"
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "OAuth アプリケーションユーザの追加時DBエラー。"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"リクエストトークン %s は承認されました。 アクセストークンとそれを交換してくだ"
+"さい。"
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "リクエストトークン%sは、拒否されて、取り消されました。"
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "予期せぬフォーム送信です。"
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "アプリケーションはあなたのアカウントに接続したいです"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "アクセスを許可または拒絶"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "アカウント"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "ニックネーム"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "パスワード"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "拒絶"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "許可"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "アカウント情報へのアクセスを許可するか、または拒絶してください。"
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "このメソッドには POST か DELETE が必要です。"
 
 #: actions/apistatusesdestroy.php:130
 msgid "You may not delete another user's status."
-msgstr "他の利用者のステータスを消すことはできません。"
+msgstr "他のユーザのステータスを消すことはできません。"
 
 #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
 #: actions/deletenotice.php:52 actions/shownotice.php:92
@@ -448,17 +613,17 @@ msgstr "ステータスを削除しました。"
 msgid "No status with that ID found."
 msgstr "そのIDでのステータスはありません。"
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "長すぎます。つぶやきは最大 140 字までです。"
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "みつかりません"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "つぶやきは URL を含めて最大 %d 字までです。"
@@ -472,7 +637,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。"
@@ -483,7 +648,7 @@ msgstr "%1$s は %2$s でお気に入りを更新しました / %2$s。"
 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!"
@@ -499,27 +664,22 @@ msgstr "%1$s / %2$s について更新"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%2$s からアップデートに答える %1$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 アップデート!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "%s による繰り返し"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "%s への返信"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "%s の返信"
@@ -529,7 +689,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 "%2$s に %1$s による更新があります!"
@@ -572,7 +732,7 @@ msgstr "自分のアバターをアップロードできます。最大サイズ
 #: actions/remotesubscribe.php:191 actions/userauthorization.php:72
 #: actions/userrss.php:103
 msgid "User without matching profile"
-msgstr "合っているプロフィールのない利用者"
+msgstr "合っているプロフィールのないユーザ"
 
 #: actions/avatarsettings.php:119 actions/avatarsettings.php:197
 #: actions/grouplogo.php:251
@@ -589,8 +749,8 @@ msgstr "オリジナル"
 msgid "Preview"
 msgstr "プレビュー"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "削除"
 
@@ -602,29 +762,6 @@ msgstr "アップロード"
 msgid "Crop"
 msgstr "切り取り"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "あなたのセッショントークンに問題がありました。再度お試しください。"
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "予期せぬフォーム送信です。"
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "あなたのアバターとなるイメージを正方形で指定"
@@ -647,11 +784,11 @@ msgstr "アバターが削除されました。"
 
 #: actions/block.php:69
 msgid "You already blocked that user."
-msgstr "その利用者はすでにブロック済みです。"
+msgstr "そのユーザはすでにブロック済みです。"
 
 #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
 msgid "Block user"
-msgstr "ã\83\96ã\83­ã\83\83ã\82¯å\88©ç\94¨è\80\85"
+msgstr "ã\83¦ã\83¼ã\82¶ã\82\92ã\83\96ã\83­ã\83\83ã\82¯"
 
 #: actions/block.php:130
 #, fuzzy
@@ -664,8 +801,9 @@ msgstr ""
 "たからフォローを外されるでしょう、将来、あなたにフォローできないで、あなたは"
 "どんな @-返信 についてもそれらから通知されないでしょう。"
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "No"
 
@@ -673,13 +811,13 @@ msgstr "No"
 msgid "Do not block this user"
 msgstr "このユーザをアンブロックする"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "このユーザをブロックする"
 
@@ -709,11 +847,11 @@ msgstr "%1$s ブロックされたプロファイル、ページ %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
-msgstr "このグループへの参加をブロックされた利用者のリスト。"
+msgstr "このグループへの参加をブロックされたユーザのリスト。"
 
 #: actions/blockedfromgroup.php:281
 msgid "Unblock user from group"
-msgstr "グループからのアンブロック利用者"
+msgstr "グループからのアンブロックユーザ"
 
 #: actions/blockedfromgroup.php:313 lib/unblockform.php:69
 msgid "Unblock"
@@ -762,7 +900,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "メール承認を削除できません"
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "アドレスの確認"
 
 #: actions/confirmaddress.php:159
@@ -779,10 +917,51 @@ msgstr "会話"
 msgid "Notices"
 msgstr "つぶやき"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "アプリケーションを削除するにはログインしていなければなりません。"
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "アプリケーションが見つかりません。"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "このアプリケーションのオーナーではありません。"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "あなたのセッショントークンに関する問題がありました。"
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "アプリケーション削除"
+
+#: 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 ""
+"あなたは本当にこのユーザを削除したいですか? これはバックアップなしでデータ"
+"ベースからユーザに関するすべてのデータをクリアします。"
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "このアプリケーションを削除しないでください"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "このアプリケーションを削除"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -798,7 +977,7 @@ msgid ""
 "You are about to permanently delete a notice. Once this is done, it cannot "
 "be undone."
 msgstr ""
-"あなたは永久につぶやきを削除しようとしています。 これが完了するとそれを元に戻"
+"あなたはつぶやきを永久に削除しようとしています。 これが完了するとそれを元に戻"
 "すことはできません。"
 
 #: actions/deletenotice.php:109 actions/deletenotice.php:141
@@ -813,33 +992,33 @@ msgstr "本当にこのつぶやきを削除しますか?"
 msgid "Do not delete this notice"
 msgstr "このつぶやきを削除できません。"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "このつぶやきを削除"
 
 #: actions/deleteuser.php:67
 msgid "You cannot delete users."
-msgstr "利用者を削除できません"
+msgstr "ユーザを削除できません"
 
 #: actions/deleteuser.php:74
 msgid "You can only delete local users."
-msgstr "ローカル利用者のみ削除できます。"
+msgstr "ローカルユーザのみ削除できます。"
 
 #: actions/deleteuser.php:110 actions/deleteuser.php:133
 msgid "Delete user"
-msgstr "利用者削除"
+msgstr "ユーザ削除"
 
 #: actions/deleteuser.php:135
 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 ""
-"あなたは本当にこの利用者を削除したいですか? これはバックアップなしでデータ"
-"ベースから利用者に関するすべてのデータをクリアします。"
+"あなたは本当にこのユーザを削除したいですか? これはバックアップなしでデータ"
+"ベースからユーザに関するすべてのデータをクリアします。"
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
 msgid "Delete this user"
-msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\82\92å\89\8aé\99¤"
+msgstr "このユーザを削除"
 
 #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
 #: lib/adminpanelaction.php:316 lib/groupnav.php:119
@@ -945,16 +1124,6 @@ msgstr "デフォルトデザインに戻す。"
 msgid "Reset back to default"
 msgstr "デフォルトへリセットする"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "保存"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "デザインの保存"
@@ -967,9 +1136,75 @@ msgstr "このつぶやきはお気に入りではありません!"
 msgid "Add to favorites"
 msgstr "お気に入りに加える"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "そのようなドキュメントはありません。"
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "そのようなドキュメントはありません。\"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "アプリケーション編集"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "アプリケーションを編集するにはログインしていなければなりません。"
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "そのようなアプリケーションはありません。"
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "このフォームを使ってアプリケーションを編集します。"
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "名前は必須です。"
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "名前が長すぎます。(最大255字まで)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "そのニックネームは既に使用されています。他のものを試してみて下さい。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "概要が必要です。"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "ソースURLが長すぎます。"
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "ソースURLが不正です。"
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "組織が必要です。"
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "組織が長すぎます。(最大255字)"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "組織のホームページが必要です。"
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "コールバックが長すぎます。"
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "コールバックURLが不正です。"
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "アプリケーションを更新できません。"
 
 #: actions/editgroup.php:56
 #, php-format
@@ -998,7 +1233,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:433
 msgid "Could not create aliases."
 msgstr "別名を作成できません。"
 
@@ -1035,11 +1270,12 @@ msgid ""
 "Awaiting confirmation on this address. Check your inbox (and spam box!) for "
 "a message with further instructions."
 msgstr ""
-"このアドレスは認待ちです。受信ボックス(とスパムボックス)に追加の指示が書"
+"このアドレスは認待ちです。受信ボックス(とスパムボックス)に追加の指示が書"
 "かれたメッセージが届いていないか確認してください。"
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "中止"
 
@@ -1084,17 +1320,17 @@ msgstr "メールで新規フォローの通知を私に送ってください。
 #: actions/emailsettings.php:163
 msgid "Send me email when someone adds my notice as a favorite."
 msgstr ""
-"だれかがお気に入りとして私のつぶやきを加えたらメールを私に送ってください。"
+"ã\81 ã\82\8cã\81\8bã\81\8cã\81\8aæ°\97ã\81«å\85¥ã\82\8aã\81¨ã\81\97ã\81¦ç§\81ã\81®ã\81¤ã\81¶ã\82\84ã\81\8dã\82\92å\8a ã\81\88ã\81\9fã\82\89ã\80\81ã\83¡ã\83¼ã\83«ã\82\92ç§\81ã\81«é\80\81ã\81£ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82"
 
 #: actions/emailsettings.php:169
 msgid "Send me email when someone sends me a private message."
 msgstr ""
-"だれかがプライベート・メッセージを私に送るときにはメールを私に送ってくださ"
+"ã\81 ã\82\8cã\81\8bã\81\8cã\83\97ã\83©ã\82¤ã\83\99ã\83¼ã\83\88ã\83»ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ç§\81ã\81«é\80\81ã\82\8bã\81¨ã\81\8dã\81«ã\81¯ã\80\81ã\83¡ã\83¼ã\83«ã\82\92ç§\81ã\81«é\80\81ã\81£ã\81¦ã\81\8fã\81 ã\81\95"
 "い。"
 
 #: actions/emailsettings.php:174
 msgid "Send me email when someone sends me an \"@-reply\"."
-msgstr "だれかが\"@-返信\"を私を送るときにはメールを私に送ってください、"
+msgstr "ã\81 ã\82\8cã\81\8bã\81\8c\"@-è¿\94ä¿¡\"ã\82\92ç§\81ã\82\92é\80\81ã\82\8bã\81¨ã\81\8dã\81«ã\81¯ã\80\81ã\83¡ã\83¼ã\83«ã\82\92ç§\81ã\81«é\80\81ã\81£ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\81"
 
 #: actions/emailsettings.php:179
 msgid "Allow friends to nudge me and send me an email."
@@ -1122,7 +1358,7 @@ msgid "Cannot normalize that email address"
 msgstr "そのメールアドレスを正規化できません"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "有効なメールアドレスではありません。"
 
@@ -1134,24 +1370,24 @@ msgstr "これはすでにあなたのメールアドレスです。"
 msgid "That email address already belongs to another user."
 msgstr "このメールアドレスは既に他の人が使っています。"
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
-msgstr "認コードを追加できません"
+msgstr "認コードを追加できません"
 
 #: actions/emailsettings.php:359
 msgid ""
 "A confirmation code was sent to the email address you added. Check your "
 "inbox (and spam box!) for the code and instructions on how to use it."
 msgstr ""
-"確認用コードを入力された電子メールアドレスに送信しました。受信ボックス(とス"
-"ã\83\91ã\83 ã\83\9cã\83\83ã\82¯ã\82¹ï¼\89ã\81«ã\82³ã\83¼ã\83\89ã\81¨ã\81\9dã\82\8cã\82\92ã\81©ã\81\86使ã\81\86ã\81®ã\81\8bã\81¨ã\81\84ã\81\86æ\8c\87示ã\81\8cå±\8aã\81\84ã\81¦ã\81\84ã\81ªã\81\84ã\81\8b確èª\8dã\81\97ã\81¦"
-"ã\81\8fã\81 ã\81\95ã\81\84ã\80\82"
+"承認コードを入力された電子メールアドレスに送信しました。受信ボックス(とスパ"
+"ã\83 ã\83\9cã\83\83ã\82¯ã\82¹ï¼\89ã\81«ã\82³ã\83¼ã\83\89ã\81¨ã\81\9dã\82\8cã\82\92ã\81©ã\81\86使ã\81\86ã\81®ã\81\8bã\81¨ã\81\84ã\81\86æ\8c\87示ã\81\8cå±\8aã\81\84ã\81¦ã\81\84ã\81ªã\81\84ã\81\8b確èª\8dã\81\97ã\81¦ã\81\8f"
+"ださい。"
 
 #: actions/emailsettings.php:379 actions/imsettings.php:351
 #: actions/smssettings.php:370
 msgid "No pending confirmation to cancel."
-msgstr "認証待ちのものはありません。"
+msgstr "承認待ちのものはありません。"
 
 #: actions/emailsettings.php:383 actions/imsettings.php:355
 msgid "That is the wrong IM address."
@@ -1160,7 +1396,7 @@ msgstr "その IM アドレスは不正です。"
 #: actions/emailsettings.php:395 actions/imsettings.php:367
 #: actions/smssettings.php:386
 msgid "Confirmation cancelled."
-msgstr "認作業が中止されました。"
+msgstr "認作業が中止されました。"
 
 #: actions/emailsettings.php:413
 msgid "That is not your email address."
@@ -1178,7 +1414,7 @@ msgstr "入ってくるメールアドレスではありません。"
 #: actions/emailsettings.php:456 actions/emailsettings.php:478
 #: actions/smssettings.php:528 actions/smssettings.php:552
 msgid "Couldn't update user record."
-msgstr "利用者レコードを更新できません。"
+msgstr "ユーザレコードを更新できません。"
 
 #: actions/emailsettings.php:459 actions/smssettings.php:531
 msgid "Incoming email address removed."
@@ -1196,7 +1432,7 @@ msgstr "このつぶやきはすでにお気に入りです!"
 msgid "Disfavor favorite"
 msgstr "お気に入りをやめる"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "人気のつぶやき"
@@ -1247,17 +1483,17 @@ msgstr "%1$s による %2$s 上のお気に入りを更新!"
 #: actions/featured.php:69 lib/featureduserssection.php:87
 #: lib/publicgroupnav.php:89
 msgid "Featured users"
-msgstr "フィーチャーされた利用者"
+msgstr "フィーチャーされたユーザ"
 
 #: actions/featured.php:71
 #, php-format
 msgid "Featured users, page %d"
-msgstr "フィーチャーされた利用者、ページ %d"
+msgstr "フィーチャーされたユーザ、ページ %d"
 
 #: actions/featured.php:99
 #, php-format
 msgid "A selection of some great users on %s"
-msgstr "%s 上の優れた利用者の集まり"
+msgstr "%s 上の優れたユーザの集まり"
 
 #: actions/file.php:34
 msgid "No notice ID."
@@ -1289,7 +1525,7 @@ msgstr "ローカルサブスクリプションを使用可能です!"
 
 #: actions/finishremotesubscribe.php:99
 msgid "That user has blocked you from subscribing."
-msgstr "この利用者はフォローをブロックされています。"
+msgstr "このユーザはフォローをブロックされています。"
 
 #: actions/finishremotesubscribe.php:110
 msgid "You are not authorized."
@@ -1339,15 +1575,15 @@ msgstr "管理者だけがグループメンバーをブロックできます。
 
 #: actions/groupblock.php:95
 msgid "User is already blocked from group."
-msgstr "利用者はすでにグループからブロックされています。"
+msgstr "ユーザはすでにグループからブロックされています。"
 
 #: actions/groupblock.php:100
 msgid "User is not a member of group."
-msgstr "利用者はグループのメンバーではありません。"
+msgstr "ユーザはグループのメンバーではありません。"
 
-#: actions/groupblock.php:136 actions/groupmembers.php:314
+#: actions/groupblock.php:136 actions/groupmembers.php:316
 msgid "Block user from group"
-msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\81\8bã\82\89ã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85"
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\81\8bã\82\89ã\83¦ã\83¼ã\82¶ã\82\92ã\83\96ã\83­ã\83\83ã\82¯"
 
 #: actions/groupblock.php:162
 #, php-format
@@ -1356,12 +1592,12 @@ msgid ""
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
-"本当に利用者 %1$s をグループ %2$s からブロックしますか? 彼らはグループから削"
+"本当にユーザ %1$s をグループ %2$s からブロックしますか? 彼らはグループから削"
 "除される、投稿できない、グループをフォローできなくなります。"
 
 #: actions/groupblock.php:178
 msgid "Do not block this user from this group"
-msgstr "このグループからこの利用者をブロックしない"
+msgstr "このグループからこのユーザをブロックしない"
 
 #: actions/groupblock.php:179
 msgid "Block this user from this group"
@@ -1369,7 +1605,7 @@ msgstr "このグループからこのユーザをブロック"
 
 #: actions/groupblock.php:196
 msgid "Database error blocking user from group."
-msgstr "グループから利用者ブロックのデータベースエラー"
+msgstr "グループからのブロックユーザのデータベースエラー"
 
 #: actions/groupbyid.php:74 actions/userbyid.php:70
 msgid "No ID."
@@ -1414,7 +1650,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."
@@ -1440,27 +1676,27 @@ msgstr "%1$s グループメンバー、ページ %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
-msgstr "このグループの利用者のリスト。"
+msgstr "このグループのユーザのリスト。"
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "利用者をグループの管理者にする"
+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 "この利用者を管理者にする"
+msgstr "このユーザを管理者にする"
 
 #: actions/grouprss.php:133
 #, php-format
@@ -1538,7 +1774,7 @@ msgstr "管理者だけがグループメンバーをアンブロックできま
 
 #: actions/groupunblock.php:95
 msgid "User is not blocked from group."
-msgstr "利用者はグループからブロックされていません。"
+msgstr "ユーザはグループからブロックされていません。"
 
 #: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
@@ -1571,7 +1807,7 @@ msgid ""
 "Awaiting confirmation on this address. Check your Jabber/GTalk account for a "
 "message with further instructions. (Did you add %s to your buddy list?)"
 msgstr ""
-"このアドレスは認待ちです。Jabber か Gtalk のアカウントで追加の指示が書かれ"
+"このアドレスは認待ちです。Jabber か Gtalk のアカウントで追加の指示が書かれ"
 "たメッセージを確認してください。(%s を友人リストに追加しましたか?)"
 
 #: actions/imsettings.php:124
@@ -1631,13 +1867,18 @@ msgid ""
 "A confirmation code was sent to the IM address you added. You must approve %"
 "s for sending messages to you."
 msgstr ""
-"確認用コードを入力された IM アドレスに送信しました。あなたにメッセージを送れ"
-"ã\82\8bã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81«ã\81¯%sã\82\92æ\89¿èª\8dã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82"
+"承認コードを入力された IM アドレスに送信しました。あなたにメッセージを送れる"
+"ようにするには%sを承認してください。"
 
 #: actions/imsettings.php:387
 msgid "That is not your Jabber ID."
 msgstr "その Jabber ID はあなたのものではありません。"
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "%1$s の受信箱 - ページ %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1668,11 +1909,11 @@ msgstr "招待を送りました。"
 
 #: actions/invite.php:112
 msgid "Invite new users"
-msgstr "新しい利用者を招待"
+msgstr "新しいユーザを招待"
 
 #: actions/invite.php:128
 msgid "You are already subscribed to these users:"
-msgstr "すでにこれらの利用者をフォローしています:"
+msgstr "すでにこれらのユーザをフォローしています:"
 
 #: actions/invite.php:131 actions/invite.php:139 lib/command.php:306
 #, php-format
@@ -1720,9 +1961,9 @@ msgstr "パーソナルメッセージ"
 msgid "Optionally add a personal message to the invitation."
 msgstr "任意に招待にパーソナルメッセージを加えてください。"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
-msgstr "送る"
+msgstr "投稿"
 
 #: actions/invite.php:226
 #, php-format
@@ -1820,7 +2061,7 @@ msgstr "ユーザ名またはパスワードが間違っています。"
 msgid "Error setting user. You are probably not authorized."
 msgstr "ユーザ設定エラー。 あなたはたぶん承認されていません。"
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ログイン"
@@ -1829,17 +2070,6 @@ msgstr "ログイン"
 msgid "Login to site"
 msgstr "サイトへログイン"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "ニックネーム"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "パスワード"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "ログイン状態を保持"
@@ -1869,21 +2099,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 の管理者にすることはできません"
@@ -1892,6 +2122,26 @@ msgstr "%1$s をグループ %2$s の管理者にすることはできません"
 msgid "No current status"
 msgstr "現在のステータスはありません"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "新しいアプリケーション"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "アプリケーションを登録するにはログインしていなければなりません。"
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "このフォームを使って新しいアプリケーションを登録します。"
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "ソースURLが必要です。"
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "アプリケーションを作成できません。"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "新しいグループ"
@@ -1906,7 +2156,7 @@ msgstr "新しいメッセージ"
 
 #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:358
 msgid "You can't send a message to this user."
-msgstr "この利用者にメッセージを送ることはできません。"
+msgstr "このユーザにメッセージを送ることはできません。"
 
 #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:342
 #: lib/command.php:475
@@ -1993,7 +2243,7 @@ msgstr "\"%2$s\" 上の検索語 \"$1$s\" に一致するすべての更新"
 msgid ""
 "This user doesn't allow nudges or hasn't confirmed or set his email yet."
 msgstr ""
-"この利用者は、合図を許可していないか、確認されていた状態でないか、メール設定"
+"このユーザは、合図を許可していないか、確認されていた状態でないか、メール設定"
 "をしていません。"
 
 #: actions/nudge.php:94
@@ -2004,6 +2254,50 @@ msgstr "合図を送った"
 msgid "Nudge sent!"
 msgstr "合図を送った!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "アプリケーションをリストするにはログインしていなければなりません。"
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "OAuth アプリケーション"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "あなたが登録したアプリケーション"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "あなたはまだなんのアプリケーションも登録していません。"
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "接続されたアプリケーション"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "あなたのアカウントにアクセスする以下のアプリケーションを許可しました。"
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "あなたはそのアプリケーションのユーザではありません。"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "アプリケーションのための取消しアクセスができません: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+"あなたは、どんなアプリケーションもあなたのアカウントを使用するのを認可してい"
+"ません。"
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr "開発者は彼らのアプリケーションのために登録設定を編集できます "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "つぶやきにはプロファイルはありません。"
@@ -2021,8 +2315,8 @@ msgstr "内容種別 "
 msgid "Only "
 msgstr "だけ "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "サポートされていないデータ形式。"
 
@@ -2035,7 +2329,7 @@ msgid "Notice Search"
 msgstr "つぶやき検索"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "その他の設定"
 
 #: actions/othersettings.php:71
@@ -2068,7 +2362,7 @@ msgstr "URL 短縮サービスが長すぎます。(最大50字)"
 
 #: actions/otp.php:69
 msgid "No user ID specified."
-msgstr "利用者IDの記述がありません。"
+msgstr "ユーザIDの記述がありません。"
 
 #: actions/otp.php:83
 msgid "No login token specified."
@@ -2086,6 +2380,11 @@ msgstr "不正なログイントークンが指定されています。"
 msgid "Login token expired."
 msgstr "ログイントークンが期限切れです・"
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "%1$s の送信箱 - ページ %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2158,7 +2457,7 @@ msgstr "新しいパスワードを保存できません。"
 msgid "Password saved."
 msgstr "パスワードが保存されました。"
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "パス"
 
@@ -2166,132 +2465,148 @@ msgstr "パス"
 msgid "Path and server settings for this StatusNet site."
 msgstr "パスと StatusNet サイトのサーバー設定"
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "テーマディレクトリが読み込めません: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "アバターディレクトリに書き込みできません: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "バックグラウンドディレクトリに書き込みできません : %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "場所ディレクトリが読み込めません: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "不正な SSL サーバー。最大 255 文字まで。"
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "サイト"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "サーバー"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "サイトのサーバーホスト名"
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "パス"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "サイトパス"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "ロケールのパス"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "ロケールへのディレクトリパス"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Fancy URL (読みやすく忘れにくい) を使用しますか?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "テーマ"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "テーマサーバー"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "テーマパス"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "テーマディレクトリ"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "アバター"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "アバターサーバー"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "アバターパス"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "アバターディレクトリ"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "バックグラウンド"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "バックグラウンドサーバー"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "バックグラウンドパス"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "バックグラウンドディレクトリ"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr ""
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "ときどき"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "いつも"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "SSL 使用"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "SSL 使用時"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSLサーバ"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "ダイレクト SSL リクエストを向けるサーバ"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "保存パス"
 
@@ -2354,7 +2669,7 @@ msgid "Full name"
 msgstr "フルネーム"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "ホームページ"
 
@@ -2377,7 +2692,7 @@ msgstr "自己紹介"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "場所"
@@ -2403,7 +2718,7 @@ msgstr ""
 "自分自身についてのタグ (アルファベット、数字、-、.、_)、カンマまたは空白区切"
 "りで"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "言語"
 
@@ -2429,7 +2744,7 @@ msgstr "自分をフォローしている者を自動的にフォローする (B
 msgid "Bio is too long (max %d chars)."
 msgstr "自己紹介が長すぎます (最長140文字)。"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "タイムゾーンが選ばれていません。"
 
@@ -2442,23 +2757,23 @@ msgstr "言語が長すぎます。(最大50字)"
 msgid "Invalid tag: \"%s\""
 msgstr "不正なタグ: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
-msgstr "自動フォローのための利用者を更新できませんでした。"
+msgstr "自動フォローのためのユーザを更新できませんでした。"
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "場所情報を保存できません。"
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "プロファイルを保存できません"
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "タグを保存できません。"
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "設定が保存されました。"
 
@@ -2480,19 +2795,19 @@ msgstr "パブリックタイムライン、ページ %d"
 msgid "Public timeline"
 msgstr "パブリックタイムライン"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "パブリックストリームフィード (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "パブリックストリームフィード (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "パブリックストリームフィード (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2501,11 +2816,11 @@ msgstr ""
 "これは %%site.name%% のパブリックタイムラインです、しかしまだ誰も投稿していま"
 "せん。"
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "投稿する1番目になってください!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2513,7 +2828,7 @@ msgstr ""
 "なぜ [アカウント登録](%%action.register%%) しないのですか、そして最初の投稿を"
 "してください!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2527,7 +2842,7 @@ msgstr ""
 "族そして同僚などについてのつぶやきを共有しましょう! ([もっと読む](%%doc.help%"
 "%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2566,7 +2881,7 @@ msgstr ""
 "なぜ [アカウント登録](%%action.register%%) しないのですか。そして最初の投稿を"
 "してください!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "タグクラウド"
 
@@ -2596,7 +2911,7 @@ msgstr "確認コードが古すぎます。もう一度やり直してくださ
 
 #: actions/recoverpassword.php:111
 msgid "Could not update user with confirmed email address."
-msgstr "確認されたメールアドレスで利用者を更新できません。"
+msgstr "確認されたメールアドレスでユーザを更新できません。"
 
 #: actions/recoverpassword.php:152
 msgid ""
@@ -2656,11 +2971,11 @@ msgstr "ニックネームかメールアドレスを入力してください。
 
 #: actions/recoverpassword.php:272
 msgid "No user with that email address or username."
-msgstr "そのメールアドレスかユーザ名をもっている利用者がありません。"
+msgstr "そのメールアドレスかユーザ名をもっているユーザがありません。"
 
 #: actions/recoverpassword.php:287
 msgid "No registered email address for that user."
-msgstr "その利用者にはメールアドレスの登録がありません。"
+msgstr "そのユーザにはメールアドレスの登録がありません。"
 
 #: actions/recoverpassword.php:301
 msgid "Error saving address confirmation."
@@ -2704,7 +3019,7 @@ msgstr "すみません、不正な招待コード。"
 msgid "Registration successful"
 msgstr "登録成功"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "登録"
@@ -2747,7 +3062,7 @@ msgid "Same as password above. Required."
 msgstr "上のパスワードと同じです。 必須。"
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "メール"
 
@@ -2774,7 +3089,7 @@ msgid ""
 msgstr "個人情報を除く: パスワード、メールアドレス、IMアドレス、電話番号"
 
 #: 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"
@@ -2791,15 +3106,15 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"%1$s さん、おめでとうございます!%%%%site.name%%%% へようこそ。以下のようにし"
-"始めることができます。\n"
+"%1$s さん、おめでとうございます!%%%%site.name%%%% へようこそ。次のようにして"
+"始めることができます。\n"
 "\n"
 "* [あなたのプロファイル](%2$s) を参照して最初のメッセージを投稿する\n"
 "* [Jabber や GTalk のアドレス](%%%%action.imsettings%%%%) を追加して、インス"
 "タントメッセージを通してつぶやきを送れるようにする\n"
 "* あなたが知っている人やあなたと同じ興味をもっている人を[検索](%%%%action."
 "peoplesearch%%%%) する\n"
-"* [プロファイル設定](%%%%action.profilesettings%%%%) を更新して他の利用者にあ"
+"* [プロファイル設定](%%%%action.profilesettings%%%%) を更新して他のユーザにあ"
 "なたのことをより詳しく知らせる\n"
 "* 探している機能について[オンライン文書](%%%%doc.help%%%%) を読む\n"
 "\n"
@@ -2811,7 +3126,7 @@ msgid ""
 "(You should receive a message by email momentarily, with instructions on how "
 "to confirm your email address.)"
 msgstr ""
-"(メールアドレスを認する方法を読んで、すぐにメールによるメッセージを受け取る"
+"(メールアドレスを認する方法を読んで、すぐにメールによるメッセージを受け取る"
 "ようにしてください)"
 
 #: actions/remotesubscribe.php:98
@@ -2836,7 +3151,7 @@ msgstr "リモートユーザーをフォロー"
 
 #: actions/remotesubscribe.php:129
 msgid "User nickname"
-msgstr "利用者のニックネーム"
+msgstr "ユーザのニックネーム"
 
 #: actions/remotesubscribe.php:130
 msgid "Nickname of the user you want to follow"
@@ -2851,7 +3166,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "プロファイルサービスまたはマイクロブロギングサービスのURL"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "フォロー"
 
@@ -2890,7 +3205,7 @@ msgstr "自分のつぶやきは繰り返せません。"
 msgid "You already repeated that notice."
 msgstr "すでにそのつぶやきを繰り返しています。"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "繰り返された"
 
@@ -2904,6 +3219,11 @@ msgstr "繰り返されました!"
 msgid "Replies to %s"
 msgstr "%s への返信"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "%1$s への返信、ページ %2$s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2935,7 +3255,7 @@ msgid ""
 "[join groups](%%action.groups%%)."
 msgstr ""
 "あなたは、他のユーザを会話をするか、多くの人々をフォローするか、または [グ"
-"ループに加わる] (%%action.groups%%)ことができます。"
+"ループに加わる](%%action.groups%%)ことができます。"
 
 #: actions/replies.php:205
 #, php-format
@@ -2951,13 +3271,133 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "%2$s 上の %1$s への返信!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "あなたはこのサイトのサンドボックスユーザができません。"
 
 #: actions/sandbox.php:72
 msgid "User is already sandboxed."
-msgstr "利用者はすでにサンドボックスです。"
+msgstr "ユーザはすでにサンドボックスです。"
+
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "セッション"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "この StatusNet サイトのセッション設定。"
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "セッションの扱い"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "自分達でセッションを扱うのであるかどうか。"
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "セッションデバッグ"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "セッションのためのデバッグ出力をオン。"
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "サイト設定の保存"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "!!アプリケーションを見るためにはログインしていなければなりません。"
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "アプリケーションプロファイル"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "アイコン"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "名前"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "組織"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "概要"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "統計データ"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "アプリケーションアクション"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "key と secret のリセット"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "アプリケーション情報"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "リクエストトークンURL"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "アクセストークンURL"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "承認URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"注意: 私たちはHMAC-SHA1署名をサポートします。 私たちは平文署名メソッドをサ"
+"ポートしません。"
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "本当にこのつぶやきを削除しますか?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%1$s のお気に入りのつぶやき、ページ %2$d"
 
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
@@ -3016,17 +3456,22 @@ msgstr "これは、あなたが好きなことを共有する方法です。"
 msgid "%s group"
 msgstr "%s グループ"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s グループ、ページ %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "グループプロファイル"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "ノート"
 
@@ -3072,13 +3517,9 @@ msgstr "(なし)"
 msgid "All members"
 msgstr "全てのメンバー"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "統計データ"
-
 #: actions/showgroup.php:432
 msgid "Created"
-msgstr "作成されました"
+msgstr "作成"
 
 #: actions/showgroup.php:448
 #, php-format
@@ -3090,7 +3531,7 @@ msgid ""
 "of this group and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 "**%s** は %%site.name%% 上のユーザグループです。フリーソフトウェアツール"
-"[StatusNet](http://status.net/)を基にした[マイクロブロギング] (http://en."
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
 "wikipedia.org/wiki/Micro-blogging) サービス。メンバーは彼らの暮らしと興味に関"
 "する短いメッセージを共有します。[今すぐ参加](%%%%action.register%%%%) してこ"
 "のグループの一員になりましょう! ([もっと読む](%%%%doc.help%%%%))"
@@ -3139,6 +3580,11 @@ msgstr "つぶやきを削除しました。"
 msgid " tagged %s"
 msgstr "タグ付けされた %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s、ページ %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3164,12 +3610,12 @@ msgstr "%sのつぶやきフィード (Atom)"
 msgid "FOAF for %s"
 msgstr "%s の FOAF"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "これは %1$s のタイムラインですが、%2$s はまだなにも投稿していません。"
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3177,7 +3623,7 @@ msgstr ""
 "最近おもしろいものは何でしょう? あなたは少しのつぶやきも投稿していませんが、"
 "いまは始める良い時でしょう:)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3186,7 +3632,7 @@ msgstr ""
 "あなたは、%1$s に合図するか、[またはその人宛に何かを投稿](%%%%action."
 "newnotice%%%%?status_textarea=%2$s) することができます。"
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3194,13 +3640,13 @@ msgid ""
 "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
-"**%s** は %%site.name%% 上のアカウントです。フリーソフトウェアツール"
-"[StatusNet](http://status.net/)を基にした[マイクロブロギング] (http://en."
+"**%s** は %%%%site.name%%%% 上のアカウントです。フリーソフトウェアツール"
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
 "wikipedia.org/wiki/Micro-blogging) サービス。[今すぐ参加](%%%%action.register"
 "%%%%)して、**%s** のつぶやきなどをフォローしましょう! ([もっと読む](%%%%doc."
 "help%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3208,10 +3654,10 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 "**%s** は %%site.name%% 上のアカウントです。フリーソフトウェアツール"
-"[StatusNet](http://status.net/)を基にした[マイクロブロギング] (http://en."
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
 "wikipedia.org/wiki/Micro-blogging) サービス。"
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "%s の繰り返し"
@@ -3222,206 +3668,154 @@ msgstr "あなたはこのサイトでユーザを黙らせることができま
 
 #: actions/silence.php:72
 msgid "User is already silenced."
-msgstr "利用者は既に黙っています。"
+msgstr "ユーザは既に黙っています。"
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
 msgstr "この StatusNet サイトの基本設定。"
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "サイト名は長さ0ではいけません。"
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "有効な連絡用メールアドレスがなければなりません。"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "不明な言語 \"%s\""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "不正なスナップショットレポートURL。"
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "不正なスナップショットランバリュー"
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "スナップショット頻度は数でなければなりません。"
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "最小のテキスト制限は140字です。"
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "デュープ制限は1秒以上でなければなりません。"
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "一般"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "サイト名"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "あなたのサイトの名前、\"Yourcompany Microblog\"のような。"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "持って来られます"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 "クレジットに使用されるテキストは、それぞれのページのフッターでリンクされま"
 "す。"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URLで、持って来られます"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 "クレジットに使用されるURLは、それぞれのページのフッターでリンクされます。"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "あなたのサイトにコンタクトするメールアドレス"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "ローカル"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "デフォルトタイムゾーン"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "サイトのデフォルトタイムゾーン; 通常UTC。"
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "デフォルトサイト言語"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "サーバー"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "サイトのサーバーホスト名"
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Fancy URL (読みやすく忘れにくい) を使用しますか?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "アクセス"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "プライベート"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "匿名ユーザー(ログインしていません)がサイトを見るのを禁止しますか?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "招待のみ"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "招待のみ登録する"
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "閉じられた"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "新規登録を無効。"
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "スナップショット"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "予定されているジョブで"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "データスナップショット"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "いつ status.net サーバに統計データを送りますか"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "頻度"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "レポート URL"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "レポート URL"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "このURLにスナップショットを送るでしょう"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "制限"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "テキスト制限"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "つぶやきの文字の最大数"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "デュープ制限"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "どれくらい長い間(秒)、ユーザは、再び同じものを投稿するのを待たなければならな"
 "いか。"
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "サイト設定の保存"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "SMS 設定"
@@ -3482,7 +3876,7 @@ msgstr "これはすでにあなたの電話番号です。"
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
-msgstr "この電話番号はすでに他の利用者に使われています。"
+msgstr "この電話番号はすでに他のユーザに使われています。"
 
 #: actions/smssettings.php:347
 msgid ""
@@ -3526,15 +3920,26 @@ msgstr "コードが入力されていません"
 msgid "You are not subscribed to that profile."
 msgstr "あなたはそのプロファイルにフォローされていません。"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "フォローを保存できません。"
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "ローカルユーザではありません。"
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "そのようなファイルはありません。"
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "あなたはそのプロファイルにフォローされていません。"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "フォローしている"
 
@@ -3598,7 +4003,7 @@ msgstr "あなたがつぶやきを聞いている人"
 msgid "These are the people whose notices %s listens to."
 msgstr "%s がつぶやきを聞いている人"
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3609,24 +4014,29 @@ msgid ""
 msgstr ""
 "今、だれのつぶやきも聞いていないなら、あなたが知っている人々をフォローしてみ"
 "てください。[ピープル検索](%%action.peoplesearch%%)を試してください。そして、"
-"あなたが興味を持っているグループと私たちの[フィーチャーされた利用者](%%"
+"あなたが興味を持っているグループと私たちの[フィーチャーされたユーザ](%%"
 "action.featured%%)のメンバーを探してください。もし[Twitterユーザ](%%action."
 "twittersettings%%)であれば、あなたは自動的に既にフォローしている人々をフォ"
 "ローできます。"
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s はだれも言うことを聞いていません。"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "%1$s とタグ付けされたつぶやき、ページ %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3653,22 +4063,23 @@ msgstr "タグ %s"
 
 #: actions/tagother.php:77 lib/userprofile.php:75
 msgid "User profile"
-msgstr "利用者プロファイル"
+msgstr "ユーザプロファイル"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "写真"
 
 #: actions/tagother.php:141
 msgid "Tag user"
-msgstr "タグ利用者"
+msgstr "タグユーザ"
 
 #: actions/tagother.php:151
 msgid ""
 "Tags for this user (letters, numbers, -, ., and _), comma- or space- "
 "separated"
 msgstr ""
-"この利用者のタグ (アルファベット、数字、-、.、_)、カンマかスペース区切り"
+"このユーザのタグ (アルファベット、数字、-、.、_)、カンマかスペース区切り"
 
 #: actions/tagother.php:193
 msgid ""
@@ -3699,11 +4110,11 @@ msgstr "あなたはそのユーザをブロックしていません。"
 
 #: actions/unsandbox.php:72
 msgid "User is not sandboxed."
-msgstr "利用者はサンドボックスではありません。"
+msgstr "ユーザはサンドボックスではありません。"
 
 #: actions/unsilence.php:72
 msgid "User is not silenced."
-msgstr "利用者はサイレンスではありません。"
+msgstr "ユーザはサイレンスではありません。"
 
 #: actions/unsubscribe.php:77
 msgid "No profile id in request."
@@ -3713,7 +4124,7 @@ msgstr "リクエスト内にプロファイルIDがありません。"
 msgid "Unsubscribed"
 msgstr "フォロー解除済み"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3724,89 +4135,69 @@ msgstr ""
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
 #: lib/personalgroupnav.php:115
 msgid "User"
-msgstr "利用者"
+msgstr "ユーザ"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr "この StatusNet サイトの利用者設定。"
+msgstr "この StatusNet サイトのユーザ設定。"
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "不正な自己紹介制限。数字である必要があります。"
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "不正なウェルカムテキスト。最大長は255字です。"
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr "不正なデフォルトフォローです: '%1$s'  は利用者ではありません。"
+msgstr "不正なデフォルトフォローです: '%1$s'  はユーザではありません。"
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "プロファイル"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "自己紹介制限"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "プロファイル自己紹介の最大文字長。"
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
-msgstr "新しい利用者"
+msgstr "新しいユーザ"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
-msgstr "新しい利用者を歓迎"
+msgstr "新しいユーザを歓迎"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr "新しい利用者へのウェルカムテキスト (最大255字)。"
+msgstr "新しいユーザへのウェルカムテキスト (最大255字)。"
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "デフォルトフォロー"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
-msgstr "自動的にこの利用者に新しい利用者をフォローしてください。"
+msgstr "自動的にこのユーザに新しいユーザをフォローしてください。"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "招待"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "招待が可能"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
-msgstr "利用者が新しい利用者を招待するのを許容するかどうか。"
-
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "セッション"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "セッションの扱い"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "自分達でセッションを扱うのであるかどうか。"
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "セッションデバッグ"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "セッションのためのデバッグ出力をオン。"
+msgstr "ユーザが新しいユーザを招待するのを許容するかどうか。"
 
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
@@ -3821,36 +4212,36 @@ msgstr ""
 "ユーザのつぶやきをフォローするには詳細を確認して下さい。だれかのつぶやきを"
 "フォローするために尋ねない場合は、\"Reject\" をクリックして下さい。"
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "ライセンス"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "承認"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "このユーザーをフォロー"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "拒否"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "このフォローを拒否"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "認証のリクエストがありません。"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "フォローが承認されました"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3860,11 +4251,11 @@ msgstr ""
 "フォローを承認するかに関する詳細のためのサイトの指示をチェックしてください。"
 "あなたのフォロートークンは:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "フォローが拒否"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3874,37 +4265,37 @@ msgstr ""
 "フォローを完全に拒絶するかに関する詳細のためのサイトの指示をチェックしてくだ"
 "さい。"
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "リスナー URI  ‘%s’ はここでは見つかりません。"
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "リスニー URI  ‘%s’ が長すぎます。"
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "リスニー URI  ‘%s’ はローカルユーザーではありません。"
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "プロファイル URL  ‘%s’ はローカルユーザーではありません。"
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "アバター URL  ‘%s’ が正しくありません。"
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "アバターURL を読み取れません '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "アバター URL '%s' は不正な画像形式。"
@@ -3926,6 +4317,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "あなたのhotdogを楽しんでください!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s グループ、ページ %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "もっとグループを検索"
@@ -3954,10 +4350,6 @@ msgstr ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "コントリビュータ"
@@ -3989,11 +4381,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "プラグイン"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "名前"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "バージョン"
 
@@ -4001,10 +4389,6 @@ msgstr "バージョン"
 msgid "Author(s)"
 msgstr "作者"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "概要"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4028,19 +4412,16 @@ msgstr ""
 "これほど大きいファイルはあなたの%dバイトの毎月の割当てを超えているでしょう。"
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "グループプロファイル"
+msgstr "グループ参加に失敗しました。"
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\82\92æ\9b´æ\96°ã\81§ã\81\8dません。"
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\81®ä¸\80é\83¨ã\81§ã\81¯ã\81\82ã\82\8aません。"
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "グループプロファイル"
+msgstr "グループ脱退に失敗しました。"
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4059,26 +4440,26 @@ msgstr "メッセージを追加できません。"
 msgid "Could not update message with new URI."
 msgstr "新しいURIでメッセージをアップデートできませんでした。"
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "ハッシュタグ追加 DB エラー: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "つぶやきを保存する際に問題が発生しました。長すぎです。"
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
-msgstr "つぶやきを保存する際に問題が発生しました。不明な利用者です。"
+msgstr "つぶやきを保存する際に問題が発生しました。不明なユーザです。"
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "多すぎるつぶやきが速すぎます; 数分間の休みを取ってから再投稿してください。"
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4086,34 +4467,57 @@ msgstr ""
 "多すぎる重複メッセージが速すぎます; 数分間休みを取ってから再度投稿してくださ"
 "い。"
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "あなたはこのサイトでつぶやきを投稿するのが禁止されています。"
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "つぶやきを保存する際に問題が発生しました。"
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "返信を追加する際にデータベースエラー : %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "グループ受信箱を保存する際に問題が発生しました。"
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "あなたはフォローが禁止されました。"
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "すでにフォローしています!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "ユーザはあなたをブロックしました。"
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "フォローしていません!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "自己フォローを削除できません。"
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "フォローを削除できません"
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "ようこそ %1$s、@%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "グループを作成できません。"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "グループメンバーシップをセットできません。"
 
@@ -4154,128 +4558,124 @@ msgstr ""
 msgid "Untitled page"
 msgstr "名称未設定ページ"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "プライマリサイトナビゲーション"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "ホーム"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "パーソナルプロファイルと友人のタイムライン"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "アカウント"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "メールアドレス、アバター、パスワード、プロパティの変更"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "接続"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "サービスへ接続"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "サイト設定の変更"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "招待"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "友人や同僚が %s で加わるよう誘ってください。"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "ログアウト"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "サイトからログアウト"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "アカウントを作成"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "サイトへログイン"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "ヘルプ"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "助けて!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "検索"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "人々かテキストを検索"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "サイトつぶやき"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "ローカルビュー"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "ページつぶやき"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "セカンダリサイトナビゲーション"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "About"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "よくある質問"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "プライバシー"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "ソース"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "連絡先"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "バッジ"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet ソフトウェアライセンス"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4284,12 +4684,12 @@ msgstr ""
 "**%%site.name%%** は [%%site.broughtby%%](%%site.broughtbyurl%%) が提供するマ"
 "イクロブログサービスです。 "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** はマイクロブログサービスです。 "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4300,33 +4700,55 @@ msgstr ""
 "いています。 ライセンス [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)。"
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "サイト内容ライセンス"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "全て "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "ライセンス。"
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "ページ化"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "<<後"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "前>>"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "あなたのセッショントークンに関する問題がありました。"
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4356,10 +4778,100 @@ msgstr "基本サイト設定"
 msgid "Design configuration"
 msgstr "デザイン設定"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "ユーザ設定"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "アクセス設定"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "パス設定"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "セッション設定"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"APIリソースは読み書きアクセスが必要です、しかしあなたは読みアクセスしか持って"
+"いません。"
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "アプリケーション編集"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "このアプリケーションのアイコン"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "あなたのアプリケーションを %d 字以内記述"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "あなたのアプリケーションを記述"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "ソース URL"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "このアプリケーションのホームページの URL"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "このアプリケーションに責任がある組織"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "組織のホームページのURL"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "認証の後にリダイレクトするURL"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "ブラウザ"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "デスクトップ"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "アプリケーション、ブラウザ、またはデスクトップのタイプ"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "リードオンリー"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "リードライト"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"このアプリケーションのためのデフォルトアクセス: リードオンリー、またはリード"
+"ライト"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "取消し"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "添付"
@@ -4380,11 +4892,11 @@ msgstr "この添付が現れるつぶやき"
 msgid "Tags for this attachment"
 msgstr "この添付のタグ"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "パスワード変更に失敗しました"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "パスワード変更は許可されていません"
 
@@ -4436,7 +4948,7 @@ msgstr "その ID によるつぶやきは存在していません"
 #: lib/command.php:168 lib/command.php:406 lib/command.php:467
 #: lib/command.php:523
 msgid "User has no last notice"
-msgstr "利用者はまだつぶやいていません"
+msgstr "ユーザはまだつぶやいていません"
 
 #: lib/command.php:190
 msgid "Notice marked as fave."
@@ -4449,7 +4961,7 @@ 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
@@ -4459,7 +4971,7 @@ 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
@@ -4533,79 +5045,89 @@ msgstr "つぶやき保存エラー。"
 
 #: lib/command.php:547
 msgid "Specify the name of the user to subscribe to"
-msgstr "フォローする利用者の名前を指定してください"
+msgstr "フォローするユーザの名前を指定してください"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "そのようなユーザはいません。"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "%s をフォローしました"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "フォローをやめるユーザの名前を指定してください"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "%s のフォローをやめる"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "コマンドはまだ実装されていません。"
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "通知オフ。"
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "通知をオフできません。"
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "通知オン。"
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "通知をオンできません。"
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "ログインコマンドが無効になっています。"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr "このリンクは、かつてだけ使用可能であり、2分間だけ良いです: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "%s のフォローをやめる"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "あなたはだれにもフォローされていません。"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "あなたはこの人にフォローされています:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "誰もフォローしていません。"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "この人はあなたにフォローされている:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "あなたはどのグループのメンバーでもありません。"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "あなたはこのグループのメンバーではありません:"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4619,6 +5141,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4646,21 +5169,21 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "コンフィギュレーションファイルがありません。 "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "私は以下の場所でコンフィギュレーションファイルを探しました: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 "あなたは、これを修理するためにインストーラを動かしたがっているかもしれませ"
 "ん。"
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "インストーラへ。"
 
@@ -4676,6 +5199,14 @@ msgstr "インスタントメッセンジャー(IM)での更新"
 msgid "Updates by SMS"
 msgstr "SMSでの更新"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "接続"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "承認された接続アプリケーション"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "データベースエラー"
@@ -4785,7 +5316,7 @@ msgstr "ブロック"
 #: lib/groupnav.php:102
 #, php-format
 msgid "%s blocked users"
-msgstr "%s ブロック利用者"
+msgstr "%s ブロックユーザ"
 
 #: lib/groupnav.php:108
 #, php-format
@@ -4817,7 +5348,7 @@ msgstr "投稿が多いグループ"
 #: lib/grouptagcloudsection.php:56
 #, php-format
 msgid "Tags in %s group's notices"
-msgstr "%s グループの通知にあるタグ"
+msgstr "%s グループのつぶやきにあるタグ"
 
 #: lib/htmloutputter.php:103
 msgid "This page is not available in a media type you accept"
@@ -4860,15 +5391,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "不明な言語 \"%s\""
+msgstr "不明な受信箱のソース %d。"
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4910,7 +5441,7 @@ msgstr ""
 "\n"
 "だれかがこのメールアドレスを %s に入力しました。\n"
 "\n"
-"もしエントリーを確認したいなら、以下のURLを使用してください:\n"
+"もし登録を承認したいなら、以下のURLを使用してください:\n"
 "\n"
 "%s\n"
 "\n"
@@ -5134,18 +5665,18 @@ msgstr ""
 
 #: lib/mailbox.php:89
 msgid "Only the user can read their own mailboxes."
-msgstr "利用者だけがそれら自身のメールボックスを読むことができます。"
+msgstr "ユーザだけがかれら自身のメールボックスを読むことができます。"
 
 #: lib/mailbox.php:139
 msgid ""
 "You have no private messages. You can send private message to engage other "
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
-"あなたには、プライベートメッセージが全くありません。あなたは他の利用者を会話"
+"あなたには、プライベートメッセージが全くありません。あなたは他のユーザを会話"
 "に引き込むプライベートメッセージを送ることができます。人々はあなただけへの"
 "メッセージを送ることができます。"
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "from"
 
@@ -5266,61 +5797,59 @@ msgid "Do not share my location"
 msgstr "あなたの場所を共有しない"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "この情報を隠す"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"すみません、あなたの位置を検索するのが予想より長くかかっています、後でもう一"
+"度試みてください"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "北"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "S"
 msgstr "南"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 #, fuzzy
 msgid "E"
 msgstr "東"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 #, fuzzy
 msgid "W"
 msgstr "西"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "at"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr ""
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "このつぶやきへ返信"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "返信"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "つぶやきを繰り返しました"
 
@@ -5352,11 +5881,7 @@ msgstr "リモートプロファイル追加エラー"
 msgid "Duplicate notice"
 msgstr "重複したつぶやき"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "あなたはフォローが禁止されました。"
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "サブスクリプションを追加できません"
 
@@ -5372,19 +5897,19 @@ msgstr "返信"
 msgid "Favorites"
 msgstr "お気に入り"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "受信箱"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "あなたの入ってくるメッセージ"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "送信箱"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "あなたが送ったメッセージ"
 
@@ -5415,11 +5940,11 @@ msgstr "すべてのフォローされている"
 
 #: lib/profileaction.php:178
 msgid "User ID"
-msgstr "利用者ID"
+msgstr "ユーザID"
 
 #: lib/profileaction.php:183
 msgid "Member since"
-msgstr "からのメンバー"
+msgstr "利用開始日"
 
 #: lib/profileaction.php:245
 msgid "All groups"
@@ -5461,6 +5986,10 @@ msgstr "このつぶやきを繰り返しますか?"
 msgid "Repeat this notice"
 msgstr "このつぶやきを繰り返す"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "single-user モードのためのシングルユーザが定義されていません。"
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "サンドボックス"
@@ -5528,34 +6057,6 @@ msgstr "人々は %s をフォローしました。"
 msgid "Groups %s is a member of"
 msgstr "グループ %s はメンバー"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "すでにフォローしています!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "利用者はあなたをブロックしました。"
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "フォローできません。"
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "他の人があなたをフォローできません。"
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "フォローしていません!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "自己フォローを削除できません。"
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "フォローを削除できません"
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5592,7 +6093,7 @@ msgstr "この利用者をアンサイレンス"
 
 #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
 msgid "Unsubscribe from this user"
-msgstr "このユーザからのフォローを解除する"
+msgstr "この利用者からのフォローを解除する"
 
 #: lib/unsubscribeform.php:137
 msgid "Unsubscribe"
@@ -5606,68 +6107,68 @@ msgstr "アバターを編集する"
 msgid "User actions"
 msgstr "利用者アクション"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "プロファイル設定編集"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "編集"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "この利用者にダイレクトメッセージを送る"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "メッセージ"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 #, fuzzy
 msgid "Moderate"
-msgstr "司会"
+msgstr "管理"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "数秒前"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "約 1 分前"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "約 %d 分前"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "約 1 時間前"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "約 %d 時間前"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "約 1 日前"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "約 %d 日前"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "約 1 ヵ月前"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "約 %d ヵ月前"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "約 1 年前"
 
@@ -5681,7 +6182,7 @@ msgstr "%sは有効な色ではありません!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s は有効な色ではありません! 3か6の16進数を使ってください。"
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "メッセージが長すぎます - 最大 %1$d 字、あなたが送ったのは %2$d。"
index f37715eca6dbf0af10216dba13bc6614350e75a1..1653bf31bc2d50b7ebc871f0ac27509203d269b1 100644 (file)
@@ -7,17 +7,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:40+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:15+0000\n"
 "Language-Team: Korean\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "수락"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "아바타 설정"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "회원가입"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "개인정보 취급방침"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "초대"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "차단하기"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "저장"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "아바타 설정"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -33,25 +92,29 @@ msgstr "그러한 태그가 없습니다."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "그러한 사용자는 없습니다."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s 와 친구들, %d 페이지"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +155,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +167,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s 및 친구들"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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에 있는 친구들의 업데이트!"
@@ -115,23 +178,23 @@ msgstr "%1$s 및 %2$s에 있는 친구들의 업데이트!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "API 메서드를 찾을 수 없습니다."
@@ -146,7 +209,7 @@ msgstr "API 메서드를 찾을 수 없습니다."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "이 메서드는 등록을 요구합니다."
 
@@ -177,8 +240,9 @@ msgstr "프로필을 저장 할 수 없습니다."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -299,12 +363,12 @@ msgstr "사용자를 업데이트 할 수 없습니다."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "두 개의 사용자 ID나 대화명을 입력해야 합니다."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "공개 stream을 불러올 수 없습니다."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "어떠한 상태도 찾을 수 없습니다."
@@ -329,7 +393,8 @@ msgstr "별명이 이미 사용중 입니다. 다른 별명을 시도해 보십
 msgid "Not a valid nickname."
 msgstr "유효한 별명이 아닙니다"
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -341,7 +406,8 @@ msgstr "홈페이지 주소형식이 올바르지 않습니다."
 msgid "Full name is too long (max 255 chars)."
 msgstr "실명이 너무 깁니다. (최대 255글자)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "설명이 너무 길어요. (최대 140글자)"
@@ -377,7 +443,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "API 메서드를 찾을 수 없습니다."
@@ -421,6 +487,115 @@ msgstr "%s 그룹"
 msgid "groups on %s"
 msgstr "그룹 행동"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "옳지 않은 크기"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "세션토큰에 문제가 있습니다. 다시 시도해주세요."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "사용자 이름이나 비밀 번호가 틀렸습니다."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "사용자 세팅 오류"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "해쉬테그를 추가 할 때에 데이타베이스 에러 : %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "잘못된 폼 제출"
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "계정"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "별명"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "비밀 번호"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "모든 것"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "이 메서드는 등록 또는 삭제를 요구합니다."
@@ -453,17 +628,17 @@ msgstr "아바타가 업데이트 되었습니다."
 msgid "No status with that ID found."
 msgstr "발견된 ID의 상태가 없습니다."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "너무 깁니다. 통지의 최대 길이는 140글자 입니다."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "찾지 못함"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -478,7 +653,7 @@ msgstr "지원하지 않는 그림 파일 형식입니다."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / %s의 좋아하는 글들"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s 좋아하는 글이 업데이트 됐습니다. %S에 의해 / %s."
@@ -489,7 +664,7 @@ msgstr "%s 좋아하는 글이 업데이트 됐습니다. %S에 의해 / %s."
 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!"
@@ -505,27 +680,22 @@ 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개!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "%s에 답신"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "%s에 답신"
@@ -535,7 +705,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
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "%2$s에 있는 %1$s의 업데이트!"
@@ -596,8 +766,8 @@ msgstr "원래 설정"
 msgid "Preview"
 msgstr "미리보기"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "삭제"
 
@@ -609,29 +779,6 @@ msgstr "올리기"
 msgid "Crop"
 msgstr "자르기"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "세션토큰에 문제가 있습니다. 다시 시도해주세요."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "잘못된 폼 제출"
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "당신의 아바타가 될 이미지영역을 지정하세요."
@@ -669,8 +816,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "아니오"
 
@@ -679,13 +827,13 @@ msgstr "아니오"
 msgid "Do not block this user"
 msgstr "이 사용자를 차단해제합니다."
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "이 사용자 차단하기"
 
@@ -771,7 +919,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "이메일 승인을 삭제 할 수 없습니다."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "주소 인증"
 
 #: actions/confirmaddress.php:159
@@ -789,10 +938,54 @@ msgstr "인증 코드"
 msgid "Notices"
 msgstr "통지"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "통지에 프로필이 없습니다."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "당신은 해당 그룹의 멤버가 아닙니다."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "당신의 세션토큰관련 문제가 있습니다."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "그러한 통지는 없습니다."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "이 통지를 지울 수 없습니다."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "이 게시글 삭제하기"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -824,7 +1017,7 @@ msgstr "정말로 통지를 삭제하시겠습니까?"
 msgid "Do not delete this notice"
 msgstr "이 통지를 지울 수 없습니다."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "이 게시글 삭제하기"
 
@@ -966,16 +1159,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "저장"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -988,10 +1171,87 @@ msgstr "이 메시지는 favorite이 아닙니다."
 msgid "Add to favorites"
 msgstr "좋아하는 게시글로 추가하기"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "그러한 문서는 없습니다."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "다른 옵션들"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "그러한 통지는 없습니다."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "다음 양식을 이용해 그룹을 편집하십시오."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "위와 같은 비밀 번호. 필수 사항."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "실명이 너무 깁니다. (최대 255글자)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "별명이 이미 사용중 입니다. 다른 별명을 시도해 보십시오."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "설명"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "홈페이지 주소형식이 올바르지 않습니다."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "위치가 너무 깁니다. (최대 255글자)"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "그룹을 업데이트 할 수 없습니다."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1020,7 +1280,7 @@ msgstr "설명이 너무 길어요. (최대 140글자)"
 msgid "Could not update group."
 msgstr "그룹을 업데이트 할 수 없습니다."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "좋아하는 게시글을 생성할 수 없습니다."
@@ -1063,7 +1323,8 @@ msgstr ""
 "주시기 바랍니다."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "취소"
 
@@ -1145,7 +1406,7 @@ msgid "Cannot normalize that email address"
 msgstr "그 이메일 주소를 정규화 할 수 없습니다."
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "유효한 이메일 주소가 아닙니다."
 
@@ -1157,7 +1418,7 @@ msgstr "그 이메일 주소는 이미 귀하의 것입니다."
 msgid "That email address already belongs to another user."
 msgstr "그 이메일 주소는 이미 다른 사용자의 소유입니다."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "확인 코드를 추가 할 수 없습니다."
@@ -1218,7 +1479,7 @@ msgstr "이 게시글은 이미 좋아하는 게시글입니다."
 msgid "Disfavor favorite"
 msgstr "좋아하는글 취소"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "인기있는 게시글"
@@ -1373,7 +1634,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 "사용자를 차단합니다."
@@ -1474,25 +1735,25 @@ msgstr "%s 그룹 회원, %d페이지"
 msgid "A list of the users in this group."
 msgstr "이 그룹의 회원리스트"
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1667,6 +1928,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "그 Jabber ID는 귀하의 것이 아닙니다."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "%s의 받은쪽지함"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1745,7 +2011,7 @@ msgstr "개인적인 메시지"
 msgid "Optionally add a personal message to the invitation."
 msgstr "초대장에 메시지 첨부하기."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "보내기"
 
@@ -1841,7 +2107,7 @@ msgstr "틀린 계정 또는 비밀 번호"
 msgid "Error setting user. You are probably not authorized."
 msgstr "인증이 되지 않았습니다."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "로그인"
@@ -1850,17 +2116,6 @@ msgstr "로그인"
 msgid "Login to site"
 msgstr "사이트에 로그인하세요."
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "별명"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "비밀 번호"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "자동 로그인"
@@ -1890,21 +2145,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 "관리자만 그룹을 편집할 수 있습니다."
@@ -1913,6 +2168,30 @@ msgstr "관리자만 그룹을 편집할 수 있습니다."
 msgid "No current status"
 msgstr "현재 상태가 없습니다."
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "그러한 통지는 없습니다."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "새 그룹을 만들기 위해 이 양식을 사용하세요."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "좋아하는 게시글을 생성할 수 없습니다."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "새로운 그룹"
@@ -2022,6 +2301,51 @@ msgstr "찔러 보기를 보냈습니다."
 msgid "Nudge sent!"
 msgstr "찔러 보기를 보냈습니다!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "다른 옵션들"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "당신은 해당 그룹의 멤버가 아닙니다."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "통지에 프로필이 없습니다."
@@ -2040,8 +2364,8 @@ msgstr "연결"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "지원하는 형식의 데이터가 아닙니다."
 
@@ -2054,7 +2378,8 @@ msgid "Notice Search"
 msgstr "통지 검색"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "기타 설정"
 
 #: actions/othersettings.php:71
@@ -2111,6 +2436,11 @@ msgstr "옳지 않은 통지 내용"
 msgid "Login token expired."
 msgstr "사이트에 로그인하세요."
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "%s의 보낸쪽지함"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2181,7 +2511,7 @@ msgstr "새 비밀번호를 저장 할 수 없습니다."
 msgid "Password saved."
 msgstr "비밀 번호 저장"
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2189,142 +2519,159 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "이 페이지는 귀하가 승인한 미디어 타입에서는 이용할 수 없습니다."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "초대"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
-msgstr ""
-
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
 #, fuzzy
-msgid "Site path"
+msgid "Server"
+msgstr "복구"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+#, fuzzy
+msgid "Site path"
 msgstr "사이트 공지"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "아바타"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "아바타 설정"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "아바타가 업데이트 되었습니다."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "아바타가 업데이트 되었습니다."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "복구"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "통지"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "복구"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "사이트 공지"
@@ -2387,7 +2734,7 @@ msgid "Full name"
 msgstr "실명"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "홈페이지"
 
@@ -2411,7 +2758,7 @@ msgstr "자기소개"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "위치"
@@ -2435,7 +2782,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr "당신을 위한 태그, (문자,숫자,-, ., _로 구성) 콤마 혹은 공백으로 구분."
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "언어"
 
@@ -2461,7 +2808,7 @@ msgstr "나에게 구독하는 사람에게 자동 구독 신청"
 msgid "Bio is too long (max %d chars)."
 msgstr "자기소개가 너무 깁니다. (최대 140글자)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "타임존이 설정 되지 않았습니다."
 
@@ -2474,24 +2821,24 @@ msgstr "언어가 너무 깁니다. (최대 50글자)"
 msgid "Invalid tag: \"%s\""
 msgstr "유효하지 않은태그: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "자동구독에 사용자를 업데이트 할 수 없습니다."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "태그를 저장할 수 없습니다."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "프로필을 저장 할 수 없습니다."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "태그를 저장할 수 없습니다."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "설정 저장"
 
@@ -2513,39 +2860,39 @@ msgstr "공개 타임라인, %d 페이지"
 msgid "Public timeline"
 msgstr "퍼블릭 타임라인"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "퍼블릭 스트림 피드"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "퍼블릭 스트림 피드"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "퍼블릭 스트림 피드"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2554,7 +2901,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2589,7 +2936,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "태그 클라우드"
 
@@ -2727,7 +3074,7 @@ msgstr "확인 코드 오류"
 msgid "Registration successful"
 msgstr "회원 가입이 성공적입니다."
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "회원가입"
@@ -2769,7 +3116,7 @@ msgid "Same as password above. Required."
 msgstr "위와 같은 비밀 번호. 필수 사항."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "이메일"
 
@@ -2874,7 +3221,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "다른 마이크로블로깅 서비스의 귀하의 프로필 URL"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "구독"
 
@@ -2917,7 +3264,7 @@ msgstr "라이선스에 동의하지 않는다면 등록할 수 없습니다."
 msgid "You already repeated that notice."
 msgstr "당신은 이미 이 사용자를 차단하고 있습니다."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "생성"
@@ -2933,6 +3280,11 @@ msgstr "생성"
 msgid "Replies to %s"
 msgstr "%s에 답신"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "%2$s에서 %1$s까지 메시지"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2974,6 +3326,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "%2$s에서 %1$s까지 메시지"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "아바타가 업데이트 되었습니다."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2984,6 +3341,125 @@ msgstr "당신은 이 사용자에게 메시지를 보낼 수 없습니다."
 msgid "User is already sandboxed."
 msgstr "회원이 당신을 차단해왔습니다."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "아바타 설정"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "그룹을 떠나기 위해서는 로그인해야 합니다."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "통지에 프로필이 없습니다."
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "별명"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "페이지수"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "설명"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "통계"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "정말로 통지를 삭제하시겠습니까?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s 님의 좋아하는 글들"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "좋아하는 게시글을 복구할 수 없습니다."
@@ -3033,17 +3509,22 @@ msgstr ""
 msgid "%s group"
 msgstr "%s 그룹"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s 그룹 회원, %d페이지"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "그룹 프로필"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "설명"
 
@@ -3089,10 +3570,6 @@ msgstr "(없습니다.)"
 msgid "All members"
 msgstr "모든 회원"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "통계"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3152,6 +3629,11 @@ msgstr "게시글이 등록되었습니다."
 msgid " tagged %s"
 msgstr "%s 태그된 통지"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s 와 친구들, %d 페이지"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3177,25 +3659,25 @@ msgstr "%s의 통지 피드"
 msgid "FOAF for %s"
 msgstr "%s의 보낸쪽지함"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3204,7 +3686,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3214,7 +3696,7 @@ msgstr ""
 "**%s**는 %%%%site.name%%%% [마이크로블로깅](http://en.wikipedia.org/wiki/"
 "Micro-blogging) 서비스에 계정을 갖고 있습니다."
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "%s에 답신"
@@ -3233,207 +3715,148 @@ msgstr "회원이 당신을 차단해왔습니다."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "유효한 이메일 주소가 아닙니다."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "사이트 공지"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "%s에 포스팅 할 새로운 이메일 주소"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "로컬 뷰"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "언어 설정"
 
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "복구"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "수락"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "개인정보 취급방침"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "초대"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "차단하기"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "아바타 설정"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3539,15 +3962,26 @@ msgstr "코드가 입력 되지 않았습니다."
 msgid "You are not subscribed to that profile."
 msgstr "당신은 이 프로필에 구독되지 않고있습니다."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "구독을 저장할 수 없습니다."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "로컬 사용자 아닙니다."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "그러한 통지는 없습니다."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "당신은 이 프로필에 구독되지 않고있습니다."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "구독하였습니다."
 
@@ -3607,7 +4041,7 @@ msgstr "귀하의 통지를 받고 있는 사람"
 msgid "These are the people whose notices %s listens to."
 msgstr "%s님이 받고 있는 통지의 사람"
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3617,19 +4051,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s 는 지금 듣고 있습니다."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "이용자 셀프 테크 %s - %d 페이지"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3659,7 +4098,8 @@ msgstr "태그 %s"
 msgid "User profile"
 msgstr "이용자 프로필"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "사진"
 
@@ -3720,7 +4160,7 @@ msgstr "요청한 프로필id가 없습니다."
 msgid "Unsubscribed"
 msgstr "구독취소 되었습니다."
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3735,89 +4175,69 @@ msgstr "이용자"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "프로필"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "새 사용자를 초대"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "모든 예약 구독"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "나에게 구독하는 사람에게 자동 구독 신청"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "초대권을 보냈습니다"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "초대권을 보냈습니다"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "구독을 허가"
@@ -3832,38 +4252,38 @@ msgstr ""
 "사용자의 통지를 구독하려면 상세를 확인해 주세요. 구독하지 않는 경우는, \"취소"
 "\"를 클릭해 주세요."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 #, fuzzy
 msgid "License"
 msgstr "라이선스"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "수락"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "이 회원을 구독합니다."
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "거부"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "%s 구독"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "허용되지 않는 요청입니다."
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "구독 허가"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3873,11 +4293,11 @@ msgstr ""
 "구독이 승인 되었습니다. 하지만 콜백 URL이 통과 되지 않았습니다. 웹사이트의 지"
 "시를 찾아 구독 승인 방법에 대하여 읽어보십시오. 귀하의 구독 토큰은 : "
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "구독 거부"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3887,37 +4307,37 @@ msgstr ""
 "구독이 해지 되었습니다. 하지만 콜백 URL이 통과 되지 않았습니다. 웹사이트의 지"
 "시를 찾아 구독 해지 방법에 대하여 읽어보십시오."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "아바타 URL '%s'을(를) 읽어낼 수 없습니다."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "%S 잘못된 그림 파일 타입입니다. "
@@ -3937,6 +4357,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s 그룹 회원, %d페이지"
+
 #: actions/usergroups.php:130
 #, fuzzy
 msgid "Search for more groups"
@@ -3964,11 +4389,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "아바타가 업데이트 되었습니다."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4000,12 +4420,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "별명"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "개인적인"
@@ -4014,10 +4429,6 @@ msgstr "개인적인"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "설명"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4068,28 +4479,28 @@ msgstr "메시지를 삽입할 수 없습니다."
 msgid "Could not update message with new URI."
 msgstr "새 URI와 함께 메시지를 업데이트할 수 없습니다."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "해쉬테그를 추가 할 때에 데이타베이스 에러 : %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "통지를 저장하는데 문제가 발생했습니다."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "게시글 저장문제. 알려지지않은 회원"
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "너무 많은 게시글이 너무 빠르게 올라옵니다. 한숨고르고 몇분후에 다시 포스트를 "
 "해보세요."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4098,34 +4509,61 @@ msgstr ""
 "너무 많은 게시글이 너무 빠르게 올라옵니다. 한숨고르고 몇분후에 다시 포스트를 "
 "해보세요."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "이 사이트에 게시글 포스팅으로부터 당신은 금지되었습니다."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "통지를 저장하는데 문제가 발생했습니다."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "답신을 추가 할 때에 데이타베이스 에러 : %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "통지를 저장하는데 문제가 발생했습니다."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "이 회원은 구독으로부터 당신을 차단해왔다."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "회원이 당신을 차단해왔습니다."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "구독하고 있지 않습니다!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "예약 구독을 삭제 할 수 없습니다."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "예약 구독을 삭제 할 수 없습니다."
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "%2$s에서 %1$s까지 메시지"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "새 그룹을 만들 수 없습니다."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "그룹 맴버십을 세팅할 수 없습니다."
 
@@ -4167,131 +4605,127 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "제목없는 페이지"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "주 사이트 네비게이션"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "홈"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "개인 프로필과 친구 타임라인"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "계정"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "당신의 이메일, 아바타, 비밀 번호, 프로필을 변경하세요."
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "연결"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "서버에 재접속 할 수 없습니다 : %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "주 사이트 네비게이션"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "초대"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "%s에 친구를 가입시키기 위해 친구와 동료를 초대합니다."
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "로그아웃"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "이 사이트로부터 로그아웃"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "계정 만들기"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "이 사이트 로그인"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "도움말"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "도움이 필요해!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "검색"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "프로필이나 텍스트 검색"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "사이트 공지"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "로컬 뷰"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "페이지 공지"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "보조 사이트 네비게이션"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "정보"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "자주 묻는 질문"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "개인정보 취급방침"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "소스 코드"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "연락하기"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "찔러 보기"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "라코니카 소프트웨어 라이선스"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4300,12 +4734,12 @@ msgstr ""
 "**%%site.name%%** 는 [%%site.broughtby%%](%%site.broughtbyurl%%)가 제공하는 "
 "마이크로블로깅서비스입니다."
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** 는 마이크로블로깅서비스입니다."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4316,34 +4750,56 @@ msgstr ""
 "을 사용합니다. StatusNet는 [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html) 라이선스에 따라 사용할 수 있습니다."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "라코니카 소프트웨어 라이선스"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "모든 것"
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "라이선스"
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "페이지수"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "뒷 페이지"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "앞 페이지"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "당신의 세션토큰관련 문제가 있습니다."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4380,11 +4836,105 @@ msgstr "이메일 주소 확인서"
 msgid "Design configuration"
 msgstr "SMS 인증"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS 인증"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS 인증"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS 인증"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS 인증"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "140글자로 그룹이나 토픽 설명하기"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "140글자로 그룹이나 토픽 설명하기"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "소스 코드"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "그룹 혹은 토픽의 홈페이지나 블로그 URL"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "그룹 혹은 토픽의 홈페이지나 블로그 URL"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "삭제"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4406,12 +4956,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "비밀번호 변경"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "비밀번호 변경"
@@ -4565,80 +5115,89 @@ msgstr "통지를 저장하는데 문제가 발생했습니다."
 msgid "Specify the name of the user to subscribe to"
 msgstr "구독하려는 사용자의 이름을 지정하십시오."
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "그러한 사용자는 없습니다."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "%s에게 구독되었습니다."
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "구독을 해제하려는 사용자의 이름을 지정하십시오."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "%s에서 구독을 해제했습니다."
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "명령이 아직 실행되지 않았습니다."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "알림끄기."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "알림을 끌 수 없습니다."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "알림이 켜졌습니다."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "알림을 켤 수 없습니다."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "%s에서 구독을 해제했습니다."
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "당신은 이 프로필에 구독되지 않고있습니다."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "당신은 다음 사용자를 이미 구독하고 있습니다."
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "다른 사람을 구독 하실 수 없습니다."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "다른 사람을 구독 하실 수 없습니다."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "당신은 해당 그룹의 멤버가 아닙니다."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "당신은 해당 그룹의 멤버가 아닙니다."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4652,6 +5211,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4679,20 +5239,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "확인 코드가 없습니다."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "이 사이트 로그인"
@@ -4709,6 +5269,15 @@ msgstr "인스턴트 메신저에 의한 업데이트"
 msgid "Updates by SMS"
 msgstr "SMS에 의한 업데이트"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "연결"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4896,12 +5465,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5104,7 +5673,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr "다음에서:"
@@ -5223,60 +5792,56 @@ msgid "Do not share my location"
 msgstr "태그를 저장할 수 없습니다."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "아니오"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "내용이 없습니다!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "생성"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "이 게시글에 대해 답장하기"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "답장하기"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "게시글이 등록되었습니다."
@@ -5310,12 +5875,7 @@ msgstr "리모트 프로필 추가 오류"
 msgid "Duplicate notice"
 msgstr "통지 삭제"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "이 회원은 구독으로부터 당신을 차단해왔다."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "예약 구독을 추가 할 수 없습니다."
 
@@ -5331,19 +5891,19 @@ msgstr "답신"
 msgid "Favorites"
 msgstr "좋아하는 글들"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "받은 쪽지함"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "당신의 받은 메시지들"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "보낸 쪽지함"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "당신의 보낸 메시지들"
 
@@ -5425,6 +5985,10 @@ msgstr "이 게시글에 대해 답장하기"
 msgid "Repeat this notice"
 msgstr "이 게시글에 대해 답장하기"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5498,36 +6062,6 @@ msgstr "%s에 의해 구독되는 사람들"
 msgid "Groups %s is a member of"
 msgstr "%s 그룹들은  의 멤버입니다."
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "회원이 당신을 차단해왔습니다."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "구독 하실 수 없습니다."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "다른 사람을 구독 하실 수 없습니다."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "구독하고 있지 않습니다!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "예약 구독을 삭제 할 수 없습니다."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "예약 구독을 삭제 할 수 없습니다."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5581,68 +6115,68 @@ msgstr "아바타"
 msgid "User actions"
 msgstr "사용자 동작"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "프로필 세팅"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "이 회원에게 직접 메시지를 보냅니다."
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "메시지"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "몇 초 전"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "1분 전"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "%d분 전"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "1시간 전"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "%d시간 전"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "하루 전"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "%d일 전"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "1달 전"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "%d달 전"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "1년 전"
 
@@ -5656,7 +6190,7 @@ msgstr "홈페이지 주소형식이 올바르지 않습니다."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "당신이 보낸 메시지가 너무 길어요. 최대 140글자까지입니다."
index 4bda795f0a3c93b7c13e4002841ca8e93113eb8a..14efaf620dfba574d5b950464e97edaf57c66838 100644 (file)
@@ -9,17 +9,71 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:43+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:18+0000\n"
 "Language-Team: Macedonian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural= n==1 || n%10==1 ? 0 : 1;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Пристап"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Нагодувања за пристап на веб-страницата"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Регистрација"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Приватен"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Да им забранам на анонимните (ненајавени) корисници да ја гледаат веб-"
+"страницата?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Само со покана"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Регистрирање само со покана."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Затворен"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Оневозможи нови регистрации."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Зачувај"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Зачувај нагодувања на пристап"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +88,29 @@ msgstr "Нема таква страница"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Нема таков корисник."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s и пријателите, стр. %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -99,7 +157,7 @@ msgstr ""
 "на корисникот или да [објавите нешто што сакате тој да го прочита](%%%%"
 "action.newnotice%%%%?status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -113,8 +171,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Вие и пријателите"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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!"
@@ -124,23 +182,23 @@ msgstr "Подновувања од %1$s и пријатели на %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API методот не е пронајден."
 
@@ -154,7 +212,7 @@ msgstr "API методот не е пронајден."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Овој метод бара POST."
 
@@ -185,8 +243,9 @@ msgstr "Не може да се зачува профил."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -305,11 +364,11 @@ msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 "Мора да бидат наведени два кориснички идентификатора (ID) или две имиња."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Не можев да го утврдам целниот корисник."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Не можев да го пронајдам целниот корисник."
 
@@ -331,7 +390,8 @@ msgstr "Тој прекар е во употреба. Одберете друг.
 msgid "Not a valid nickname."
 msgstr "Неправилен прекар."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -343,7 +403,8 @@ msgstr "Главната страница не е важечка URL-адрес
 msgid "Full name is too long (max 255 chars)."
 msgstr "Целото име е предолго (максимум 255 знаци)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Описот е предолг (дозволено е највеќе %d знаци)."
@@ -379,7 +440,7 @@ msgstr "Алијасот не може да биде ист како прека
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Групата не е пронајдена!"
 
@@ -420,6 +481,115 @@ msgstr "%s групи"
 msgid "groups on %s"
 msgstr "групи на %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Нема наведено oauth_token параметар."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Погрешен жетон."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Се поајви проблем со Вашиот сесиски жетон. Обидете се повторно."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Погрешен прекар / лозинка!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Грешка при бришењето на корисникот на OAuth-програмот."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+"Грешка во базата на податоци при вметнувањето на корисникот на OAuth-"
+"програмот."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr "Жетонот на барањето %s е одобрен. Заменете го со жетон за пристап."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Жетонот на барањето %s е одбиен и поништен."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Неочекувано поднесување на образец."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Има програм кој сака да се поврзе со Вашата сметка"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Дозволи или одбиј пристап"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Програмот <strong>%1$s</strong> од <strong>%2$s</strong> би сакал да може да "
+"<strong>%3$s</strong> податоците за Вашата %4$s сметка. Треба да дозволувате "
+"пристап до Вашата %4$s сметка само на трети страни на кои им верувате."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Сметка"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Прекар"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Лозинка"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Одбиј"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Дозволи"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Дозволете или одбијте пристап до податоците за Вашата сметка."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Методот бара POST или DELETE."
@@ -449,17 +619,17 @@ msgstr "Статусот е избришан."
 msgid "No status with that ID found."
 msgstr "Нема пронајдено статус со тој ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Ова е предолго. Максималната дозволена должина изнесува %d знаци."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Не е пронајдено"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -475,7 +645,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."
@@ -486,7 +656,7 @@ msgstr "Подновувања на %1$s омилени на %2$s / %2$s."
 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!"
@@ -502,27 +672,22 @@ 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 подновуввања од сите!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Повторено од %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Повторено за %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Повторувања на %s"
@@ -532,7 +697,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!"
@@ -594,8 +759,8 @@ msgstr "Оригинал"
 msgid "Preview"
 msgstr "Преглед"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Бриши"
 
@@ -607,29 +772,6 @@ msgstr "Подигни"
 msgid "Crop"
 msgstr "Отсечи"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Се поајви проблем со Вашиот сесиски жетон. Обидете се повторно."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Неочекувано поднесување на образец."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Одберете квадратна површина од сликата за аватар"
@@ -669,8 +811,9 @@ msgstr ""
 "претплати на Вас во иднина, и нема да бидете известени ако имате @-одговори "
 "од корисникот."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Не"
 
@@ -678,13 +821,13 @@ msgstr "Не"
 msgid "Do not block this user"
 msgstr "Не го блокирај корисников"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "Блокирај го корисников"
 
@@ -767,8 +910,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Не можев да ја избришам потврдата по е-пошта."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
-msgstr "Потврди ја адресата"
+msgid "Confirm address"
+msgstr "Потврди адреса"
 
 #: actions/confirmaddress.php:159
 #, php-format
@@ -784,10 +927,51 @@ msgstr "Разговор"
 msgid "Notices"
 msgstr "Забелешки"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Мора да сте најавени за да можете да избришете програм."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Програмот не е пронајден."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Не сте сопственик на овој програм."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Се појави проблем со Вашиот сесиски жетон."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Избриши програм"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Дали се сигурни дека сакате да го избришете овој програм? Ова воедно ќе ги "
+"избрише сите податоци за програмот од базата, вклучувајќи ги сите постоечки "
+"поврзувања."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не го бриши овој програм"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Избриши го програмов"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -818,7 +1002,7 @@ msgstr "Дали сте сигурни дека сакате да ја избр
 msgid "Do not delete this notice"
 msgstr "Не ја бриши оваа забелешка"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Бриши ја оваа забелешка"
 
@@ -950,16 +1134,6 @@ msgstr "Врати основно-зададени нагодувања"
 msgid "Reset back to default"
 msgstr "Врати по основно"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Зачувај"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Зачувај изглед"
@@ -972,9 +1146,75 @@ msgstr "Оваа забелешка не Ви е омилена!"
 msgid "Add to favorites"
 msgstr "Додај во омилени"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Нема таков документ."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Нема документ со наслов „%s“"
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Уреди програм"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Мора да сте најавени за да можете да уредувате програми."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Нема таков програм."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Образецов служи за уредување на програмот."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Треба име."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Името е предолго (максимум 255 знаци)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Тоа име е во употреба. Одберете друго."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Треба опис."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Изворната URL-адреса е предолга."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Изворната URL-адреса е неважечка."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Треба организација."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Организацијата е предолга (максимумот е 255 знаци)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Треба домашна страница на организацијата."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Повикувањето е предолго."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "URL-адресата за повикување е неважечка."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Не можев да го подновам програмот."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -1003,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:433
 msgid "Could not create aliases."
 msgstr "Не можеше да се создадат алијаси."
 
@@ -1044,7 +1284,8 @@ msgstr ""
 "сандачето за спам!). Во писмото ќе следат понатамошни напатствија."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Откажи"
 
@@ -1127,7 +1368,7 @@ msgid "Cannot normalize that email address"
 msgstr "Неможам да ја нормализирам таа е-поштенска адреса"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Неправилна адреса за е-пошта."
 
@@ -1139,7 +1380,7 @@ msgstr "Оваа е-поштенска адреса е веќе Ваша."
 msgid "That email address already belongs to another user."
 msgstr "Таа е-поштенска адреса е веќе зафатена од друг корисник."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Кодот за потврда не може да се внесе."
@@ -1201,7 +1442,7 @@ msgstr "Оваа белешка е веќе омилена!"
 msgid "Disfavor favorite"
 msgstr "Тргни од омилени"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Популарни забелешки"
@@ -1349,7 +1590,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 "Блокирај корисник од група"
 
@@ -1449,23 +1690,23 @@ msgstr "Членови на групата %1$s, стр. %2$d"
 msgid "A list of the users in this group."
 msgstr "Листа на корисниците на овааг група."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "Направи го корисникот администратор"
 
@@ -1646,6 +1887,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Ова не е Вашиот Jabber ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Приемно сандаче за %1$s - стр. %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1730,7 +1976,7 @@ msgstr "Лична порака"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Можете да додадете и лична порака во поканата."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Испрати"
 
@@ -1830,7 +2076,7 @@ msgstr "Неточно корисничко име или лозинка"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Грешка при поставувањето на корисникот. Веројатно не се заверени."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Најава"
@@ -1839,17 +2085,6 @@ msgstr "Најава"
 msgid "Login to site"
 msgstr "Најавете се"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Прекар"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Лозинка"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Запамети ме"
@@ -1857,7 +2092,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?"
@@ -1880,21 +2116,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."
@@ -1903,6 +2139,26 @@ msgstr "Не можам да го направам корисникот %1$s а
 msgid "No current status"
 msgstr "Нема тековен статус"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Нов програм"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Мора да сте најавени за да можете да регистрирате програм."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Овој образец служи за регистрирање на нов програм."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Треба изворна URL-адреса."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Не можеше да се создаде програмот."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Нова група"
@@ -2018,6 +2274,49 @@ msgstr "Подбуцнувањето е испратено"
 msgid "Nudge sent!"
 msgstr "Подбуцнувањето е испратено!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Мора да сте најавени за да можете да ги наведете програмите."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "OAuth програми"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Програми што ги имате регистрирано"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Сè уште немате регистрирано ниеден програм,"
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Поврзани програми"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Им имате дозволено пристап до Вашата сметка на следните програми."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Не сте корисник на тој програм."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Не можам да му го одземам пристапот на програмот: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Му немате дозволено пристап до Вашата сметка на ниеден програм."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Развивачите можат да ги нагодат регистрациските поставки за нивните програми "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Забелешката нема профил"
@@ -2035,8 +2334,8 @@ msgstr "тип на содржини "
 msgid "Only "
 msgstr "Само "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Ова не е поддржан формат на податотека."
 
@@ -2049,7 +2348,7 @@ msgid "Notice Search"
 msgstr "Пребарување на забелешки"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Други нагодувања"
 
 #: actions/othersettings.php:71
@@ -2100,6 +2399,11 @@ msgstr "Назначен е неважечки најавен жетон."
 msgid "Login token expired."
 msgstr "Најавниот жетон е истечен."
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Излезно сандаче за %1$s - стр. %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2108,7 +2412,7 @@ msgstr "Излезно сандаче за %s"
 #: actions/outbox.php:116
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
-"Ð\9eва Ðµ Ð²ашето излезно сандче, во кое се наведени приватните пораки кои ги "
+"Ð\9eва Ðµ Ð\92ашето излезно сандче, во кое се наведени приватните пораки кои ги "
 "имате испратено."
 
 #: actions/passwordsettings.php:58
@@ -2172,7 +2476,7 @@ msgstr "Не можам да ја зачувам новата лозинка."
 msgid "Password saved."
 msgstr "Лозинката е зачувана."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Патеки"
 
@@ -2180,132 +2484,148 @@ msgstr "Патеки"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Нагодувања за патеки и сервери за оваа StatusNet веб-страница."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Директориумот на темата е нечитлив: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Директориумот на аватарот е недостапен за пишување: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Директориумот на позадината е нечитлив: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Директориумот на локалите е нечитлив: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Неважечки SSL-сервер. Дозволени се најмногу  255 знаци"
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Веб-страница"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Опслужувач"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Име на домаќинот на серверот на веб-страницата"
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Патека"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Патека на веб-страницата"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Патека до локалите"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Патека до директориумот на локалите"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Интересни URL-адреси"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Да користам интересни (почитливи и повпечатливи) URL-адреси?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Тема"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Сервер на темата"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Патека до темата"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Директориум на темата"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Аватари"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Сервер на аватарот"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Патека на аватарот"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Директориум на аватарот"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Позадини"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Сервер на позаднината"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Патека до позадината"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Директориум на позадината"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Никогаш"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Понекогаш"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Секогаш"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Користи SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Кога се користи SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-сервер"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Сервер, кому ќе му се испраќаат SSL-барања"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Зачувај патеки"
 
@@ -2370,7 +2690,7 @@ msgid "Full name"
 msgstr "Цело име"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Домашна страница"
 
@@ -2393,7 +2713,7 @@ msgstr "Биографија"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Локација"
@@ -2419,7 +2739,7 @@ msgstr ""
 "Ознаки за Вас самите (букви, бројки, -, . и _), одделени со запирка или "
 "празно место"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Јазик"
 
@@ -2447,7 +2767,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Биографијата е преголема (највеќе до %d знаци)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Не е избрана часовна зона."
 
@@ -2460,23 +2780,23 @@ msgstr "Јазикот е предлог (највеќе до 50 знаци)."
 msgid "Invalid tag: \"%s\""
 msgstr "Неважечка ознака: „%s“"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Не можев да го подновам корисникот за автопретплата."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Не можев да ги зачувам нагодувањата за локација"
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Не можам да го зачувам профилот."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Не можев да ги зачувам ознаките."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Нагодувањата се зачувани"
 
@@ -2498,19 +2818,19 @@ msgstr "Јавна историја, стр. %d"
 msgid "Public timeline"
 msgstr "Јавна историја"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Канал на јавниот поток (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Канал на јавниот поток (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Канал на јавниот поток (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2518,11 +2838,11 @@ msgid ""
 msgstr ""
 "Ова е јавната историја за %%site.name%%, но досега никој ништо нема објавено."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Создајте ја првата забелешка!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2530,7 +2850,7 @@ msgstr ""
 "Зошто не [регистрирате сметка](%%action.register%%) и станете првиот "
 "објавувач!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2544,7 +2864,7 @@ msgstr ""
 "споделувате забелешки за себе со приајтелите, семејството и колегите! "
 "([Прочитајте повеќе](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2582,7 +2902,7 @@ msgstr ""
 "Зошто не [регистрирате сметка](%%action.register%%) и станете прв што ќе "
 "објави!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Облак од ознаки"
 
@@ -2724,7 +3044,7 @@ msgstr "Жалиме, неважечки код за поканата."
 msgid "Registration successful"
 msgstr "Регистрацијата е успешна"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистрирај се"
@@ -2768,7 +3088,7 @@ msgid "Same as password above. Required."
 msgstr "Исто што и лозинката погоре. Задолжително поле."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Е-пошта"
 
@@ -2875,7 +3195,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL на Вашиот профил на друга компатибилна служба за микроблогирање."
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Претплати се"
 
@@ -2913,7 +3233,7 @@ msgstr "Не можете да повторувате сопствена заб
 msgid "You already repeated that notice."
 msgstr "Веќе ја имате повторено таа забелешка."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -2927,6 +3247,11 @@ msgstr "Повторено!"
 msgid "Replies to %s"
 msgstr "Одговори испратени до %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Одговори на %1$s, стр. %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2974,6 +3299,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Одговори на %1$s на %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Не можете да ставате корисници во песочен режим на оваа веб-страница."
@@ -2982,6 +3311,123 @@ msgstr "Не можете да ставате корисници во песоч
 msgid "User is already sandboxed."
 msgstr "Корисникот е веќе во песочен режим."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Сесии"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Нагодувања на сесиите за оваа StatusNet веб-страница."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Раководење со сесии"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Дали самите да си раководиме со сесиите."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Поправка на грешки во сесија"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Вклучи извод од поправка на грешки за сесии."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Зачувај нагодувања на веб-страницата"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Мора да сте најавени за да можете да го видите програмот."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Профил на програмот"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Икона"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Име"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Организација"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Опис"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Статистики"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Создадено од %1$s - основен пристап: %2$s - %3$d корисници"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Дејства на програмот"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Клуч за промена и тајна"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Инфо за програмот"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Потрошувачки клуч"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Потрошувачка тајна"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL на жетонот на барањето"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL на пристапниот жетон"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Одобри URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Напомена: Поддржуваме HMAC-SHA1 потписи. Не поддржуваме потпишување со прост "
+"текст."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+"Дали сте сигурни дека сакате да го смените вашиот кориснички клуч и тајната "
+"фраза?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Омилени забелешки на %1$s, стр. %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Не можев да ги вратам омилените забелешки."
@@ -3039,17 +3485,22 @@ msgstr "Ова е начин да го споделите она што Ви с
 msgid "%s group"
 msgstr "Група %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Група %1$s, стр. %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Профил на група"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Забелешка"
 
@@ -3095,10 +3546,6 @@ msgstr "(Нема)"
 msgid "All members"
 msgstr "Сите членови"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Статистики"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Создадено"
@@ -3163,6 +3610,11 @@ msgstr "Избришана забелешка"
 msgid " tagged %s"
 msgstr "  означено со %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, стр. %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3188,12 +3640,12 @@ msgstr "Канал со забелешки за %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF за %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Ова е историјата за %1$s, но %2$s сè уште нема објавено ништо."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3201,7 +3653,7 @@ msgstr ""
 "Имате видено нешто интересно во последно време? Сè уште немате објавено "
 "ниедна забелешка, но сега е добро време за да почнете :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3210,7 +3662,7 @@ msgstr ""
 "Можете да го подбуцнете корисникот %1$s или [да објавите нешто што сакате да "
 "го прочита](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3224,7 +3676,7 @@ msgstr ""
 "register%%%%) за да можете да ги следите забелешките на **%s** и многу "
 "повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3235,7 +3687,7 @@ msgstr ""
 "(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
 "програмска алатка [StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Повторувања на %s"
@@ -3252,203 +3704,149 @@ msgstr "Корисникот е веќе замолчен."
 msgid "Basic settings for this StatusNet site."
 msgstr "Основни нагодувања за оваа StatusNet веб-страница."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Должината на името на веб-страницата не може да изнесува нула."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Мора да имате важечка контактна е-поштенска адреса."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Непознат јазик „%s“"
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Неважечки URL за извештај од снимката."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Неважечка вредност на пуштањето на снимката."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Честотата на снимките мора да биде бројка."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Минималното ограничување на текстот изнесува 140 знаци."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Ограничувањето на дуплирањето мора да изнесува барем 1 секунда."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Општи"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Име на веб-страницата"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Името на Вашата веб-страница, како на пр. „Микроблог на Вашафирма“"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Овозможено од"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 "Текст за врската за наведување на авторите во долната колонцифра на секоја "
 "страница"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL-адреса на овозможувачот на услугите"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 "URL-адресата која е користи за врски за автори во долната колоцифра на "
 "секоја страница"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Контактна е-пошта за Вашата веб-страница"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Локално"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Основна часовна зона"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Матична часовна зона за веб-страницата; обично UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Основен јазик"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL-адреси"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Опслужувач"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Име на домаќинот на серверот на веб-страницата"
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Интересни URL-адреси"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Да користам интересни (почитливи и повпечатливи) URL-адреси?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Пристап"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Приватен"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Да им забранам на анонимните (ненајавени) корисници да ја гледаат веб-"
-"страницата?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Само со покана"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Регистрирање само со покана."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Затворен"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Оневозможи нови регистрации."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Снимки"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "По случајност во текот на посета"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Во зададена задача"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Снимки од податоци"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Кога да им се испраќаат статистички податоци на status.net серверите"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Честота"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Ќе се испраќаат снимки на секои N посети"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL на извештајот"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Снимките ќе се испраќаат на оваа URL-адреса"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Ограничувања"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Ограничување на текстот"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Максимален број на знаци за забелешки."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Ограничување на дуплирањето"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Колку долго треба да почекаат корисниците (во секунди) за да можат повторно "
 "да го објават истото."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Зачувај нагодувања на веб-страницата"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Нагодувања за СМС"
@@ -3501,11 +3899,11 @@ msgstr "Нема телефонски број."
 
 #: actions/smssettings.php:311
 msgid "No carrier selected."
-msgstr "Нема избрано оператор."
+msgstr "Немате избрано оператор."
 
 #: actions/smssettings.php:318
 msgid "That is already your phone number."
-msgstr "Ð\9eва Ð¸ Ñ\81ега Ðµ Ð²ашиот телефонски број."
+msgstr "Ð\9eва Ð¸ Ñ\81ега Ðµ Ð\92ашиот телефонски број."
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
@@ -3525,7 +3923,7 @@ msgstr "Ова е погрешен потврден број."
 
 #: actions/smssettings.php:405
 msgid "That is not your phone number."
-msgstr "Тоа Ð½Ðµ Ðµ Ð²ашиот телефонски број."
+msgstr "Тоа Ð½Ðµ Ðµ Ð\92ашиот телефонски број."
 
 #: actions/smssettings.php:465
 msgid "Mobile carrier"
@@ -3552,15 +3950,26 @@ msgstr "Нема внесено код"
 msgid "You are not subscribed to that profile."
 msgstr "Не сте претплатени на тој профил."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Не можев да ја зачувам претплатата."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Не е локален корисник."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Нема таква податотека."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Не сте претплатени на тој профил."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Претплатено"
 
@@ -3624,7 +4033,7 @@ msgstr "Ова се луѓето чии забелешки ги следите."
 msgid "These are the people whose notices %s listens to."
 msgstr "Ова се луѓето чии забелешки ги следи %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3639,19 +4048,24 @@ msgstr ""
 "(%%action.featured%%). Ако сте [корисник на Twitter](%%action.twittersettings"
 "%%), тука можете автоматски да се претплатите на луѓе кои таму ги следите."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s не следи никого."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "СМС"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Забелешки означени со %1$s, стр. %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3680,7 +4094,8 @@ msgstr "Означи %s"
 msgid "User profile"
 msgstr "Кориснички профил"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Фото"
 
@@ -3739,7 +4154,7 @@ msgstr "Во барањето нема id на профилот."
 msgid "Unsubscribed"
 msgstr "Претплатата е откажана"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3756,84 +4171,64 @@ msgstr "Корисник"
 msgid "User settings for this StatusNet site."
 msgstr "Кориснички нагодувања за оваа StatusNet веб-страница."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Неважечко ограничување за биографијата. Мора да е бројчено."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "НЕважечки текст за добредојде. Дозволени се највеќе 255 знаци."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Неважечки опис по основно: „%1$s“ не е корисник."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Профил"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Ограничување за биографијата"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Максимална големина на профилната биографија во знаци."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Нови корисници"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Добредојде за нов корисник"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Текст за добредојде на нови корисници (највеќе до 255 знаци)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Основно-зададена претплата"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Автоматски претплатувај нови корисници на овој корисник."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Покани"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Поканите се овозможени"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Дали да им е дозволено на корисниците да канат други корисници."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Сесии"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Раководење со сесии"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Дали самите да си раководиме со сесиите."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Поправка на грешки во сесија"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Вклучи извод од поправка на грешки за сесии."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Одобрете ја претплатата"
@@ -3848,36 +4243,36 @@ msgstr ""
 "за забелешките на овој корисник. Ако не сакате да се претплатите, едноставно "
 "кликнете на „Одбиј“"
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Лиценца"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Прифати"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Претплати се на корисников"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Одбиј"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Одбиј ја оваа претплата"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Нема барање за проверка!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Претплатата е одобрена"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3887,11 +4282,11 @@ msgstr ""
 "инструкциите на веб-страницата за да дознаете како се одобрува претплата. "
 "Жетонот на Вашата претплата е:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Претплатата е одбиена"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3901,37 +4296,37 @@ msgstr ""
 "инструкциите на веб-страницата за да дознаете како се одбива претплата во "
 "потполност."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "URI-то на следачот „%s“ не е пронајдено тука."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "Следениот URI „%s“ е предолг."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "Следеното URI „%s“ е за локален корисник."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "Профилната URL-адреса „%s“ е за локален корисник."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "URL-адресата „%s“ за аватар е неважечка."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Не можам да ја прочитам URL на аватарот „%s“."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Погрешен тип на слика за URL на аватарот „%s“."
@@ -3952,6 +4347,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Добар апетит!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Групи %1$s, стр. %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Пребарај уште групи"
@@ -3982,10 +4382,6 @@ msgstr ""
 "Оваа веб-страница работи на %1$s верзија %2$s, Авторски права 2008-2010 "
 "StatusNet, Inc. и учесници."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Учесници"
@@ -4027,11 +4423,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Приклучоци"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Име"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Верзија"
 
@@ -4039,10 +4431,6 @@ msgstr "Верзија"
 msgid "Author(s)"
 msgstr "Автор(и)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Опис"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4064,19 +4452,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "ВОлку голема податотека ќе ја надмине Вашата месечна квота од %d бајти"
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Ð\9fÑ\80оÑ\84ил Ð½Ð° Ð³Ñ\80Ñ\83па"
+msgstr "Ð\97аÑ\87ленÑ\83ваÑ\9aеÑ\82о Ð²Ð¾ Ð³Ñ\80Ñ\83паÑ\82а Ð½Ðµ Ñ\83Ñ\81пеа."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Ð\9dе Ð¼Ð¾Ð¶ÐµÐ² Ð´Ð° Ñ\98а Ð¿Ð¾Ð´Ð½Ð¾Ð²Ð°Ð¼ групата."
+msgstr "Ð\9dе Ðµ Ð´ÐµÐ» Ð¾Ð´ групата."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Ð\9fÑ\80оÑ\84ил Ð½Ð° Ð³Ñ\80Ñ\83па"
+msgstr "Ð\9dапÑ\83Ñ\88Ñ\82аÑ\9aеÑ\82о Ð½Ð° Ð³Ñ\80Ñ\83паÑ\82а Ð½Ðµ Ñ\83Ñ\81пеа."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4095,27 +4480,27 @@ msgstr "Не можев да ја испратам пораката."
 msgid "Could not update message with new URI."
 msgstr "Не можев да ја подновам пораката со нов URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Грешка во базата на податоци при вметнувањето на хеш-ознака: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Проблем со зачувувањето на белешката. Премногу долго."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Проблем со зачувувањето на белешката. Непознат корисник."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Премногу забелњшки за прекратко време; здивнете малку и продолжете за "
 "неколку минути."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4123,34 +4508,58 @@ msgstr ""
 "Премногу дуплирани пораки во прекратко време; здивнете малку и продолжете за "
 "неколку минути."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Забрането Ви е да објавувате забелешки на оваа веб-страница."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Проблем во зачувувањето на белешката."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Одговор од внесот во базата: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Проблем при зачувувањето на групното приемно сандаче."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Блокирани сте од претплаќање."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Веќе претплатено!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Корисникот Ве има блокирано."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Не сте претплатени!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Не можам да ја избришам самопретплатата."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Претплата не може да се избрише."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Добредојдовте на %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Не можев да ја создадам групата."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Не можев да назначам членство во групата."
 
@@ -4191,128 +4600,124 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr "Страница без наслов"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Главна навигација"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Дома"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Личен профил и историја на пријатели"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Сметка"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Промена на е-пошта, аватар, лозинка, профил"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Поврзи се"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Поврзи се со услуги"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Промена на конфигурацијата на веб-страницата"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Покани"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Поканете пријатели и колеги да Ви се придружат на %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Одјави се"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Одјава"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Создај сметка"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Најава"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Помош"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Напомош!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Барај"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Пребарајте луѓе или текст"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Напомена за веб-страницата"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Локални прегледи"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Напомена за страницата"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Споредна навигација"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "За"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "ЧПП"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Услови"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Приватност"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Изворен код"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Значка"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Лиценца на програмот StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4321,12 +4726,12 @@ msgstr ""
 "**%%site.name%%** е сервис за микроблогирање што ви го овозможува [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** е сервис за микроблогирање."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4337,33 +4742,59 @@ msgstr ""
 "верзија %s, достапен пд [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Лиценца на содржините на веб-страницата"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Содржината и податоците на %1$s се лични и доверливи."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+"Авторските права на содржината и податоците се во сопственост на %1$s. Сите "
+"права задржани."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Авторските права на содржината и податоците им припаѓаат на учесниците. Сите "
+"права задржани."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Сите "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "лиценца."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Прелом на страници"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "По"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Пред"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Се појави проблем со Вашиот сесиски жетон."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4393,10 +4824,99 @@ msgstr "Основни нагодувања на веб-страницата"
 msgid "Design configuration"
 msgstr "Конфигурација на изгледот"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Конфигурација на корисник"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Конфигурација на пристапот"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Конфигурација на патеки"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Конфигурација на сесиите"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"API-ресурсот бара да може и да чита и да запишува, а вие можете само да "
+"читате."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr "Неуспешен обид за API-заверка, прекар = %1$s, прокси = %2$s, IP = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Уреди програм"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Икона за овој програм"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Опишете го програмот со %d знаци"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Опишете го Вашиот програм"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "Изворна URL-адреса"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL на страницата на програмот"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Организацијата одговорна за овој програм"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL на страницата на организацијата"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL за пренасочување по заверката"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Прелистувач"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Работна површина"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Тип на програм, прелистувач или работна површина"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Само читање"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Читање-пишување"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Основно-зададен пристап за овој програм: само читање, или читање-пишување"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Одземи"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Прилози"
@@ -4417,11 +4937,11 @@ msgstr "Забелешки кадешто се јавува овој прило
 msgid "Tags for this attachment"
 msgstr "Ознаки за овој прилог"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Менувањето на лозинката не успеа"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Менувањето на лозинка не е дозволено"
 
@@ -4575,80 +5095,90 @@ msgstr "Грешка при зачувувањето на белешката."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Назначете го името на корисникот на којшто сакате да се претплатите"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Нема таков корисник"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Претплатено на %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Назначете го името на корисникот од кого откажувате претплата."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Претплатата на %s е откажана"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Наредбата сè уште не е имплементирана."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Известувањето е исклучено."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Не можам да исклучам известување."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Известувањето е вклучено."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Не можам да вклучам известување."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Наредбата за најава е оневозможена"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr "Оваа врска може да се употреби само еднаш, и трае само 2 минути: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Претплатата на %s е откажана"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Не сте претплатени никому."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Не ни го испративте тој профил."
 msgstr[1] "Не ни го испративте тој профил."
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Никој не е претплатен на Вас."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Оддалечена претплата"
 msgstr[1] "Оддалечена претплата"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Не членувате во ниедна група."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Не ни го испративте тој профил."
 msgstr[1] "Не ни го испративте тој профил."
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4662,6 +5192,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4726,19 +5257,19 @@ msgstr ""
 "tracks - сè уште не е имплементирано.\n"
 "tracking - сè уште не е имплементирано.\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Нема пронајдено конфигурациска податотека. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Побарав конфигурациони податотеки на следниве места: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Препорачуваме да го пуштите инсталатерот за да го поправите ова."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Оди на инсталаторот."
 
@@ -4754,6 +5285,14 @@ msgstr "Подновувања преку инстант-пораки (IM)"
 msgid "Updates by SMS"
 msgstr "Подновувања по СМС"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Сврзувања"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Овластени поврзани програми"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Грешка во базата на податоци"
@@ -4766,8 +5305,8 @@ msgstr "Подигни податотека"
 msgid ""
 "You can upload your personal background image. The maximum file size is 2MB."
 msgstr ""
-"Ð\9dе Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ð¾Ð´Ð¸Ð³Ð½ÐµÑ\82е Ð»Ð¸Ñ\87наÑ\82а Ð¿Ð¾Ð·Ð°Ð´Ð¸Ð½Ñ\81ка Ñ\81лика. Ð\9cакÑ\81ималнаÑ\82а Ð´Ð¾Ð·Ð²Ð¾Ð»Ðµна "
-"големина Ð¸Ð·Ð½ÐµÑ\81Ñ\83ва 2Ð\9cÐ\91."
+"Ð\9cожеÑ\82е Ð´Ð° Ð¿Ð¾Ð´Ð¸Ð³Ð½ÐµÑ\82е Ð»Ð¸Ñ\87на Ð¿Ð¾Ð·Ð°Ð´Ð¸Ð½Ñ\81ка Ñ\81лика. Ð\9cакÑ\81ималнаÑ\82а Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð° Ð³Ð¾Ð»ÐµÐ¼Ð¸на "
+"изнесува 2МБ."
 
 #: lib/designsettings.php:418
 msgid "Design defaults restored."
@@ -4940,15 +5479,15 @@ msgstr "МБ"
 msgid "kB"
 msgstr "кб"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Непознат јазик „%s“"
+msgstr "Непознат извор на приемна пошта %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5228,7 +5767,7 @@ msgstr ""
 "впуштите во разговор со други корисници. Луѓето можат да ви испраќаат пораки "
 "што ќе можете да ги видите само Вие."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "од"
 
@@ -5349,57 +5888,55 @@ msgid "Do not share my location"
 msgstr "Не ја прикажувај мојата локација"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Сокриј го ова инфо"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Жалиме, но добивањето на Вашата местоположба трае подолго од очекуваното. "
+"Обидете се подоцна."
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "С"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "Ј"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "И"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "З"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "во"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "во контекст"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Повторено од"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Одговори на забелешкава"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Одговор"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Забелешката е повторена"
 
@@ -5431,11 +5968,7 @@ msgstr "Грешка во внесувањето на оддалечениот 
 msgid "Duplicate notice"
 msgstr "Дуплирај забелешка"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Блокирани сте од претплаќање."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Не може да се внесе нова претплата."
 
@@ -5451,19 +5984,19 @@ msgstr "Одговори"
 msgid "Favorites"
 msgstr "Омилени"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Примени"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Ваши приемни пораки"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "За праќање"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Ваши испратени пораки"
 
@@ -5540,6 +6073,10 @@ msgstr "Да ја повторам белешкава?"
 msgid "Repeat this notice"
 msgstr "Повтори ја забелешкава"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Не е зададен корисник за еднокорисничкиот режим."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Песок"
@@ -5607,35 +6144,6 @@ msgstr "Луѓе претплатени на %s"
 msgid "Groups %s is a member of"
 msgstr "Групи кадешто членува %s"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Веќе претплатено!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Корисникот Ве има блокирано."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Претплатата е неуспешна."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Не можев да прептлатам друг корисник на Вас."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Не сте претплатени!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Не можам да ја избришам самопретплатата."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Претплата не може да се избрише."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5686,67 +6194,67 @@ msgstr "Уреди аватар"
 msgid "User actions"
 msgstr "Кориснички дејства"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Уреди нагодувања на профилот"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Уреди"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Испрати му директна порака на корисников"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Порака"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Модерирај"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "пред неколку секунди"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "пред една минута"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "пред %d минути"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "пред еден час"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "пред %d часа"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "пред еден ден"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "пред %d денови"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "пред еден месец"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "пред %d месеца"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "пред една година"
 
@@ -5760,7 +6268,7 @@ msgstr "%s не е важечка боја!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s не е важечка боја! Користете 3 или 6 шеснаесетни (hex) знаци."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 5fe48460e4a76ba360b1674eb56904034ded39b0..cf3daf093545327547c7ec79c52d6a6f3d8c3c19 100644 (file)
@@ -8,17 +8,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:46+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:22+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Tilgang"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Innstillinger for nettstedstilgang"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registrering"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privat"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Forhindre anonyme brukere (ikke innlogget) å se nettsted?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Kun invitasjon"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Gjør at registrering kun kan skje gjennom invitasjon."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Lukket"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Deaktiver nye registreringer."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Lagre"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Lagre tilgangsinnstillinger"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -33,25 +85,29 @@ msgstr "Ingen slik side"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Ingen slik bruker"
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s og venner, side %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -88,16 +144,16 @@ msgstr ""
 "eller post noe selv."
 
 #: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Du kan prøve å [knuffe %s](../%s) fra dennes profil eller [post noe for å få "
-"hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%"
-"s)."
+"Du kan prøve å [knuffe %1$s](../%2$s) fra dennes profil eller [poste noe for "
+"å få hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?"
+"status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -110,8 +166,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Du og venner"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Oppdateringer fra %1$s og venner på %2$s!"
@@ -121,23 +177,23 @@ msgstr "Oppdateringer fra %1$s og venner på %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "API-metode ikke funnet!"
@@ -152,7 +208,7 @@ msgstr "API-metode ikke funnet!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Denne metoden krever en POST."
 
@@ -183,8 +239,9 @@ msgstr "Klarte ikke å lagre profil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -265,18 +322,16 @@ msgid "No status found with that ID."
 msgstr "Fant ingen status med den ID-en."
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 msgid "This status is already a favorite."
-msgstr "Denne statusen er allerede en favoritt!"
+msgstr "Denne statusen er allerede en favoritt."
 
 #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
 msgid "Could not create favorite."
 msgstr "Kunne ikke opprette favoritt."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "Den statusen er ikke en favoritt!"
+msgstr "Den statusen er ikke en favoritt."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -296,23 +351,20 @@ msgid "Could not unfollow user: User not found."
 msgstr "Kunne ikke slutte å følge brukeren: Fant ikke brukeren."
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "Du kan ikke slutte å følge deg selv!"
+msgstr "Du kan ikke slutte å følge deg selv."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr "To bruker ID-er eller kallenavn må oppgis."
 
-#: actions/apifriendshipsshow.php:135
-#, fuzzy
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke bestemme kildebruker."
 
-#: actions/apifriendshipsshow.php:143
-#, fuzzy
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke finne målbruker."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
 #: actions/newgroup.php:126 actions/profilesettings.php:215
@@ -332,7 +384,8 @@ msgstr "Det nicket er allerede i bruk. Prøv et annet."
 msgid "Not a valid nickname."
 msgstr "Ugyldig nick."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -344,7 +397,8 @@ msgstr "Hjemmesiden er ikke en gyldig URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Beklager, navnet er for langt (max 250 tegn)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Beskrivelsen er for lang (maks %d tegn)."
@@ -359,31 +413,30 @@ msgstr ""
 #: actions/newgroup.php:159
 #, php-format
 msgid "Too many aliases! Maximum %d."
-msgstr ""
+msgstr "For mange alias! Maksimum %d."
 
 #: actions/apigroupcreate.php:264 actions/editgroup.php:224
 #: actions/newgroup.php:168
-#, fuzzy, php-format
+#, php-format
 msgid "Invalid alias: \"%s\""
-msgstr "Ugyldig hjemmeside '%s'"
+msgstr "Ugyldig alias: «%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 "Det nicket er allerede i bruk. Prøv et annet."
+msgstr "Aliaset «%s» er allerede i bruk. Prøv et annet."
 
 #: actions/apigroupcreate.php:286 actions/editgroup.php:234
 #: actions/newgroup.php:178
 msgid "Alias can't be the same as nickname."
-msgstr ""
+msgstr "Alias kan ikke være det samme som kallenavn."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
-#, fuzzy
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
-msgstr "API-metode ikke funnet!"
+msgstr "Gruppe ikke funnet!"
 
 #: actions/apigroupjoin.php:110 actions/joingroup.php:90
 msgid "You are already a member of that group."
@@ -391,22 +444,21 @@ msgstr "Du er allerede medlem av den gruppen."
 
 #: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221
 msgid "You have been blocked from that group by the admin."
-msgstr ""
+msgstr "Du har blitt blokkert fra den gruppen av administratoren."
 
 #: 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 "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke legge bruker %1$s til gruppe %2$s."
 
 #: actions/apigroupleave.php:114
-#, fuzzy
 msgid "You are not a member of this group."
-msgstr "Du er allerede logget inn!"
+msgstr "Du er ikke et medlem av denne gruppen."
 
 #: 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 "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke fjerne bruker %1$s fra gruppe %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -416,72 +468,175 @@ msgstr "%s sine grupper"
 #: actions/apigrouplistall.php:90 actions/usergroups.php:62
 #, php-format
 msgid "%s groups"
-msgstr ""
+msgstr "%s grupper"
 
 #: actions/apigrouplistall.php:94
 #, php-format
 msgid "groups on %s"
+msgstr "grupper på %s"
+
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Ingen verdi for oauth_token er oppgitt."
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ugyldig størrelse"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Ugyldig kallenavn / passord!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
 msgstr ""
 
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Tillat eller nekt tilgang"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Nick"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Passord"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Nekt"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Tillat"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Tillat eller nekt tilgang til din kontoinformasjon."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
 
 #: actions/apistatusesdestroy.php:130
 msgid "You may not delete another user's status."
-msgstr ""
+msgstr "Du kan ikke slette statusen til en annen bruker."
 
 #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
 #: actions/deletenotice.php:52 actions/shownotice.php:92
 msgid "No such notice."
-msgstr ""
+msgstr "Ingen slik notis."
 
 #: actions/apistatusesretweet.php:83
-#, fuzzy
 msgid "Cannot repeat your own notice."
-msgstr "Kan ikke slette notisen."
+msgstr "Kan ikke gjenta din egen notis."
 
 #: actions/apistatusesretweet.php:91
-#, fuzzy
 msgid "Already repeated that notice."
-msgstr "Kan ikke slette notisen."
+msgstr "Allerede gjentatt den notisen."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
-msgstr ""
+msgstr "Status slettet."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
-msgstr ""
+msgstr "Ingen status med den ID-en funnet."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
-msgstr ""
+msgstr "Ikke funnet"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
 
 #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
 msgid "Unsupported format."
-msgstr ""
+msgstr "Formatet støttes ikke."
 
 #: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Favorites from %2$s"
-msgstr "%1$s / Oppdateringer som svarer til %2$s"
+msgstr "%1$s / Favoritter fra %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 "%1$s oppdateringer som svarer på oppdateringer fra %2$s / %3$s."
+msgstr "%1$s oppdateringer markert som favoritt av %2$s / %2$s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -489,65 +644,59 @@ msgstr "%1$s oppdateringer som svarer på oppdateringer fra %2$s / %3$s."
 msgid "%s timeline"
 msgstr "%s tidslinje"
 
-#: 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 ""
+msgstr "Oppdateringar fra %1$s på %2$s!"
 
 #: actions/apitimelinementions.php:117
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Updates mentioning %2$s"
-msgstr "%1$s / Oppdateringer som svarer til %2$s"
+msgstr "%1$s / Oppdateringer som nevner %2$s"
 
 #: actions/apitimelinementions.php:127
 #, php-format
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s oppdateringer som svarer på oppdateringer fra %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 offentlig tidslinje"
 
-#: 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 oppdateringer fra alle sammen!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
-#, fuzzy, php-format
+#, php-format
 msgid "Repeated to %s"
-msgstr "Svar til %s"
+msgstr "Gjentatt til %s"
 
-#: actions/apitimelineretweetsofme.php:112
-#, fuzzy, php-format
+#: actions/apitimelineretweetsofme.php:114
+#, php-format
 msgid "Repeats of %s"
-msgstr "Svar til %s"
+msgstr "Repetisjoner av %s"
 
 #: actions/apitimelinetag.php:102 actions/tag.php:66
 #, php-format
 msgid "Notices tagged with %s"
-msgstr ""
+msgstr "Notiser merket med %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 "Mikroblogg av %s"
+msgstr "Oppdateringer merket med %1$s på %2$s!"
 
 #: actions/apiusershow.php:96
-#, fuzzy
 msgid "Not found."
-msgstr "Ingen id."
+msgstr "Ikke funnet."
 
 #: actions/attachment.php:73
 msgid "No such attachment."
-msgstr ""
+msgstr "Ingen slike vedlegg."
 
 #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73
 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84
@@ -555,11 +704,11 @@ msgstr ""
 #: actions/grouprss.php:91 actions/joingroup.php:76 actions/leavegroup.php:76
 #: actions/showgroup.php:121
 msgid "No nickname."
-msgstr ""
+msgstr "Ingen kallenavn."
 
 #: actions/avatarbynickname.php:64
 msgid "No size."
-msgstr ""
+msgstr "Ingen størrelse."
 
 #: actions/avatarbynickname.php:69
 msgid "Invalid size."
@@ -583,25 +732,23 @@ msgstr ""
 
 #: actions/avatarsettings.php:119 actions/avatarsettings.php:197
 #: actions/grouplogo.php:251
-#, fuzzy
 msgid "Avatar settings"
-msgstr "Innstillinger for IM"
+msgstr "Avatarinnstillinger"
 
 #: actions/avatarsettings.php:127 actions/avatarsettings.php:205
 #: actions/grouplogo.php:199 actions/grouplogo.php:259
 msgid "Original"
-msgstr ""
+msgstr "Original"
 
 #: actions/avatarsettings.php:142 actions/avatarsettings.php:217
 #: actions/grouplogo.php:210 actions/grouplogo.php:271
 msgid "Preview"
-msgstr ""
+msgstr "Forhåndsvis"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
-#, fuzzy
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
-msgstr "slett"
+msgstr "Slett"
 
 #: actions/avatarsettings.php:166 actions/grouplogo.php:233
 msgid "Upload"
@@ -609,30 +756,7 @@ msgstr "Last opp"
 
 #: actions/avatarsettings.php:231 actions/grouplogo.php:286
 msgid "Crop"
-msgstr ""
-
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
+msgstr "Beskjær"
 
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
@@ -648,21 +772,19 @@ msgstr "Brukerbildet har blitt oppdatert."
 
 #: actions/avatarsettings.php:369
 msgid "Failed updating avatar."
-msgstr ""
+msgstr "Oppdatering av avatar mislyktes."
 
 #: actions/avatarsettings.php:393
-#, fuzzy
 msgid "Avatar deleted."
-msgstr "Brukerbildet har blitt oppdatert."
+msgstr "Avatar slettet."
 
 #: actions/block.php:69
-#, fuzzy
 msgid "You already blocked that user."
-msgstr "Du er allerede logget inn!"
+msgstr "Du har allerede blokkert den brukeren."
 
 #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
 msgid "Block user"
-msgstr ""
+msgstr "Blokker brukeren"
 
 #: actions/block.php:130
 msgid ""
@@ -671,25 +793,25 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
-msgstr ""
+msgstr "Nei"
 
 #: actions/block.php:143 actions/deleteuser.php:147
-#, fuzzy
 msgid "Do not block this user"
-msgstr "Kan ikke slette notisen."
+msgstr "Ikke blokker denne brukeren"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 ""
+msgstr "Blokker denne brukeren"
 
 #: actions/block.php:167
 msgid "Failed to save block information."
@@ -702,19 +824,18 @@ msgstr ""
 #: actions/grouprss.php:98 actions/groupunblock.php:86
 #: actions/joingroup.php:83 actions/leavegroup.php:83 actions/makeadmin.php:86
 #: actions/showgroup.php:137 lib/command.php:212 lib/command.php:260
-#, fuzzy
 msgid "No such group."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Ingen slik gruppe."
 
 #: actions/blockedfromgroup.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked profiles"
-msgstr "Klarte ikke å lagre profil."
+msgstr "%s blokkerte profiler"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "%s og venner"
+msgstr "%1$s blokkerte profiler, side %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -734,11 +855,11 @@ msgstr ""
 
 #: actions/bookmarklet.php:50
 msgid "Post to "
-msgstr ""
+msgstr "Post til "
 
 #: actions/confirmaddress.php:75
 msgid "No confirmation code."
-msgstr ""
+msgstr "Ingen bekreftelseskode."
 
 #: actions/confirmaddress.php:80
 msgid "Confirmation code not found."
@@ -755,7 +876,7 @@ msgstr ""
 
 #: actions/confirmaddress.php:94
 msgid "That address has already been confirmed."
-msgstr ""
+msgstr "Den adressen har allerede blitt bekreftet."
 
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
@@ -768,31 +889,71 @@ msgstr "Klarte ikke å oppdatere bruker."
 #: actions/confirmaddress.php:126 actions/emailsettings.php:391
 #: actions/imsettings.php:363 actions/smssettings.php:382
 msgid "Couldn't delete email confirmation."
-msgstr ""
+msgstr "Kunne ikke slette e-postbekreftelse."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Bekreft adresse"
 
 #: actions/confirmaddress.php:159
 #, php-format
 msgid "The address \"%s\" has been confirmed for your account."
-msgstr ""
+msgstr "Adressen «%s» har blitt bekreftet for din konto."
 
 #: actions/conversation.php:99
-#, fuzzy
 msgid "Conversation"
-msgstr "Bekreftelseskode"
+msgstr "Samtale"
 
 #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87
 #: lib/profileaction.php:216 lib/searchgroupnav.php:82
 msgid "Notices"
 msgstr ""
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Du må være innlogget for å slette et program."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Program ikke funnet."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Du er ikke eieren av dette programmet."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Slett program"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Er du sikker på at du vil slette dette programmet? Dette vil slette alle "
+"data om programmet fra databasen, inkludert alle eksisterende "
+"brukertilkoblinger."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Ikke slett dette programmet"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Slett dette programmet"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -808,49 +969,48 @@ msgid ""
 "You are about to permanently delete a notice. Once this is done, it cannot "
 "be undone."
 msgstr ""
+"Du er i ferd med å slette en notis permanent. Når dette er gjort kan det "
+"ikke gjøres om."
 
 #: actions/deletenotice.php:109 actions/deletenotice.php:141
 msgid "Delete notice"
-msgstr ""
+msgstr "Slett notis"
 
 #: actions/deletenotice.php:144
 msgid "Are you sure you want to delete this notice?"
 msgstr "Er du sikker på at du vil slette denne notisen?"
 
 #: actions/deletenotice.php:145
-#, fuzzy
 msgid "Do not delete this notice"
-msgstr "Kan ikke slette notisen."
+msgstr "Ikke slett denne notisen"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
-msgstr ""
+msgstr "Slett denne notisen"
 
 #: actions/deleteuser.php:67
-#, fuzzy
 msgid "You cannot delete users."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Du kan ikke slette brukere."
 
 #: actions/deleteuser.php:74
-#, fuzzy
 msgid "You can only delete local users."
-msgstr "Ugyldig OpenID"
+msgstr "Du kan bare slette lokale brukere."
 
 #: actions/deleteuser.php:110 actions/deleteuser.php:133
-#, fuzzy
 msgid "Delete user"
-msgstr "slett"
+msgstr "Slett bruker"
 
 #: actions/deleteuser.php:135
 msgid ""
 "Are you sure you want to delete this user? This will clear all data about "
 "the user from the database, without a backup."
 msgstr ""
+"Er du sikker på at du vil slette denne brukeren? Dette vil slette alle data "
+"om brukeren fra databasen, uten sikkerhetskopi."
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
-#, fuzzy
 msgid "Delete this user"
-msgstr "Kan ikke slette notisen."
+msgstr "Slett denne brukeren"
 
 #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
 #: lib/adminpanelaction.php:316 lib/groupnav.php:119
@@ -862,9 +1022,8 @@ msgid "Design settings for this StatusNet site."
 msgstr ""
 
 #: actions/designadminpanel.php:275
-#, fuzzy
 msgid "Invalid logo URL."
-msgstr "Ugyldig størrelse"
+msgstr "Ugyldig logo-URL."
 
 #: actions/designadminpanel.php:279
 #, php-format
@@ -872,13 +1031,12 @@ msgid "Theme not available: %s"
 msgstr ""
 
 #: actions/designadminpanel.php:375
-#, fuzzy
 msgid "Change logo"
-msgstr "Endre passordet ditt"
+msgstr "Endre logo"
 
 #: actions/designadminpanel.php:380
 msgid "Site logo"
-msgstr ""
+msgstr "Nettstedslogo"
 
 #: actions/designadminpanel.php:387
 #, fuzzy
@@ -896,12 +1054,12 @@ msgstr ""
 
 #: actions/designadminpanel.php:417 lib/designsettings.php:101
 msgid "Change background image"
-msgstr ""
+msgstr "Endre bakgrunnsbilde"
 
 #: actions/designadminpanel.php:422 actions/designadminpanel.php:497
 #: lib/designsettings.php:178
 msgid "Background"
-msgstr ""
+msgstr "Bakgrunn"
 
 #: actions/designadminpanel.php:427
 #, php-format
@@ -931,9 +1089,8 @@ msgid "Change colours"
 msgstr "Endre farger"
 
 #: actions/designadminpanel.php:510 lib/designsettings.php:191
-#, fuzzy
 msgid "Content"
-msgstr "Koble til"
+msgstr "Innhold"
 
 #: actions/designadminpanel.php:523 lib/designsettings.php:204
 #, fuzzy
@@ -950,7 +1107,7 @@ msgstr "Lenker"
 
 #: actions/designadminpanel.php:577 lib/designsettings.php:247
 msgid "Use defaults"
-msgstr ""
+msgstr "Bruk standard"
 
 #: actions/designadminpanel.php:578 lib/designsettings.php:248
 msgid "Restore default designs"
@@ -960,32 +1117,89 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Lagre"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
 
 #: actions/disfavor.php:81
 msgid "This notice is not a favorite!"
-msgstr ""
+msgstr "Denne notisen er ikke en favoritt!"
 
 #: actions/disfavor.php:94
 msgid "Add to favorites"
+msgstr "Legg til i favoritter"
+
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Inget slikt dokument «%s»"
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Rediger program"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Du må være innlogget for å redigere et program."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Inget slikt program."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Bruk dette skjemaet for å redigere programmet ditt."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Navn kreves."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Navn er for langt (maks 250 tegn)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Navn allerede i bruk. Prøv et annet."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Beskrivelse kreves."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Kilde-URL er for lang."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Kilde-URL er ikke gyldig."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organisasjon kreves."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Organisasjon er for lang (maks 255 tegn)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
 msgstr ""
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
 msgstr ""
 
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Klarte ikke å oppdatere bruker."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -993,7 +1207,7 @@ msgstr ""
 
 #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65
 msgid "You must be logged in to create a group."
-msgstr ""
+msgstr "Du må være innlogget for å opprette en gruppe."
 
 #: actions/editgroup.php:103 actions/editgroup.php:168
 #: actions/groupdesignsettings.php:104 actions/grouplogo.php:106
@@ -1006,28 +1220,25 @@ msgid "Use this form to edit the group."
 msgstr ""
 
 #: actions/editgroup.php:201 actions/newgroup.php:145
-#, fuzzy, php-format
+#, php-format
 msgid "description is too long (max %d chars)."
-msgstr "Bioen er for lang (max 140 tegn)"
+msgstr "beskrivelse er for lang (maks %d tegn)"
 
 #: actions/editgroup.php:253
-#, fuzzy
 msgid "Could not update group."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke oppdatere gruppe."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
-#, fuzzy
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
-msgstr "Klarte ikke å lagre avatar-informasjonen"
+msgstr "Kunne ikke opprette alias."
 
 #: actions/editgroup.php:269
 msgid "Options saved."
 msgstr ""
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
-msgstr "Innstillinger for e-post"
+msgstr "E-postinnstillinger"
 
 #: actions/emailsettings.php:71
 #, php-format
@@ -1058,18 +1269,18 @@ msgstr ""
 "melding med videre veiledning."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Avbryt"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
 msgstr "E-postadresse"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
-msgstr ""
+msgstr "E-postadresse («brukernavn@eksempel.org»)"
 
 #: actions/emailsettings.php:126 actions/imsettings.php:133
 #: actions/smssettings.php:145
@@ -1139,7 +1350,7 @@ msgid "Cannot normalize that email address"
 msgstr "Klarer ikke normalisere epostadressen"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Ugyldig e-postadresse."
 
@@ -1151,7 +1362,7 @@ msgstr "Det er allerede din e-postadresse."
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr ""
@@ -1185,7 +1396,7 @@ msgstr "Det er ikke din e-postadresse."
 #: actions/emailsettings.php:432 actions/imsettings.php:408
 #: actions/smssettings.php:425
 msgid "The address was removed."
-msgstr ""
+msgstr "Adressen ble fjernet."
 
 #: actions/emailsettings.php:446 actions/smssettings.php:518
 msgid "No incoming email address."
@@ -1212,15 +1423,15 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
-msgstr ""
+msgstr "Populære notiser"
 
 #: actions/favorited.php:67
 #, php-format
 msgid "Popular notices, page %d"
-msgstr ""
+msgstr "Populære notiser, side %d"
 
 #: actions/favorited.php:79
 msgid "The most popular notices on the site right now."
@@ -1321,14 +1532,12 @@ msgid "Error updating remote profile"
 msgstr ""
 
 #: actions/getfile.php:79
-#, fuzzy
 msgid "No such file."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Ingen slik fil."
 
 #: actions/getfile.php:83
-#, fuzzy
 msgid "Cannot read file."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Kan ikke lese fil."
 
 #: actions/groupblock.php:71 actions/groupunblock.php:71
 #: actions/makeadmin.php:71 actions/subedit.php:46
@@ -1360,7 +1569,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 ""
 
@@ -1385,9 +1594,8 @@ msgid "Database error blocking user from group."
 msgstr ""
 
 #: actions/groupbyid.php:74 actions/userbyid.php:70
-#, fuzzy
 msgid "No ID."
-msgstr "Ingen id."
+msgstr "Ingen ID."
 
 #: actions/groupdesignsettings.php:68
 msgid "You must be logged in to edit a group."
@@ -1415,7 +1623,7 @@ msgstr ""
 
 #: actions/grouplogo.php:139 actions/grouplogo.php:192
 msgid "Group logo"
-msgstr ""
+msgstr "Gruppelogo"
 
 #: actions/grouplogo.php:150
 #, php-format
@@ -1433,9 +1641,8 @@ msgid "Pick a square area of the image to be the logo."
 msgstr ""
 
 #: actions/grouplogo.php:396
-#, fuzzy
 msgid "Logo updated."
-msgstr "Avataren har blitt oppdatert."
+msgstr "Logo oppdatert."
 
 #: actions/grouplogo.php:398
 msgid "Failed updating logo."
@@ -1444,7 +1651,7 @@ msgstr ""
 #: actions/groupmembers.php:93 lib/groupnav.php:92
 #, php-format
 msgid "%s group members"
-msgstr ""
+msgstr "%s gruppemedlemmer"
 
 #: actions/groupmembers.php:96
 #, php-format
@@ -1455,23 +1662,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr "En liste over brukerne i denne gruppen."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1501,9 +1708,8 @@ msgid ""
 msgstr ""
 
 #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
-#, fuzzy
 msgid "Create a new group"
-msgstr "Opprett en ny konto"
+msgstr "Opprett en ny gruppe"
 
 #: actions/groupsearch.php:52
 #, php-format
@@ -1513,14 +1719,13 @@ msgid ""
 msgstr ""
 
 #: actions/groupsearch.php:58
-#, fuzzy
 msgid "Group search"
-msgstr "Tekst-søk"
+msgstr "Gruppesøk"
 
 #: actions/groupsearch.php:79 actions/noticesearch.php:117
 #: actions/peoplesearch.php:83
 msgid "No results."
-msgstr ""
+msgstr "Ingen resultat."
 
 #: actions/groupsearch.php:82
 #, php-format
@@ -1638,10 +1843,15 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Det er ikke din Jabber ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Innboks for %1$s - side %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
-msgstr ""
+msgstr "Innboks for %s"
 
 #: actions/inbox.php:115
 msgid "This is your inbox, which lists your incoming private messages."
@@ -1649,7 +1859,7 @@ msgstr ""
 
 #: actions/invite.php:39
 msgid "Invites have been disabled."
-msgstr ""
+msgstr "Invitasjoner har blitt deaktivert."
 
 #: actions/invite.php:41
 #, php-format
@@ -1659,15 +1869,15 @@ msgstr ""
 #: actions/invite.php:72
 #, php-format
 msgid "Invalid email address: %s"
-msgstr ""
+msgstr "Ugyldig e-postadresse: %s"
 
 #: actions/invite.php:110
 msgid "Invitation(s) sent"
-msgstr ""
+msgstr "Invitasjon(er) sendt"
 
 #: actions/invite.php:112
 msgid "Invite new users"
-msgstr ""
+msgstr "Inviter nye brukere"
 
 #: actions/invite.php:128
 msgid "You are already subscribed to these users:"
@@ -1676,7 +1886,7 @@ msgstr ""
 #: 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 ""
@@ -1700,7 +1910,7 @@ msgstr ""
 
 #: actions/invite.php:187
 msgid "Email addresses"
-msgstr ""
+msgstr "E-postadresser"
 
 #: actions/invite.php:189
 msgid "Addresses of friends to invite (one per line)"
@@ -1708,13 +1918,13 @@ msgstr "Adresser til venner som skal inviteres (én per linje)"
 
 #: actions/invite.php:192
 msgid "Personal message"
-msgstr ""
+msgstr "Personlig melding"
 
 #: actions/invite.php:194
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Send"
 
@@ -1777,7 +1987,7 @@ msgstr ""
 
 #: actions/joingroup.php:60
 msgid "You must be logged in to join a group."
-msgstr ""
+msgstr "Du må være innlogget for å bli med i en gruppe."
 
 #: actions/joingroup.php:131
 #, php-format
@@ -1793,9 +2003,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 "%1$s sin status på %2$s"
+msgstr "%1$s forlot gruppe %2$s"
 
 #: actions/login.php:80 actions/otp.php:62 actions/register.php:137
 msgid "Already logged in."
@@ -1810,7 +2020,7 @@ msgstr "Feil brukernavn eller passord"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ikke autorisert."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logg inn"
@@ -1819,17 +2029,6 @@ msgstr "Logg inn"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Nick"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Passord"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Husk meg"
@@ -1856,29 +2055,51 @@ 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"
 
 #: actions/microsummary.php:69
 msgid "No current status"
+msgstr "Ingen nåværende status"
+
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Ingen slik side"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
 msgstr ""
 
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Klarte ikke å lagre avatar-informasjonen"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1977,10 +2198,53 @@ msgstr ""
 
 #: actions/nudge.php:94
 msgid "Nudge sent"
-msgstr ""
+msgstr "Knuff sendt"
 
 #: actions/nudge.php:97
 msgid "Nudge sent!"
+msgstr "Knuff sendt!"
+
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Du er allerede logget inn!"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
 msgstr ""
 
 #: actions/oembed.php:79 actions/shownotice.php:100
@@ -1994,14 +2258,14 @@ msgstr "%1$s sin status på %2$s"
 
 #: actions/oembed.php:157
 msgid "content type "
-msgstr ""
+msgstr "innholdstype "
 
 #: actions/oembed.php:160
 msgid "Only "
-msgstr ""
+msgstr "Bare "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -2014,9 +2278,8 @@ msgid "Notice Search"
 msgstr ""
 
 #: actions/othersettings.php:60
-#, fuzzy
-msgid "Other Settings"
-msgstr "Innstillinger for IM"
+msgid "Other settings"
+msgstr "Andre innstillinger"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
@@ -2070,28 +2333,31 @@ msgstr "Nytt nick"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Utboks for %1$s - side %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
-msgstr ""
+msgstr "Utboks for %s"
 
 #: actions/outbox.php:116
 msgid "This is your outbox, which lists private messages you have sent."
-msgstr ""
+msgstr "Dette er utboksen din som viser alle private meldinger du har sendt."
 
 #: actions/passwordsettings.php:58
 msgid "Change password"
 msgstr "Endre passord"
 
 #: actions/passwordsettings.php:69
-#, fuzzy
 msgid "Change your password."
-msgstr "Endre passord"
+msgstr "Endre passordet ditt."
 
 #: actions/passwordsettings.php:96 actions/recoverpassword.php:231
-#, fuzzy
 msgid "Password change"
-msgstr "Passordet ble lagret"
+msgstr "Endre passord"
 
 #: actions/passwordsettings.php:104
 msgid "Old password"
@@ -2112,7 +2378,7 @@ msgstr "Bekreft"
 
 #: actions/passwordsettings.php:113 actions/recoverpassword.php:240
 msgid "Same as password above"
-msgstr ""
+msgstr "Samme som passord ovenfor"
 
 #: actions/passwordsettings.php:117
 msgid "Change"
@@ -2120,11 +2386,11 @@ msgstr "Endre"
 
 #: actions/passwordsettings.php:154 actions/register.php:230
 msgid "Password must be 6 or more characters."
-msgstr ""
+msgstr "Passord må være minst 6 tegn."
 
 #: actions/passwordsettings.php:157 actions/register.php:233
 msgid "Passwords don't match."
-msgstr ""
+msgstr "Passordene var ikke like."
 
 #: actions/passwordsettings.php:165
 msgid "Incorrect old password"
@@ -2142,7 +2408,7 @@ msgstr "Klarer ikke å lagre nytt passord."
 msgid "Password saved."
 msgstr "Passordet ble lagret"
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2150,138 +2416,153 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Tjener"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Brukerbilde"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Innstillinger for IM"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Brukerbildet har blitt oppdatert."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Brukerbildet har blitt oppdatert."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
-msgstr ""
+msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
-#, fuzzy
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
-msgstr "Gjenopprett"
+msgstr "Aldri"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
-msgstr ""
+msgstr "Noen ganger"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
-msgstr ""
+msgstr "Alltid"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
-msgstr ""
+msgstr "Bruk SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Gjenopprett"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr ""
 
@@ -2339,7 +2620,7 @@ msgid "Full name"
 msgstr "Fullt navn"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Hjemmesiden"
 
@@ -2363,7 +2644,7 @@ msgstr "Om meg"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr ""
@@ -2387,13 +2668,13 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Språk"
 
 #: actions/profilesettings.php:152
 msgid "Preferred language"
-msgstr ""
+msgstr "Foretrukket språk"
 
 #: actions/profilesettings.php:161
 msgid "Timezone"
@@ -2401,7 +2682,7 @@ msgstr "Tidssone"
 
 #: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
-msgstr ""
+msgstr "Hvilken tidssone er du vanligvis i?"
 
 #: actions/profilesettings.php:167
 msgid ""
@@ -2410,42 +2691,42 @@ msgstr ""
 "Abonner automatisk på de som abonnerer på meg (best for ikke-mennesker)"
 
 #: actions/profilesettings.php:228 actions/register.php:223
-#, fuzzy, php-format
+#, php-format
 msgid "Bio is too long (max %d chars)."
-msgstr "«Om meg» er for lang (maks 140 tegn)."
+msgstr "«Om meg» er for lang (maks %d tegn)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
-msgstr ""
+msgstr "Tidssone ikke valgt."
 
 #: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
-msgstr ""
+msgstr "Språk er for langt (maks 50 tegn)."
 
 #: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ugyldig hjemmeside '%s'"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr ""
 
@@ -2467,37 +2748,37 @@ msgstr ""
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "%s offentlig strøm"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2506,7 +2787,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2539,7 +2820,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2677,7 +2958,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2692,7 +2973,7 @@ msgstr ""
 
 #: actions/register.php:212
 msgid "Email address already exists."
-msgstr ""
+msgstr "E-postadressen finnes allerede."
 
 #: actions/register.php:243 actions/register.php:265
 msgid "Invalid username or password."
@@ -2715,10 +2996,10 @@ msgstr "6 eller flere tegn. Påkrevd."
 
 #: actions/register.php:434
 msgid "Same as password above. Required."
-msgstr ""
+msgstr "Samme som passord over. Kreves."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-post"
 
@@ -2732,23 +3013,22 @@ msgstr "Lengre navn, helst ditt \"ekte\" navn"
 
 #: actions/register.php:494
 msgid "My text and files are available under "
-msgstr ""
+msgstr "Teksten og filene mine er tilgjengelig under "
 
 #: actions/register.php:496
 msgid "Creative Commons Attribution 3.0"
-msgstr ""
+msgstr "Creative Commons Navngivelse 3.0"
 
 #: actions/register.php:497
-#, fuzzy
 msgid ""
 " except this private data: password, email address, IM address, and phone "
 "number."
 msgstr ""
-"utenom disse private dataene: passord, epost, adresse, lynmeldingsadresse og "
-"telefonnummer."
+"  utenom disse private dataene: passord, e-postadresse, lynmeldingsadresse "
+"og telefonnummer."
 
 #: 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"
@@ -2765,20 +3045,20 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"Gratulerer, %s! Og velkommen til %%%%site.name%%%%. Herfra vil du "
+"Gratulerer, %1$s! Og velkommen til %%%%site.name%%%%. Herfra vil du "
 "kanskje...\n"
 "\n"
-"* Gå til [din profil](%s) og sende din første notis.\n"
-"* Legge til en [Jabber/GTalk addresse](%%%%action.imsettings%%%%) så du kan "
-"sende notiser fra lynmeldinger.\n"
-"* [Søke etter brukere](%%%%action.peoplesearch%%%%) that you may know or "
-"that share your interests. \n"
-"* Update your [profile settings](%%%%action.profilesettings%%%%) to tell "
-"others more about you. \n"
-"* Read over the [online docs](%%%%doc.help%%%%) for features you may have "
-"missed. \n"
+"* Gå til [din profil](%2$s) og sende din første melding.\n"
+"* Legge til en [Jabber/GTalk-addresse](%%%%action.imsettings%%%%) så du kan "
+"sende notiser gjennom lynmeldinger.\n"
+"* [Søke etter brukere](%%%%action.peoplesearch%%%%) som du kanskje kjenner "
+"eller deler dine interesser.\n"
+"* Oppdater dine [profilinnstillinger](%%%%action.profilesettings%%%%) for å "
+"fortelle mer om deg til andre.\n"
+"* Les over [hjelpetekstene](%%%%doc.help%%%%) for funksjoner du kan ha gått "
+"glipp av.\n"
 "\n"
-"Thanks for signing up and we hope you enjoy using this service."
+"Takk for at du registrerte deg og vi håper du kommer til å like tjenesten."
 
 #: actions/register.php:562
 msgid ""
@@ -2821,7 +3101,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr ""
 
@@ -2859,15 +3139,13 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "Du er allerede logget inn!"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
-#, fuzzy
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
-msgstr "Opprett"
+msgstr "Gjentatt"
 
 #: actions/repeat.php:119
-#, fuzzy
 msgid "Repeated!"
-msgstr "Opprett"
+msgstr "Gjentatt!"
 
 #: actions/replies.php:125 actions/repliesrss.php:68
 #: lib/personalgroupnav.php:105
@@ -2875,20 +3153,25 @@ msgstr "Opprett"
 msgid "Replies to %s"
 msgstr "Svar til %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Svar til %1$s, side %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
-msgstr ""
+msgstr "Svarstrøm for %s (RSS 1.0)"
 
 #: actions/replies.php:151
 #, php-format
 msgid "Replies feed for %s (RSS 2.0)"
-msgstr ""
+msgstr "Svarstrøm for %s (RSS 2.0)"
 
 #: actions/replies.php:158
-#, fuzzy, php-format
+#, php-format
 msgid "Replies feed for %s (Atom)"
-msgstr "Svar til %s"
+msgstr "Svarstrøm for %s (Atom)"
 
 #: actions/replies.php:198
 #, fuzzy, php-format
@@ -2915,9 +3198,13 @@ msgstr ""
 "s)."
 
 #: actions/repliesrss.php:72
-#, fuzzy, php-format
+#, php-format
 msgid "Replies to %1$s on %2$s!"
-msgstr "Svar til %s"
+msgstr "Svar til %1$s på %2$s!"
+
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
 
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
@@ -2929,6 +3216,121 @@ msgstr "Du er allerede logget inn!"
 msgid "User is already sandboxed."
 msgstr "Du er allerede logget inn!"
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Innstillinger for IM"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Ikon"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Navn"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organisasjon"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistikk"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Opprettet av %1$s - %2$s standardtilgang - %3$d brukere"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Er du sikker på at du vil slette denne notisen?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s og venner"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2978,18 +3380,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Alle abonnementer"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Klarte ikke å lagre profil."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -3036,10 +3443,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistikk"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3095,6 +3498,11 @@ msgstr ""
 msgid " tagged %s"
 msgstr "Tagger"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s og venner"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3120,18 +3528,18 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr "Feed for taggen %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Dette er tidslinjen for %s og venner, men ingen har postet noe enda."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, fuzzy, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3141,7 +3549,7 @@ msgstr ""
 "hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%"
 "s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3150,7 +3558,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3158,7 +3566,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Svar til %s"
@@ -3176,199 +3584,144 @@ msgstr "Du er allerede logget inn!"
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Ugyldig e-postadresse"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr ""
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr ""
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr ""
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Gjenopprett"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Godta"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr ""
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr ""
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Innstillinger for IM"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3470,17 +3823,26 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Klarte ikke å lagre avatar-informasjonen"
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "Ugyldig OpenID"
+msgid "No such profile."
+msgstr "Ingen slik fil."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr ""
 
@@ -3540,7 +3902,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3550,20 +3912,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s lytter nå til dine notiser på %2$s."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "Ingen Jabber ID."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Mikroblogg av %s"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3593,7 +3960,8 @@ msgstr "Tagger"
 msgid "User profile"
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3651,7 +4019,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3666,89 +4034,69 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "slett"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Alle abonnementer"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Abonner automatisk på de som abonnerer på meg (best for ikke-mennesker)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Bekreftelseskode"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autoriser abonnementet"
@@ -3760,85 +4108,85 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Godta"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr ""
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr ""
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Alle abonnementer"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr ""
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Kan ikke lese brukerbilde-URL «%s»"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3858,6 +4206,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Alle abonnementer"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3884,11 +4237,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Statistikk"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3920,12 +4268,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Nick"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Personlig"
@@ -3934,11 +4277,6 @@ msgstr "Personlig"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "Alle abonnementer"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3988,59 +4326,84 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr ""
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
 msgstr ""
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr ""
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Alle abonnementer"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Klarte ikke å lagre avatar-informasjonen"
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr ""
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "Klarte ikke å lagre avatar-informasjonen"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Klarte ikke å lagre avatar-informasjonen"
@@ -4083,131 +4446,126 @@ msgstr "%1$s sin status på %2$s"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Hjem"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "Om"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Koble til"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Logg ut"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "Opprett en ny konto"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hjelp"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "Hjelp"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Søk"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "OSS/FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Kilde"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4216,12 +4574,12 @@ msgstr ""
 "**%%site.name%%** er en mikrobloggingtjeneste av [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er en mikrobloggingtjeneste. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4229,33 +4587,55 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "Tidligere »"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4286,10 +4666,101 @@ msgstr ""
 msgid "Design configuration"
 msgstr ""
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr ""
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr ""
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr ""
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr ""
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Beskriv degselv og dine interesser med 140 tegn"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Beskriv degselv og dine interesser med 140 tegn"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Kilde"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL til din hjemmeside, blogg, eller profil på annen nettside."
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL til din hjemmeside, blogg, eller profil på annen nettside."
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Fjern"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4311,12 +4782,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Passordet ble lagret"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Passordet ble lagret"
@@ -4468,83 +4939,93 @@ msgstr ""
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Ingen slik bruker"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Svar til %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Ikke autorisert."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Ikke autorisert."
 msgstr[1] "Ikke autorisert."
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Svar til %s"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Svar til %s"
 msgstr[1] "Svar til %s"
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Du er allerede logget inn!"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Du er allerede logget inn!"
 msgstr[1] "Du er allerede logget inn!"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4558,6 +5039,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4585,20 +5067,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Fant ikke bekreftelseskode."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4614,6 +5096,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Koble til"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4803,12 +5294,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5013,7 +5504,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr "fra"
@@ -5133,59 +5624,55 @@ msgid "Do not share my location"
 msgstr "Klarte ikke å lagre profil."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Opprett"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "svar"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Nytt nick"
@@ -5218,11 +5705,7 @@ msgstr ""
 msgid "Duplicate notice"
 msgstr ""
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr ""
 
@@ -5238,19 +5721,19 @@ msgstr "Svar"
 msgid "Favorites"
 msgstr ""
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5332,6 +5815,10 @@ msgstr "Kan ikke slette notisen."
 msgid "Repeat this notice"
 msgstr "Kan ikke slette notisen."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5403,36 +5890,6 @@ msgstr "Svar til %s"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Alle abonnementer"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Klarte ikke å lagre avatar-informasjonen"
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr ""
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5486,68 +5943,68 @@ msgstr "Brukerbilde"
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Endre profilinnstillingene dine"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr ""
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "noen få sekunder siden"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "omtrent ett minutt siden"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "omtrent %d minutter siden"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "omtrent én time siden"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "omtrent %d timer siden"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "omtrent én dag siden"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "omtrent %d dager siden"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "omtrent én måned siden"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "omtrent %d måneder siden"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "omtrent ett år siden"
 
@@ -5561,7 +6018,7 @@ msgstr ""
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index ade4434a53f4870c6b976cd7b032fc6e74e67c1f..1cd71ad86814eb5e9be4d0d5e39abe4d76c1fd94 100644 (file)
@@ -10,17 +10,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:52+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:28+0000\n"
 "Language-Team: Dutch\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Toegang"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Instellingen voor sitetoegang"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registratie"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privé"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Mogen anonieme gebruikers (niet aangemeld) de website bekijken?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Alleen op uitnodiging"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Registratie alleen op uitnodiging."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Gesloten"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Nieuwe registraties uitschakelen."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Opslaan"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Toegangsinstellingen opslaan"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +87,29 @@ msgstr "Deze pagina bestaat niet"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Onbekende gebruiker."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s en vrienden, pagina %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -101,7 +157,7 @@ msgstr ""
 "bericht voor die gebruiker plaatsen](%%%%action.newnotice%%%%?"
 "status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -114,8 +170,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "U en vrienden"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 van %1$s en vrienden op %2$s."
@@ -125,23 +181,23 @@ msgstr "Updates van %1$s en vrienden op %2$s."
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "De API-functie is niet aangetroffen."
 
@@ -155,7 +211,7 @@ msgstr "De API-functie is niet aangetroffen."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Deze methode vereist een POST."
 
@@ -186,8 +242,9 @@ msgstr "Het was niet mogelijk het profiel op te slaan."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -308,11 +365,11 @@ msgstr "U kunt het abonnement op uzelf niet opzeggen."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Er moeten twee gebruikersnamen of ID's opgegeven worden."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Het was niet mogelijk de brongebruiker te bepalen."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Het was niet mogelijk de doelgebruiker te vinden."
 
@@ -337,7 +394,8 @@ msgstr ""
 msgid "Not a valid nickname."
 msgstr "Ongeldige gebruikersnaam!"
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -349,7 +407,8 @@ msgstr "De thuispagina is geen geldige URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "De volledige naam is te lang (maximaal 255 tekens)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "De beschrijving is te lang (maximaal %d tekens)."
@@ -385,7 +444,7 @@ msgstr "Een alias kan niet hetzelfde zijn als de gebruikersnaam."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "De groep is niet aangetroffen!"
 
@@ -426,6 +485,121 @@ msgstr "%s groepen"
 msgid "groups on %s"
 msgstr "groepen op %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Er is geen oauth_token parameter opgegeven."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Ongeldig token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Er is een probleem ontstaan met uw sessie. Probeer het nog een keer, "
+"alstublieft."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Ongeldige gebruikersnaam of wachtwoord."
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+"Er is een databasefout opgetreden tijdens het verwijderen van de OAuth "
+"applicatiegebruiker."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+"Er is een databasefout opgetreden tijdens het toevoegen van de OAuth "
+"applicatiegebruiker."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Het verzoektoken %s is geautoriseerd. Wissel het alstublieft uit voor een "
+"toegangstoken."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Het verzoektoken %s is geweigerd en ingetrokken."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Het formulier is onverwacht ingezonden."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Een applicatie vraagt toegang tot uw gebruikersgegevens"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Toegang toestaan of ontzeggen"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"De <strong>applicatie %1$s</strong> van <strong>%2$s</strong> vraagt toegang "
+"van het type \"<strong>%3$s</strong> tot uw gebruikersgegevens. Geef alleen "
+"toegang tot uw gebruiker bij %4$s aan derde partijen die u vertrouwt."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Gebruiker"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Gebruikersnaam"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Ontzeggen"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Toestaan"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Toegang tot uw gebruikersgegevens toestaan of ontzeggen."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Deze methode vereist een POST of DELETE."
@@ -455,17 +629,17 @@ msgstr "De status is verwijderd."
 msgid "No status with that ID found."
 msgstr "Er is geen status gevonden met dit ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "De mededeling is te lang. Gebruik maximaal %d tekens."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Niet gevonden"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -481,7 +655,7 @@ msgstr "Niet-ondersteund bestandsformaat."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s / Favorieten van %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 op de favorietenlijst geplaatst door %2$s / %3$s"
@@ -492,7 +666,7 @@ msgstr "%1$s updates op de favorietenlijst geplaatst door %2$s / %3$s"
 msgid "%s timeline"
 msgstr "%s tijdlijn"
 
-#: 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!"
@@ -508,27 +682,22 @@ msgstr "%1$s / Updates over %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s updates die een reactie zijn op updates van %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 publieke tijdlijn"
 
-#: 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 van iedereen"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Herhaald door %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Herhaald naar %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Herhaald van %s"
@@ -538,7 +707,7 @@ msgstr "Herhaald van %s"
 msgid "Notices tagged with %s"
 msgstr "Mededelingen met het label %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 met het label %1$s op %2$s!"
@@ -599,8 +768,8 @@ msgstr "Origineel"
 msgid "Preview"
 msgstr "Voorvertoning"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Verwijderen"
 
@@ -612,31 +781,6 @@ msgstr "Uploaden"
 msgid "Crop"
 msgstr "Uitsnijden"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Er is een probleem ontstaan met uw sessie. Probeer het nog een keer, "
-"alstublieft."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Het formulier is onverwacht ingezonden."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -676,8 +820,9 @@ msgstr ""
 "niet meer volgen en u wordt niet op de hoogte gebracht van \"@\"-antwoorden "
 "van deze gebruiker."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nee"
 
@@ -685,13 +830,13 @@ msgstr "Nee"
 msgid "Do not block this user"
 msgstr "Gebruiker niet blokkeren"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -774,7 +919,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "De e-mailbevestiging kon niet verwijderd worden."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Adres bevestigen"
 
 #: actions/confirmaddress.php:159
@@ -791,10 +936,51 @@ msgstr "Dialoog"
 msgid "Notices"
 msgstr "Mededelingen"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "U moet aangemeld zijn om een applicatie te kunnen verwijderen."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "De applicatie is niet gevonden."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "U bent niet de eigenaar van deze applicatie."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Er is een probleem met uw sessietoken."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Applicatie verwijderen"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Weet u zeker dat u deze applicatie wilt verwijderen? Door deze handeling "
+"worden alle gegevens van deze applicatie uit de database verwijderd, "
+"inclusief alle bestaande gebruikersverbindingen."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Deze applicatie niet verwijderen"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Deze applicatie verwijderen"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -825,7 +1011,7 @@ msgstr "Weet u zeker dat u deze aankondiging wilt verwijderen?"
 msgid "Do not delete this notice"
 msgstr "Deze mededeling niet verwijderen"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Deze mededeling verwijderen"
 
@@ -857,7 +1043,7 @@ msgstr "Gebruiker verwijderen"
 #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
 #: lib/adminpanelaction.php:316 lib/groupnav.php:119
 msgid "Design"
-msgstr "Ontwerp"
+msgstr "Uiterlijk"
 
 #: actions/designadminpanel.php:73
 msgid "Design settings for this StatusNet site."
@@ -958,16 +1144,6 @@ msgstr "Standaardontwerp toepassen"
 msgid "Reset back to default"
 msgstr "Standaardinstellingen toepassen"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Opslaan"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Ontwerp opslaan"
@@ -980,9 +1156,75 @@ msgstr "Deze mededeling staats niet op uw favorietenlijst."
 msgid "Add to favorites"
 msgstr "Aan favorieten toevoegen"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Onbekend document."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Onbekend document \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Applicatie bewerken"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "U moet aangemeld zijn om een applicatie te kunnen bewerken."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "De applicatie bestaat niet."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Gebruik dit formulier om uw applicatiegegevens te bewerken."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Een naam is verplicht."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "De naam is te lang (maximaal 255 tekens)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Deze naam wordt al gebruikt. Kies een andere."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Een beschrijving is verplicht"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "De bron-URL is te lang."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "De bron-URL is niet geldig."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organisatie is verplicht."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "De organisatienaam is te lang (maximaal 255 tekens)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "De homepage voor een organisatie is verplicht."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "De callback is te lang."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "De callback-URL is niet geldig."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Het was niet mogelijk de applicatie bij te werken."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -1011,7 +1253,7 @@ msgstr "de beschrijving is te lang (maximaal %d tekens)"
 msgid "Could not update group."
 msgstr "Het was niet mogelijk de groep bij te werken."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Het was niet mogelijk de aliassen aan te maken."
 
@@ -1026,7 +1268,7 @@ msgstr "E-mailvoorkeuren"
 #: actions/emailsettings.php:71
 #, php-format
 msgid "Manage how you get email from %%site.name%%."
-msgstr "E-mail ontvangen  van %%site.name%% beheren."
+msgstr "Uw e-mailinstellingen op %%site.name%% beheren."
 
 #: actions/emailsettings.php:100 actions/imsettings.php:100
 #: actions/smssettings.php:104
@@ -1052,13 +1294,14 @@ msgstr ""
 "ongewenste berichten/spam) voor een bericht met nadere instructies."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Annuleren"
 
 #: actions/emailsettings.php:121
 msgid "Email address"
-msgstr "E-mailadressen"
+msgstr "E-mailadres"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1080,8 +1323,8 @@ msgstr "Stuur een email naar dit adres om een nieuw bericht te posten"
 #: actions/emailsettings.php:145 actions/smssettings.php:162
 msgid "Make a new email address for posting to; cancels the old one."
 msgstr ""
-"Stelt een nieuw e-mailadres in voor het plaatsen van berichten; verwijdert "
-"het oude."
+"Stelt een nieuw e-mailadres in voor het ontvangen van berichten. Het "
+"bestaande e-mailadres wordt verwijderd."
 
 #: actions/emailsettings.php:148 actions/smssettings.php:164
 msgid "New"
@@ -1134,7 +1377,7 @@ msgid "Cannot normalize that email address"
 msgstr "Kan het emailadres niet normaliseren"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Geen geldig e-mailadres."
 
@@ -1146,7 +1389,7 @@ msgstr "U hebt dit e-mailadres als ingesteld als uw e-mailadres."
 msgid "That email address already belongs to another user."
 msgstr "Dit e-mailadres is al geregistreerd door een andere gebruiker."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "De bevestigingscode kon niet ingevoegd worden."
@@ -1208,7 +1451,7 @@ msgstr "Deze mededeling staat al in uw favorietenlijst."
 msgid "Disfavor favorite"
 msgstr "Van favotietenlijst verwijderen"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Populaire mededelingen"
@@ -1361,7 +1604,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"
 
@@ -1461,23 +1704,23 @@ msgstr "%1$s groeps leden, pagina %2$d"
 msgid "A list of the users in this group."
 msgstr "Ledenlijst van deze groep"
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1660,6 +1903,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Dit is niet uw Jabber-ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Postvak IN van %s - pagina %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1744,7 +1992,7 @@ msgstr "Persoonlijk bericht"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Persoonlijk bericht bij de uitnodiging (optioneel)."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Verzenden"
 
@@ -1846,7 +2094,7 @@ msgstr ""
 "Er is een fout opgetreden bij het maken van de instellingen. U hebt "
 "waarschijnlijk niet de juiste rechten."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Aanmelden"
@@ -1855,17 +2103,6 @@ msgstr "Aanmelden"
 msgid "Login to site"
 msgstr "Aanmelden"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Gebruikersnaam"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Wachtwoord"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Aanmeldgegevens onthouden"
@@ -1895,21 +2132,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."
@@ -1918,6 +2155,26 @@ msgstr "Het is niet mogelijk %1$s beheerder te maken van de groep %2$s."
 msgid "No current status"
 msgstr "Geen huidige status"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nieuwe applicatie"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "U moet aangemeld zijn om een applicatie te kunnen registreren."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Gebruik dit formulier om een nieuwe applicatie te registreren."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Een bron-URL is verplicht."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Het was niet mogelijk de applicatie aan te maken."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nieuwe groep"
@@ -2031,6 +2288,54 @@ msgstr "De por is verzonden"
 msgid "Nudge sent!"
 msgstr "De por is verzonden!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+"U moet aangemeld zijn om een lijst met uw applicaties te kunnen bekijken."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Overige instellingen"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Door u geregistreerde applicaties"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "U hebt nog geen applicaties geregistreerd."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Verbonden applicaties"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+"U hebt de volgende applicaties toegang gegeven tot uw gebruikersgegevens."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "U bent geen gebruiker van die applicatie."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+"Het was niet mogelijk de toegang te ontzeggen voor de volgende applicatie: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+"U hebt geen enkele applicatie geautoriseerd voor toegang tot uw "
+"gebruikersgegevens."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Ontwikkelaars kunnen de registratiegegevens voor hun applicaties bewerken "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Mededeling heeft geen profiel"
@@ -2048,8 +2353,8 @@ msgstr "inhoudstype "
 msgid "Only "
 msgstr "Alleen "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Geen ondersteund gegevensformaat."
 
@@ -2062,7 +2367,7 @@ msgid "Notice Search"
 msgstr "Mededeling zoeken"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Overige instellingen"
 
 #: actions/othersettings.php:71
@@ -2113,6 +2418,11 @@ msgstr "Het opgegeven token is ongeldig."
 msgid "Login token expired."
 msgstr "Het aanmeldtoken is verlopen."
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Postvak UIT voor %1$s - pagina %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2183,7 +2493,7 @@ msgstr "Het was niet mogelijk het nieuwe wachtwoord op te slaan."
 msgid "Password saved."
 msgstr "Het wachtwoord is opgeslagen."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Paden"
 
@@ -2191,132 +2501,148 @@ msgstr "Paden"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Pad- en serverinstellingen voor de StatusNet-website."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Er kan niet uit de vormgevingmap gelezen worden: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Er kan niet in de avatarmap geschreven worden: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Er kan niet in de achtergrondmap geschreven worden: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Er kan niet uit de talenmap gelezen worden: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "De SSL-server is ongeldig. De maximale lengte is 255 tekens."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Website"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Server"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Hostnaam van de website server."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Pad"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Websitepad"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Talenpad"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Talenmap"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Nette URL's"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Nette URL's (meer leesbaar en beter te onthouden) gebruiken?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Vormgeving"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Vormgevingsserver"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Vormgevingspad"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Vormgevingsmap"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatars"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Avatarserver"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Avatarpad"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Avatarmap"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Achtergronden"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Achtergrondenserver"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Achtergrondpad"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Achtergrondenmap"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Nooit"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Soms"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Altijd"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "SSL gebruiken"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Wanneer SSL gebruikt moet worden"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-server"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "De server waar SSL-verzoeken heen gestuurd moeten worden"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Opslagpaden"
 
@@ -2381,7 +2707,7 @@ msgid "Full name"
 msgstr "Volledige naam"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Thuispagina"
 
@@ -2404,7 +2730,7 @@ msgstr "Beschrijving"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Locatie"
@@ -2430,7 +2756,7 @@ msgstr ""
 "Eigen labels (letter, getallen, -, ., en _). Gescheiden door komma's of "
 "spaties"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Taal"
 
@@ -2458,7 +2784,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "De beschrijving is te lang (maximaal %d tekens)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Er is geen tijdzone geselecteerd."
 
@@ -2471,25 +2797,25 @@ msgstr "Taal is te lang (max 50 tekens)."
 msgid "Invalid tag: \"%s\""
 msgstr "Ongeldig label: '%s'"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 "Het was niet mogelijk de instelling voor automatisch abonneren voor de "
 "gebruiker bij te werken."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Het was niet mogelijk de locatievoorkeuren op te slaan."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Het profiel kon niet opgeslagen worden."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Het was niet mogelijk de labels op te slaan."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "De instellingen zijn opgeslagen."
 
@@ -2511,19 +2837,19 @@ msgstr "Openbare tijdlijn, pagina %d"
 msgid "Public timeline"
 msgstr "Openbare tijdlijn"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Publieke streamfeed (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Publieke streamfeed (RSS 1.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Publieke streamfeed (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2532,11 +2858,11 @@ msgstr ""
 "Dit is de publieke tijdlijn voor %%site.name%%, maar niemand heeft nog "
 "berichten geplaatst."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "U kunt de eerste zijn die een bericht plaatst!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2544,7 +2870,7 @@ msgstr ""
 "Waarom [registreert u geen gebruiker](%%action.register%%) en plaatst u als "
 "eerste een bericht?"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2557,7 +2883,7 @@ msgstr ""
 "net/). [Registreer nu](%%action.register%%) om mededelingen over uzelf te "
 "delen met vrienden, familie en collega's! [Meer lezen...](%%doc.help%%)"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2596,7 +2922,7 @@ msgstr ""
 "U kunt een [gebruiker registeren](%%action.register%%) en dan de eerste zijn "
 "die er een plaatst!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Woordwolk"
 
@@ -2741,7 +3067,7 @@ msgstr "Sorry. De uitnodigingscode is ongeldig."
 msgid "Registration successful"
 msgstr "De registratie is voltooid"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registreren"
@@ -2783,7 +3109,7 @@ msgid "Same as password above. Required."
 msgstr "Gelijk aan het wachtwoord hierboven. Verplicht"
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mail"
 
@@ -2890,7 +3216,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "De URL van uw profiel bij een andere, compatibele microblogdienst"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Abonneren"
 
@@ -2928,7 +3254,7 @@ msgstr "U kunt uw eigen mededeling niet herhalen."
 msgid "You already repeated that notice."
 msgstr "U hent die mededeling al herhaald."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Herhaald"
 
@@ -2942,6 +3268,11 @@ msgstr "Herhaald!"
 msgid "Replies to %s"
 msgstr "Antwoorden aan %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Antwoorden aan %1$s, pagina %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2989,6 +3320,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Antwoorden aan %1$s op %2$s."
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Op deze website kunt u gebruikers niet in de zandbak plaatsen."
@@ -2997,6 +3332,122 @@ msgstr "Op deze website kunt u gebruikers niet in de zandbak plaatsen."
 msgid "User is already sandboxed."
 msgstr "Deze gebruiker is al in de zandbak geplaatst."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessies"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Sessieinstellingen voor deze StatusNet-website."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Sessieafhandeling"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Of sessies door de software zelf afgehandeld moeten worden."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Sessies debuggen"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Debuguitvoer voor sessies inschakelen."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Websiteinstellingen opslaan"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "U moet aangemeld zijn om een applicatie te kunnen bekijken."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Applicatieprofiel"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Icoon"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Naam"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organisatie"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Beschrijving"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistieken"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Aangemaakt door %1$s - standaardtoegang \"%2$s\" - %3$d gebruikers"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Applicatiehandelingen"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Sleutel en wachtwoord op nieuw instellen"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Applicatieinformatie"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Gebruikerssleutel"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Gebruikerswachtwoord"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL voor verzoektoken"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL voor toegangstoken"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Autorisatie-URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Opmerking: HMAC-SHA1 ondertekening wordt ondersteund. Ondertekening in "
+"platte tekst is niet mogelijk."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+"Weet u zeker dat u uw gebruikerssleutel en geheime code wilt verwijderen?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Favoriete mededelingen van %1$s, pagina %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Het was niet mogelijk de favoriete mededelingen op te halen."
@@ -3055,17 +3506,22 @@ msgstr "Dit is de manier om dat te delen wat u wilt."
 msgid "%s group"
 msgstr "%s groep"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Groep %1$s, pagina %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Groepsprofiel"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Opmerking"
 
@@ -3111,10 +3567,6 @@ msgstr "(geen)"
 msgid "All members"
 msgstr "Alle leden"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistieken"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Aangemaakt"
@@ -3179,6 +3631,11 @@ msgstr "Deze mededeling is verwijderd."
 msgid " tagged %s"
 msgstr " met het label %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, pagina %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3204,13 +3661,13 @@ msgstr "Mededelingenfeed voor %s (Atom)"
 msgid "FOAF for %s"
 msgstr "Vriend van een vriend (FOAF) voor %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "Dit is de tijdlijn voor %1$s, maar %2$s heeft nog geen berichten verzonden."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3218,7 +3675,7 @@ msgstr ""
 "Hebt u recentelijk iets interessants gezien? U hebt nog geen mededelingen "
 "verstuurd, dus dit is een ideaal moment om daarmee te beginnen!"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3227,7 +3684,7 @@ msgstr ""
 "U kunt proberen %1$s te porren of [een bericht voor die gebruiker plaatsen](%"
 "%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3241,7 +3698,7 @@ msgstr ""
 "abonneren op de mededelingen van **%s** en nog veel meer! [Meer lezen...](%%%"
 "%doc.help%%%%)"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3252,7 +3709,7 @@ msgstr ""
 "(http://en.wikipedia.org/wiki/Micro-blogging) gebaseerd op de Vrije Software "
 "[StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Herhaald van %s"
@@ -3269,203 +3726,151 @@ msgstr "Deze gebruiker is al gemuilkorfd."
 msgid "Basic settings for this StatusNet site."
 msgstr "Basisinstellingen voor deze StatusNet-website."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "De sitenaam moet ingevoerd worden en mag niet leeg zijn."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr ""
 "U moet een geldig e-mailadres opgeven waarop contact opgenomen kan worden."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "De taal \"%s\" is niet bekend."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "De rapportage-URL voor snapshots is ongeldig."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "De waarde voor het uitvoeren van snapshots is ongeldig."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "De snapshotfrequentie moet een getal zijn."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "De minimale tekstlimiet is 140 tekens."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "De duplicaatlimiet moet één of meer seconden zijn."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Algemeen"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Websitenaam"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "De naam van de website, zoals \"UwBedrijf Microblog\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Mogelijk gemaakt door"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 "De tekst die gebruikt worden in de \"creditsverwijzing\" in de voettekst van "
 "iedere pagina"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "\"Mogelijk gemaakt door\"-URL"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 "URL die wordt gebruikt voor de verwijzing naar de hoster en dergelijke in de "
 "voettekst van iedere pagina"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "E-mailadres om contact op te nemen met de websitebeheerder"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Lokaal"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Standaardtijdzone"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Standaardtijdzone voor de website. Meestal UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Standaardtaal"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL's"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Server"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Hostnaam van de website server."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Nette URL's"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Nette URL's (meer leesbaar en beter te onthouden) gebruiken?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Toegang"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privé"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Mogen anonieme gebruikers (niet aangemeld) de website bekijken?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Alleen op uitnodiging"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Registratie alleen op uitnodiging."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Gesloten"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Nieuwe registraties uitschakelen."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Snapshots"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Willekeurig tijdens een websitehit"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Als geplande taak"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Snapshots van gegevens"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 "Wanneer statistische gegevens naar de status.net-servers verzonden worden"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequentie"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Iedere zoveel websitehits wordt een snapshot verzonden"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "Rapportage-URL"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Snapshots worden naar deze URL verzonden"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limieten"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Tekstlimiet"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Maximaal aantal te gebruiken tekens voor mededelingen."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Duplicaatlimiet"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Hoe lang gebruikers moeten wachten (in seconden) voor ze hetzelfde kunnen "
 "zenden."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Websiteinstellingen opslaan"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "SMS-instellingen"
@@ -3569,15 +3974,26 @@ msgstr "Er is geen code ingevoerd"
 msgid "You are not subscribed to that profile."
 msgstr "U bent niet geabonneerd op dat profiel."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Het was niet mogelijk het abonnement op te slaan."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Dit is geen lokale gebruiker."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Het bestand bestaat niet."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "U bent niet geabonneerd op dat profiel."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Geabonneerd"
 
@@ -3641,7 +4057,7 @@ msgstr "Dit zijn de gebruikers van wie u de mededelingen volgt."
 msgid "These are the people whose notices %s listens to."
 msgstr "Dit zijn de gebruikers waarvan %s de mededelingen volgt."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3657,19 +4073,24 @@ msgstr ""
 "action.twittersettings%%), kunt u automatisch abonneren op de gebruikers die "
 "u daar al volgt."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
-msgstr "%s luistert nergens naar."
+msgstr "%s volgt niemand."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Mededelingen met het label %1$s, pagina %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3698,7 +4119,8 @@ msgstr "Label %s"
 msgid "User profile"
 msgstr "Gebruikersprofiel"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3759,7 +4181,7 @@ msgstr "Het profiel-ID was niet aanwezig in het verzoek."
 msgid "Unsubscribed"
 msgstr "Het abonnement is opgezegd"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3776,84 +4198,64 @@ msgstr "Gebruiker"
 msgid "User settings for this StatusNet site."
 msgstr "Gebruikersinstellingen voor deze StatusNet-website."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Ongeldige beschrijvingslimiet. Het moet een getal zijn."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Ongeldige welkomsttekst. De maximale lengte is 255 tekens."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Ongeldig standaardabonnement: \"%1$s\" is geen gebruiker."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profiel"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Profiellimiet"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "De maximale lengte van de profieltekst in tekens."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nieuwe gebruikers"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Welkom voor nieuwe gebruikers"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Welkomsttekst voor nieuwe gebruikers. Maximaal 255 tekens."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Standaardabonnement"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Nieuwe gebruikers automatisch op deze gebruiker abonneren"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Uitnodigingen"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Uitnodigingen ingeschakeld"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Of gebruikers nieuwe gebruikers kunnen uitnodigen."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessies"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Sessieafhandeling"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Of sessies door de software zelf afgehandeld moeten worden."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Sessies debuggen"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Debuguitvoer voor sessies inschakelen."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Abonneren"
@@ -3869,36 +4271,36 @@ msgstr ""
 "aangegeven dat u zich op de mededelingen van een gebruiker wilt abonneren, "
 "klik dan op \"Afwijzen\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licentie"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Aanvaarden"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
-msgstr "Abonnement geautoriseerd"
+msgstr "Abonneer mij op deze gebruiker"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Afwijzen"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Dit abonnement weigeren"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Geen autorisatieverzoek!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Het abonnement is geautoriseerd"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3908,11 +4310,11 @@ msgstr ""
 "Controleer de instructies van de site voor informatie over het volledig "
 "afwijzen van een abonnement. Uw abonnementstoken is:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Het abonnement is afgewezen"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3922,37 +4324,37 @@ msgstr ""
 "Controleer de instructies van de site voor informatie over het volledig "
 "afwijzen van een abonnement."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "De abonnee-URI \"%s\" is hier niet te vinden."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "De URI \"%s\" voor de stream is te lang."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "de URI \"%s\" voor de stream is een lokale gebruiker."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
-msgstr "De profiel-URL \"%s\" is niet geldig."
+msgstr "De profiel-URL ‘%s’ is van een lokale gebruiker."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "De avatar-URL \"%s\" is niet geldig."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Het was niet mogelijk de avatar-URL \"%s\" te lezen."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Er staat een verkeerd afbeeldingsttype op de avatar-URL \"%s\"."
@@ -3973,6 +4375,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Geniet van uw hotdog!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Groepen voor %1$s, pagina %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Meer groepen zoeken"
@@ -4002,10 +4409,6 @@ msgstr ""
 "Deze website wordt aangedreven door %1$2 versie %2$s. Auteursrechten "
 "voorbehouden 2008-2010 Statusnet, Inc. en medewerkers."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Medewerkers"
@@ -4030,9 +4433,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
@@ -4047,11 +4450,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Plug-ins"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Naam"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Versie"
 
@@ -4059,10 +4458,6 @@ msgstr "Versie"
 msgid "Author(s)"
 msgstr "Auteur(s)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Beschrijving"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4085,19 +4480,16 @@ msgstr ""
 "Een bestand van deze grootte overschijdt uw maandelijkse quota van %d bytes."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Groepsprofiel"
+msgstr "Groepslidmaatschap toevoegen is mislukt."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Het was niet mogelijk de groep bij te werken."
+msgstr "Geen lid van groep."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Groepsprofiel"
+msgstr "Groepslidmaatschap opzeggen is mislukt."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4116,31 +4508,31 @@ msgstr "Het was niet mogelijk het bericht in te voegen."
 msgid "Could not update message with new URI."
 msgstr "Het was niet mogelijk het bericht bij te werken met de nieuwe URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Er is een databasefout opgetreden bij de invoer van de hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 "Er is een probleem opgetreden bij het opslaan van de mededeling. Deze is te "
 "lang."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr ""
 "Er was een probleem bij het opslaan van de mededeling. De gebruiker is "
 "onbekend."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "U hebt te snel te veel mededelingen verstuurd. Kom even op adem en probeer "
 "het over enige tijd weer."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4148,36 +4540,60 @@ msgstr ""
 "Te veel duplicaatberichten te snel achter elkaar. Neem een adempauze en "
 "plaats over een aantal minuten pas weer een bericht."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 "U bent geblokkeerd en mag geen mededelingen meer achterlaten op deze site."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
 msgstr ""
-"Er is een databasefout opgetreden bij het invoegen van het antwoord: %s"
+"Er is een probleem opgetreden bij het opslaan van het Postvak IN van de "
+"groep."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "U mag zich niet abonneren."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "U bent al gebonneerd!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Deze gebruiker negeert u."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Niet geabonneerd!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Het was niet mogelijk het abonnement op uzelf te verwijderen."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Kon abonnement niet verwijderen."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Welkom bij %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Het was niet mogelijk de groep aan te maken."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Het was niet mogelijk het groepslidmaatschap in te stellen."
 
@@ -4218,128 +4634,124 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr "Naamloze pagina"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Primaire sitenavigatie"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Start"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Persoonlijk profiel en tijdlijn van vrienden"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Gebruiker"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Uw e-mailadres, avatar, wachtwoord of profiel wijzigen"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Koppelen"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Met diensten verbinden"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Websiteinstellingen wijzigen"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Uitnodigen"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Vrienden en collega's uitnodigen om u te vergezellen op %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Afmelden"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Van de site afmelden"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Gebruiker aanmaken"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Bij de site aanmelden"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Help"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Help me!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Zoeken"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Naar gebruikers of tekst zoeken"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Mededeling van de website"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Lokale weergaven"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Mededeling van de pagina"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Secundaire sitenavigatie"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Over"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Veel gestelde vragen"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Gebruiksvoorwaarden"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Broncode"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Widget"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licentie van de StatusNet-software"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4348,12 +4760,12 @@ msgstr ""
 "**%%site.name%%** is een microblogdienst van [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** is een microblogdienst. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4364,33 +4776,59 @@ msgstr ""
 "versie %s, beschikbaar onder de [GNU Affero General Public License](http://"
 "www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licentie voor siteinhoud"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Inhoud en gegevens van %1$s zijn persoonlijk en vertrouwelijk."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+"Auteursrechten op inhoud en gegevens rusten bij %1$s. Alle rechten "
+"voorbehouden."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Auteursrechten op inhoud en gegevens rusten bij de respectievelijke "
+"gebruikers. Alle rechten voorbehouden."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Alle "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licentie."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginering"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Later"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Eerder"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Er is een probleem met uw sessietoken."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4420,10 +4858,100 @@ msgstr "Basisinstellingen voor de website"
 msgid "Design configuration"
 msgstr "Instellingen vormgeving"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Gebruikersinstellingen"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Toegangsinstellingen"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Padinstellingen"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Sessieinstellingen"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"Het API-programma heeft lezen-en-schrijventoegang nodig, maar u hebt alleen "
+"maar leestoegang."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"De API-authenticatie is mislukt. nickname = %1$s, proxy - %2$s, ip = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Applicatie bewerken"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Icoon voor deze applicatie"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Beschrijf uw applicatie in %d tekens"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Beschrijf uw applicatie"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "Bron-URL"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "De URL van de homepage van deze applicatie"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organisatie verantwoordelijk voor deze applicatie"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "De URL van de homepage van de organisatie"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL om naar door te verwijzen na authenticatie"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Browser"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Desktop"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Type applicatie; browser of desktop"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Alleen-lezen"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Lezen en schrijven"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Standaardtoegang voor deze applicatie: alleen-lezen of lezen en schrijven"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Intrekken"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Bijlagen"
@@ -4444,11 +4972,11 @@ msgstr "Mededelingen die deze bijlage bevatten"
 msgid "Tags for this attachment"
 msgstr "Labels voor deze bijlage"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Wachtwoord wijzigen is mislukt"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Wachtwoord wijzigen is niet toegestaan"
 
@@ -4603,83 +5131,93 @@ msgstr "Er is een fout opgetreden bij het opslaan van de mededeling."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Geef de naam op van de gebruiker waarop u wilt abonneren"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "De opgegeven gebruiker bestaat niet"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Geabonneerd op %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 "Geef de naam op van de gebruiker waarvoor u het abonnement wilt opzeggen"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Uw abonnement op %s is opgezegd"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Dit commando is nog niet geïmplementeerd."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificaties uitgeschakeld."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Het is niet mogelijk de mededelingen uit te schakelen."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificaties ingeschakeld."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Het is niet mogelijk de notificatie uit te schakelen."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Het aanmeldcommando is uitgeschakeld"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Deze verwijzing kan slechts één keer gebruikt worden en is twee minuten "
 "geldig: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Uw abonnement op %s is opgezegd"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "U bent op geen enkele gebruiker geabonneerd."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "U bent geabonneerd op deze gebruiker:"
 msgstr[1] "U bent geabonneerd op deze gebruikers:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Niemand heeft een abonnenment op u."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Deze gebruiker is op u geabonneerd:"
 msgstr[1] "Deze gebruikers zijn op u geabonneerd:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "U bent lid van geen enkele groep."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "U bent lid van deze groep:"
 msgstr[1] "U bent lid van deze groepen:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4693,6 +5231,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4759,20 +5298,20 @@ msgstr ""
 "tracks - nog niet beschikbaar\n"
 "tracking - nog niet beschikbaar\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Er is geen instellingenbestand aangetroffen. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Er is gezocht naar instellingenbestanden op de volgende plaatsen: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 "U kunt proberen de installer uit te voeren om dit probleem op te lossen."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Naar het installatieprogramma gaan."
 
@@ -4788,6 +5327,14 @@ msgstr "Updates via instant messenger (IM)"
 msgid "Updates by SMS"
 msgstr "Updates via SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Verbindingen"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Geautoriseerde verbonden applicaties"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Databasefout"
@@ -4974,15 +5521,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "De taal \"%s\" is niet bekend."
+msgstr "Onbekende bron Postvak IN %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5261,7 +5808,7 @@ msgstr ""
 "U hebt geen privéberichten. U kunt privéberichten verzenden aan andere "
 "gebruikers. Mensen kunnen u privéberichten sturen die alleen u kunt lezen."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "van"
 
@@ -5382,57 +5929,55 @@ msgid "Do not share my location"
 msgstr "Mijn locatie niet bekend maken"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Deze informatie verbergen"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Het ophalen van uw geolocatie duurt langer dan verwacht. Probeer het later "
+"nog eens"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "Z"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "O"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "W"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "op"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "in context"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Herhaald door"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Op deze mededeling antwoorden"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Antwoorden"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Mededeling herhaald"
 
@@ -5465,11 +6010,7 @@ msgstr ""
 msgid "Duplicate notice"
 msgstr "Duplicaatmelding"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "U mag zich niet abonneren."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Kon nieuw abonnement niet toevoegen."
 
@@ -5485,19 +6026,19 @@ msgstr "Antwoorden"
 msgid "Favorites"
 msgstr "Favorieten"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Postvak IN"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Uw inkomende berichten"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Postvak UIT"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Uw verzonden berichten"
 
@@ -5574,6 +6115,10 @@ msgstr "Deze mededeling herhalen?"
 msgid "Repeat this notice"
 msgstr "Deze mededeling herhalen"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Er is geen gebruiker gedefinieerd voor single-usermodus."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Zandbak"
@@ -5641,34 +6186,6 @@ msgstr "Gebruikers met een abonnement op %s"
 msgid "Groups %s is a member of"
 msgstr "Groepen waar %s lid van is"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "U bent al gebonneerd!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Deze gebruiker negeert u."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Kan niet abonneren "
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Het was niet mogelijk om een ander op u te laten abonneren"
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Niet geabonneerd!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Het was niet mogelijk het abonnement op uzelf te verwijderen."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Kon abonnement niet verwijderen."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5719,67 +6236,67 @@ msgstr "Avatar bewerken"
 msgid "User actions"
 msgstr "Gebruikershandelingen"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Profielinstellingen bewerken"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Bewerken"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Deze gebruiker een direct bericht zenden"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Bericht"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Modereren"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "een paar seconden geleden"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "ongeveer een minuut geleden"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "ongeveer %d minuten geleden"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "ongeveer een uur geleden"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "ongeveer %d uur geleden"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "ongeveer een dag geleden"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "ongeveer %d dagen geleden"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "ongeveer een maand geleden"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "ongeveer %d maanden geleden"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "ongeveer een jaar geleden"
 
@@ -5793,7 +6310,7 @@ msgstr "%s is geen geldige kleur."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s is geen geldige kleur. Gebruik drie of zes hexadecimale tekens."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 5bba0e8b0155d4301b06a37b74ffcafc0045881c..55918d8802f74df4afe16bc2d6ef2e3ea55bd10d 100644 (file)
@@ -7,17 +7,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:49+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:25+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Godta"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Avatar-innstillingar"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Registrér"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Personvern"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "Invitér"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Blokkér"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Lagra"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Avatar-innstillingar"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -33,25 +92,29 @@ msgstr "Dette emneord finst ikkje."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Brukaren finst ikkje."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s med vener, side %d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +155,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +167,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s med vener"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Oppdateringar frå %1$s og vener på %2$s!"
@@ -115,23 +178,23 @@ msgstr "Oppdateringar frå %1$s og vener på %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Fann ikkje API-metode."
@@ -146,7 +209,7 @@ msgstr "Fann ikkje API-metode."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Dette krev ein POST."
 
@@ -177,8 +240,9 @@ msgstr "Kan ikkje lagra profil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -299,12 +363,12 @@ msgstr "Kan ikkje oppdatera brukar."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "To brukar IDer eller kallenamn er naudsynte."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Kan ikkje hente offentleg straum."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Kan ikkje finna einkvan status."
@@ -327,7 +391,8 @@ msgstr "Kallenamnet er allereie i bruk. Prøv eit anna."
 msgid "Not a valid nickname."
 msgstr "Ikkje eit gyldig brukarnamn."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -339,7 +404,8 @@ msgstr "Heimesida er ikkje ei gyldig internettadresse."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "skildringa er for lang (maks 140 teikn)."
@@ -375,7 +441,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "Fann ikkje API-metode."
@@ -419,6 +485,115 @@ msgstr "%s grupper"
 msgid "groups on %s"
 msgstr "Gruppe handlingar"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ugyldig storleik."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Der var eit problem med sesjonen din. Vennlegst prøv på nytt."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Ugyldig brukarnamn eller passord."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Feil ved å setja brukar."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Uventa skjemasending."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Kallenamn"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Passord"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Alle"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Dette krev anten ein POST eller DELETE."
@@ -451,17 +626,17 @@ msgstr "Lasta opp brukarbilete."
 msgid "No status with that ID found."
 msgstr "Fann ingen status med den ID-en."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Det er for langt! Ein notis kan berre innehalde 140 teikn."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Fann ikkje"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -476,7 +651,7 @@ msgstr "Støttar ikkje bileteformatet."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s / Favorittar frå %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s oppdateringar favorisert av %s / %s."
@@ -487,7 +662,7 @@ msgstr "%s oppdateringar favorisert av %s / %s."
 msgid "%s timeline"
 msgstr "%s tidsline"
 
-#: 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!"
@@ -503,27 +678,22 @@ msgstr "%1$s / Oppdateringar som svarar til %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s oppdateringar som svarar på oppdateringar frå %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 offentleg tidsline"
 
-#: 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 oppdateringar frå alle saman!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Svar til %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Svar til %s"
@@ -533,7 +703,7 @@ msgstr "Svar til %s"
 msgid "Notices tagged with %s"
 msgstr "Notisar merka med %s"
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Oppdateringar frå %1$s på %2$s!"
@@ -594,8 +764,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Forhandsvis"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Slett"
 
@@ -607,29 +777,6 @@ msgstr "Last opp"
 msgid "Crop"
 msgstr "Skaler"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Der var eit problem med sesjonen din. Vennlegst prøv på nytt."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Uventa skjemasending."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Velg eit utvalg av bildet som vil blir din avatar."
@@ -667,8 +814,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nei"
 
@@ -677,13 +825,13 @@ msgstr "Nei"
 msgid "Do not block this user"
 msgstr "Lås opp brukaren"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -769,7 +917,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Kan ikkje sletta e-postgodkjenning."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Stadfest adresse"
 
 #: actions/confirmaddress.php:159
@@ -787,10 +936,54 @@ msgstr "Stadfestingskode"
 msgid "Notices"
 msgstr "Notisar"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Du må være logga inn for å lage ei gruppe."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Notisen har ingen profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Du er ikkje medlem av den gruppa."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Det var eit problem med sesjons billetten din."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Denne notisen finst ikkje."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Kan ikkje sletta notisen."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Slett denne notisen"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -823,7 +1016,7 @@ msgstr "Sikker på at du vil sletta notisen?"
 msgid "Do not delete this notice"
 msgstr "Kan ikkje sletta notisen."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Slett denne notisen"
 
@@ -965,16 +1158,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Lagra"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -987,10 +1170,87 @@ msgstr "Denne notisen er ikkje ein favoritt!"
 msgid "Add to favorites"
 msgstr "Legg til i favorittar"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Slikt dokument finst ikkje."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Andre val"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Du må være logga inn for å lage ei gruppe."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Denne notisen finst ikkje."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Bruk dette skjemaet for å redigere gruppa"
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Samme som passord over. Påkrevd."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Kallenamnet er allereie i bruk. Prøv eit anna."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Beskriving"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Heimesida er ikkje ei gyldig internettadresse."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Plassering er for lang (maksimalt 255 teikn)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Kann ikkje oppdatera gruppa."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1019,7 +1279,7 @@ msgstr "skildringa er for lang (maks 140 teikn)."
 msgid "Could not update group."
 msgstr "Kann ikkje oppdatera gruppa."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Kunne ikkje lagre favoritt."
@@ -1062,7 +1322,8 @@ msgstr ""
 "med instruksjonar."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Avbryt"
 
@@ -1145,7 +1406,7 @@ msgid "Cannot normalize that email address"
 msgstr "Klarar ikkje normalisera epostadressa"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Ikkje ei gyldig epostadresse."
 
@@ -1157,7 +1418,7 @@ msgstr "Det er alt din epost addresse"
 msgid "That email address already belongs to another user."
 msgstr "Den epost addressa er alt registrert hos ein annan brukar."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Kan ikkje leggja til godkjenningskode."
@@ -1218,7 +1479,7 @@ msgstr "Denne notisen er alt ein favoritt!"
 msgid "Disfavor favorite"
 msgstr "Fjern favoritt"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Populære notisar"
@@ -1373,7 +1634,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"
@@ -1474,25 +1735,25 @@ msgstr "%s medlemmar i gruppa, side %d"
 msgid "A list of the users in this group."
 msgstr "Ei liste over brukarane i denne gruppa."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1666,6 +1927,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Det er ikkje din Jabber ID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Innboks for %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1747,7 +2013,7 @@ msgstr "Personleg melding"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Eventuelt legg til ei personleg melding til invitasjonen."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Send"
 
@@ -1843,7 +2109,7 @@ msgstr "Feil brukarnamn eller passord"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ikkje autorisert."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logg inn"
@@ -1852,17 +2118,6 @@ msgstr "Logg inn"
 msgid "Login to site"
 msgstr "Logg inn "
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Kallenamn"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Passord"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Hugs meg"
@@ -1893,21 +2148,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"
@@ -1916,6 +2171,30 @@ msgstr "Du må være administrator for å redigere gruppa"
 msgid "No current status"
 msgstr "Ingen status"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Denne notisen finst ikkje."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Du må være logga inn for å lage ei gruppe."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Bruk dette skjemaet for å lage ein ny gruppe."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Kunne ikkje lagre favoritt."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Ny gruppe"
@@ -2027,6 +2306,51 @@ msgstr "Dytta!"
 msgid "Nudge sent!"
 msgstr "Dytta!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Du må være logga inn for å lage ei gruppe."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Andre val"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Du er ikkje medlem av den gruppa."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Notisen har ingen profil"
@@ -2045,8 +2369,8 @@ msgstr "Kopla til"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Ikkje eit støtta dataformat."
 
@@ -2059,7 +2383,8 @@ msgid "Notice Search"
 msgstr "Notissøk"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Andre innstillingar"
 
 #: actions/othersettings.php:71
@@ -2116,6 +2441,11 @@ msgstr "Ugyldig notisinnhald"
 msgid "Login token expired."
 msgstr "Logg inn "
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Utboks for %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2186,7 +2516,7 @@ msgstr "Klarar ikkje lagra nytt passord."
 msgid "Password saved."
 msgstr "Lagra passord."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2194,142 +2524,159 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Denne sida er ikkje tilgjengleg i eit"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Invitér"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
-msgstr ""
-
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
 #, fuzzy
-msgid "Site path"
+msgid "Server"
+msgstr "Gjenopprett"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+#, fuzzy
+msgid "Site path"
 msgstr "Statusmelding"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Brukarbilete"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Avatar-innstillingar"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Lasta opp brukarbilete."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Lasta opp brukarbilete."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Gjenopprett"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Notisar"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Gjenopprett"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Statusmelding"
@@ -2393,7 +2740,7 @@ msgid "Full name"
 msgstr "Fullt namn"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Heimeside"
 
@@ -2417,7 +2764,7 @@ msgstr "Om meg"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Plassering"
@@ -2443,7 +2790,7 @@ msgstr ""
 "merkelappar for deg sjølv ( bokstavar, nummer, -, ., og _ ), komma eller "
 "mellomroms separert."
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Språk"
 
@@ -2470,7 +2817,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "«Om meg» er for lang (maks 140 "
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Tidssone er ikkje valt."
 
@@ -2483,24 +2830,24 @@ msgstr "Språk er for langt (maksimalt 50 teikn)."
 msgid "Invalid tag: \"%s\""
 msgstr "Ugyldig merkelapp: %s"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Kan ikkje oppdatera brukar for automatisk tinging."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Kan ikkje lagra merkelapp."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Kan ikkje lagra profil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Kan ikkje lagra merkelapp."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Lagra innstillingar."
 
@@ -2522,39 +2869,39 @@ msgstr "Offentleg tidsline, side %d"
 msgid "Public timeline"
 msgstr "Offentleg tidsline"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Offentleg straum"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Offentleg straum"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Offentleg straum"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2563,7 +2910,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2598,7 +2945,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Emne sky"
 
@@ -2737,7 +3084,7 @@ msgstr "Feil med stadfestingskode."
 msgid "Registration successful"
 msgstr "Registreringa gikk bra"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrér"
@@ -2779,7 +3126,7 @@ msgid "Same as password above. Required."
 msgstr "Samme som passord over. Påkrevd."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Epost"
 
@@ -2887,7 +3234,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL til profilsida di på ei anna kompatibel mikrobloggingteneste."
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Ting"
 
@@ -2930,7 +3277,7 @@ msgstr "Du kan ikkje registrera deg om du ikkje godtek vilkåra i lisensen."
 msgid "You already repeated that notice."
 msgstr "Du har allereie blokkert denne brukaren."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Lag"
@@ -2946,6 +3293,11 @@ msgstr "Lag"
 msgid "Replies to %s"
 msgstr "Svar til %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Melding til %1$s på %2$s"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2987,6 +3339,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Melding til %1$s på %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Lasta opp brukarbilete."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2997,6 +3354,125 @@ msgstr "Du kan ikkje sende melding til denne brukaren."
 msgid "User is already sandboxed."
 msgstr "Brukar har blokkert deg."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Avatar-innstillingar"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Du må være innlogga for å melde deg ut av ei gruppe."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Notisen har ingen profil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Kallenamn"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Paginering"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Beskriving"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistikk"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Sikker på at du vil sletta notisen?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s's favoritt meldingar"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Kunne ikkje hente fram favorittane."
@@ -3046,17 +3522,22 @@ msgstr ""
 msgid "%s group"
 msgstr "%s gruppe"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s medlemmar i gruppa, side %d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Gruppe profil"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Merknad"
 
@@ -3102,10 +3583,6 @@ msgstr "(Ingen)"
 msgid "All members"
 msgstr "Alle medlemmar"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistikk"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3165,6 +3642,11 @@ msgstr "Melding lagra"
 msgid " tagged %s"
 msgstr "Notisar merka med %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s med vener, side %d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3190,25 +3672,25 @@ msgstr "Notisstraum for %s"
 msgid "FOAF for %s"
 msgstr "Utboks for %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3217,7 +3699,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3227,7 +3709,7 @@ msgstr ""
 "**%s** har ein konto på %%%%site.name%%%%, ei [mikroblogging](http://en."
 "wikipedia.org/wiki/Micro-blogging)-teneste"
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Svar til %s"
@@ -3246,207 +3728,148 @@ msgstr "Brukar har blokkert deg."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Ikkje ei gyldig epostadresse"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Statusmelding"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Ny epostadresse for å oppdatera %s"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Lokale syningar"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "Foretrukke språk"
 
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Gjenopprett"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Godta"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Personvern"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Invitér"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Blokkér"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Avatar-innstillingar"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3553,15 +3976,26 @@ msgstr "Ingen innskriven kode"
 msgid "You are not subscribed to that profile."
 msgstr "Du tingar ikkje oppdateringar til den profilen."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Kunne ikkje lagra abonnement."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Ikkje ein lokal brukar."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Denne notisen finst ikkje."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Du tingar ikkje oppdateringar til den profilen."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Abonnent"
 
@@ -3621,7 +4055,7 @@ msgstr "Dette er dei du lyttar til."
 msgid "These are the people whose notices %s listens to."
 msgstr "Dette er folka som %s tingar oppdateringar frå."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3631,19 +4065,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s høyrer no på"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Brukarar sjølv-merka med %s, side %d"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3673,7 +4112,8 @@ msgstr "Merkelapp %s"
 msgid "User profile"
 msgstr "Brukarprofil"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Bilete"
 
@@ -3737,7 +4177,7 @@ msgstr "Ingen profil-ID i førespurnaden."
 msgid "Unsubscribed"
 msgstr "Fjerna tinging"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3752,90 +4192,70 @@ msgstr "Brukar"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "Invitér nye brukarar"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Alle tingingar"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Automatisk ting notisane til dei som tingar mine (best for ikkje-menneskje)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Invitasjon(er) sendt"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Invitasjon(er) sendt"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autoriser tinging"
@@ -3850,38 +4270,38 @@ msgstr ""
 "Sjekk desse detaljane og forsikre deg om at du vil abonnere på denne "
 "brukaren sine notisar. Vist du ikkje har bedt om dette, klikk \"Avbryt\""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 #, fuzzy
 msgid "License"
 msgstr "lisens."
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Godta"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Lagre tinging for brukar: %s"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Avslå"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "%s tingarar"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Ingen autoriserings-spørjing!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Tinging autorisert"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3892,11 +4312,11 @@ msgstr ""
 "Sjekk med sida sine instruksjonar for korleis autorisering til tinginga skal "
 "gjennomførast. Ditt tingings teikn er: "
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Tinging avvist"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3906,37 +4326,37 @@ msgstr ""
 "Tingina har blitt avvist, men ingen henvisnings URL er tilgjengleg. Sjekk "
 "med sida sine instruksjonar for korleis ein skal avvise tinginga."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Kan ikkje lesa brukarbilete-URL «%s»"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Feil biletetype for '%s'"
@@ -3956,6 +4376,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s medlemmar i gruppa, side %d"
+
 #: actions/usergroups.php:130
 #, fuzzy
 msgid "Search for more groups"
@@ -3983,11 +4408,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Lasta opp brukarbilete."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4019,12 +4439,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Kallenamn"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Personleg"
@@ -4033,10 +4448,6 @@ msgstr "Personleg"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Beskriving"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4087,27 +4498,27 @@ msgstr "Kunne ikkje lagre melding."
 msgid "Could not update message with new URI."
 msgstr "Kunne ikkje oppdatere melding med ny URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Eit problem oppstod ved lagring av notis."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Feil ved lagring av notis.  Ukjend brukar."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4115,34 +4526,61 @@ msgid ""
 msgstr ""
 "For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Du kan ikkje lengre legge inn notisar på denne sida."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Eit problem oppstod ved lagring av notis."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Databasefeil, kan ikkje lagra svar: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Eit problem oppstod ved lagring av notis."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "Brukaren tillet deg ikkje å tinga meldingane sine."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Brukar har blokkert deg."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Ikkje tinga."
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Kan ikkje sletta tinging."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Kan ikkje sletta tinging."
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Melding til %1$s på %2$s"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Kunne ikkje laga gruppa."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Kunne ikkje bli med i gruppa."
 
@@ -4184,131 +4622,127 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Ingen tittel"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navigasjon for hovudsida"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Heim"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Personleg profil og oversyn over vener"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Konto"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Endra e-posten, avataren, passordet eller profilen"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Kopla til"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Klarte ikkje å omdirigera til tenaren: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Navigasjon for hovudsida"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitér"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Inviter vennar og kollega til å bli med deg på %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Logg ut"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Logg ut or sida"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Opprett ny konto"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Logg inn or sida"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hjelp"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Hjelp meg!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Søk"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Søk etter folk eller innhald"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Statusmelding"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Lokale syningar"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Sidenotis"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Andrenivås side navigasjon"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "OSS"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Personvern"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Kjeldekode"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "Dult"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNets programvarelisens"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4317,12 +4751,12 @@ msgstr ""
 "**%%site.name%%** er ei mikrobloggingteneste av [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er ei mikrobloggingteneste. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4333,34 +4767,56 @@ msgstr ""
 "%s, tilgjengeleg under [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNets programvarelisens"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Alle"
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "lisens."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginering"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "« Etter"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Før »"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Det var eit problem med sesjons billetten din."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4397,11 +4853,105 @@ msgstr "Stadfesting av epostadresse"
 msgid "Design configuration"
 msgstr "SMS bekreftelse"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS bekreftelse"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS bekreftelse"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS bekreftelse"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS bekreftelse"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Beskriv gruppa eller emnet med 140 teikn"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Beskriv gruppa eller emnet med 140 teikn"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Kjeldekode"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL til heimesida eller bloggen for gruppa eller emnet"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL til heimesida eller bloggen for gruppa eller emnet"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Fjern"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4423,12 +4973,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Endra passord"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Endra passord"
@@ -4582,83 +5132,92 @@ msgstr "Eit problem oppstod ved lagring av notis."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Spesifer namnet til brukaren du vil tinge"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Brukaren finst ikkje."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Tingar %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Spesifer namnet til brukar du vil fjerne tinging på"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Tingar ikkje %s lengre"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Kommando ikkje implementert."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notifikasjon av."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Kan ikkje skru av notifikasjon."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notifikasjon på."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Kan ikkje slå på notifikasjon."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Tingar ikkje %s lengre"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Du tingar ikkje oppdateringar til den profilen."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Du tingar allereie oppdatering frå desse brukarane:"
 msgstr[1] "Du tingar allereie oppdatering frå desse brukarane:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Kan ikkje tinga andre til deg."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Kan ikkje tinga andre til deg."
 msgstr[1] "Kan ikkje tinga andre til deg."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Du er ikkje medlem av den gruppa."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Du er ikkje medlem av den gruppa."
 msgstr[1] "Du er ikkje medlem av den gruppa."
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4672,6 +5231,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4699,20 +5259,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Ingen stadfestingskode."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "Logg inn or sida"
@@ -4729,6 +5289,15 @@ msgstr "Oppdateringar over direktemeldingar (IM)"
 msgid "Updates by SMS"
 msgstr "Oppdateringar over SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Kopla til"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4916,12 +5485,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5131,7 +5700,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " frå "
@@ -5250,60 +5819,56 @@ msgid "Do not share my location"
 msgstr "Kan ikkje lagra merkelapp."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "Nei"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "Ingen innhald."
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Lag"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Svar på denne notisen"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Svar"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Melding lagra"
@@ -5337,12 +5902,7 @@ msgstr "Feil med å henta inn ekstern profil"
 msgid "Duplicate notice"
 msgstr "Slett notis"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "Brukaren tillet deg ikkje å tinga meldingane sine."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Kan ikkje leggja til ny tinging."
 
@@ -5358,19 +5918,19 @@ msgstr "Svar"
 msgid "Favorites"
 msgstr "Favorittar"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Innboks"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Dine innkomande meldinger"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Utboks"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Dine sende meldingar"
 
@@ -5452,6 +6012,10 @@ msgstr "Svar på denne notisen"
 msgid "Repeat this notice"
 msgstr "Svar på denne notisen"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5525,36 +6089,6 @@ msgstr "Mennesker som tingar %s"
 msgid "Groups %s is a member of"
 msgstr "Grupper %s er medlem av"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Brukar har blokkert deg."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Kan ikkje tinga."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Kan ikkje tinga andre til deg."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Ikkje tinga."
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Kan ikkje sletta tinging."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Kan ikkje sletta tinging."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5608,68 +6142,68 @@ msgstr "Brukarbilete"
 msgid "User actions"
 msgstr "Brukarverkty"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Profilinnstillingar"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Send ei direktemelding til denne brukaren"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Melding"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "eit par sekund sidan"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "omtrent eitt minutt sidan"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "~%d minutt sidan"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "omtrent ein time sidan"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "~%d timar sidan"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "omtrent ein dag sidan"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "~%d dagar sidan"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "omtrent ein månad sidan"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "~%d månadar sidan"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "omtrent eitt år sidan"
 
@@ -5683,7 +6217,7 @@ msgstr "Heimesida er ikkje ei gyldig internettadresse."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Melding for lang - maksimum 140 teikn, du skreiv %d"
index 9e8414dc192cabb11420b1b093c9fad94c36177d..79b37a5e4c9a637a16253f1345bf57dd23177efb 100644 (file)
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:55+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:31+0000\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <pl@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,11 +19,63 @@ 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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Dostęp"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Ustawienia dostępu witryny"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Rejestracja"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Prywatna"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Zabronić anonimowym użytkownikom (niezalogowanym) przeglądać witrynę?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Tylko zaproszeni"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Rejestracja tylko za zaproszeniem."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Zamknięte"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Wyłączenie nowych rejestracji."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Zapisz"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Zapisz ustawienia dostępu"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -38,25 +90,29 @@ msgstr "Nie ma takiej strony"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Brak takiego użytkownika."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s i przyjaciele, strona %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -104,7 +160,7 @@ msgstr ""
 "[wysłać coś wymagającego jego uwagi](%%%%action.newnotice%%%%?"
 "status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -117,8 +173,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Ty i przyjaciele"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Aktualizacje z %1$s i przyjaciół na %2$s."
@@ -128,23 +184,23 @@ msgstr "Aktualizacje z %1$s i przyjaciół na %2$s."
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Nie odnaleziono metody API."
 
@@ -158,7 +214,7 @@ msgstr "Nie odnaleziono metody API."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Ta metoda wymaga POST."
 
@@ -188,8 +244,9 @@ msgstr "Nie można zapisać profilu."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -308,11 +365,11 @@ msgstr "Nie można zrezygnować z obserwacji samego siebie."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Należy dostarczyć dwa identyfikatory lub nazwy użytkowników."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Nie można określić użytkownika źródłowego."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Nie można odnaleźć użytkownika docelowego."
 
@@ -334,7 +391,8 @@ msgstr "Pseudonim jest już używany. Spróbuj innego."
 msgid "Not a valid nickname."
 msgstr "To nie jest prawidłowy pseudonim."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -346,7 +404,8 @@ msgstr "Strona domowa nie jest prawidłowym adresem URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Imię i nazwisko jest za długie (maksymalnie 255 znaków)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Opis jest za długi (maksymalnie %d znaków)."
@@ -382,7 +441,7 @@ msgstr "Alias nie może być taki sam jak pseudonim."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Nie odnaleziono grupy."
 
@@ -423,6 +482,114 @@ msgstr "Grupy %s"
 msgid "groups on %s"
 msgstr "grupy na %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Nie podano parametru oauth_token."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Nieprawidłowy token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Wystąpił problem z tokenem sesji. Spróbuj ponownie."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Nieprawidłowy pseudonim/hasło."
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Błąd bazy danych podczas usuwania użytkownika aplikacji OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Błąd bazy danych podczas wprowadzania użytkownika aplikacji OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Token żądania %s został upoważniony. Proszę wymienić go na token dostępu."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Token żądania %s został odrzucony lub unieważniony."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Nieoczekiwane wysłanie formularza."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Aplikacja chce połączyć się z kontem użytkownika"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Zezwolić czy odmówić dostęp"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Aplikacja <strong>%1$s</strong> autorstwa <strong>%2$s</strong> chciałaby "
+"uzyskać możliwość <strong>%3$s</strong> danych konta %4$s. Dostęp do konta %4"
+"$s powinien być udostępniany tylko zaufanym osobom trzecim."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Pseudonim"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Hasło"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Odrzuć"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Zezwól"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Zezwól lub odmów dostęp do informacji konta."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Ta metoda wymaga POST lub DELETE."
@@ -452,17 +619,17 @@ msgstr "Usunięto stan."
 msgid "No status with that ID found."
 msgstr "Nie odnaleziono stanów z tym identyfikatorem."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Wpis jest za długi. Maksymalna długość wynosi %d znaków."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Nie odnaleziono"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Maksymalny rozmiar wpisu wynosi %d znaków, w tym adres URL załącznika."
@@ -476,7 +643,7 @@ msgstr "Nieobsługiwany format."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s/ulubione wpisy od %2$s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "Użytkownik %1$s aktualizuje ulubione według %2$s/%2$s."
@@ -487,7 +654,7 @@ msgstr "Użytkownik %1$s aktualizuje ulubione według %2$s/%2$s."
 msgid "%s timeline"
 msgstr "Oś czasu użytkownika %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!"
@@ -503,27 +670,22 @@ msgstr "%1$s/aktualizacje wspominające %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s aktualizuje tę odpowiedź na aktualizacje od %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 "Publiczna oś czasu użytkownika %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 "Użytkownik %s aktualizuje od każdego."
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Powtórzone przez użytkownika %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Powtórzone dla %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Powtórzenia %s"
@@ -533,7 +695,7 @@ msgstr "Powtórzenia %s"
 msgid "Notices tagged with %s"
 msgstr "Wpisy ze znacznikiem %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 "Aktualizacje ze znacznikiem %1$s na %2$s."
@@ -593,8 +755,8 @@ msgstr "Oryginał"
 msgid "Preview"
 msgstr "Podgląd"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Usuń"
 
@@ -606,29 +768,6 @@ msgstr "Wyślij"
 msgid "Crop"
 msgstr "Przytnij"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Wystąpił problem z tokenem sesji. Spróbuj ponownie."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Nieoczekiwane wysłanie formularza."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Wybierz kwadratowy obszar obrazu do awatara"
@@ -667,8 +806,9 @@ msgstr ""
 "do ciebie zostanie usunięta, nie będzie mógł cię subskrybować w przyszłości "
 "i nie będziesz powiadamiany o żadnych odpowiedziach @ od niego."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nie"
 
@@ -676,13 +816,13 @@ msgstr "Nie"
 msgid "Do not block this user"
 msgstr "Nie blokuj tego użytkownika"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -765,7 +905,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Nie można usunąć potwierdzenia adresu e-mail."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Potwierdź adres"
 
 #: actions/confirmaddress.php:159
@@ -782,10 +922,50 @@ msgstr "Rozmowa"
 msgid "Notices"
 msgstr "Wpisy"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Musisz być zalogowany, aby usunąć aplikację."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Nie odnaleziono aplikacji."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Nie jesteś właścicielem tej aplikacji."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Wystąpił problem z tokenem sesji."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Usuń aplikację"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Na pewno usunąć tę aplikację? Wyczyści to wszystkie dane o aplikacji z bazy "
+"danych, w tym wszystkie istniejące połączenia użytkowników."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Nie usuwaj tej aplikacji"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Usuń tę aplikację"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -816,7 +996,7 @@ msgstr "Jesteś pewien, że chcesz usunąć ten wpis?"
 msgid "Do not delete this notice"
 msgstr "Nie usuwaj tego wpisu"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Usuń ten wpis"
 
@@ -851,7 +1031,7 @@ msgstr "Wygląd"
 
 #: actions/designadminpanel.php:73
 msgid "Design settings for this StatusNet site."
-msgstr "Ustawienia wyglądu tej strony StatusNet."
+msgstr "Ustawienia wyglądu tej witryny StatusNet."
 
 #: actions/designadminpanel.php:275
 msgid "Invalid logo URL."
@@ -868,7 +1048,7 @@ msgstr "Zmień logo"
 
 #: actions/designadminpanel.php:380
 msgid "Site logo"
-msgstr "Logo strony"
+msgstr "Logo witryny"
 
 #: actions/designadminpanel.php:387
 msgid "Change theme"
@@ -876,11 +1056,11 @@ msgstr "Zmień motyw"
 
 #: actions/designadminpanel.php:404
 msgid "Site theme"
-msgstr "Motyw strony"
+msgstr "Motyw witryny"
 
 #: actions/designadminpanel.php:405
 msgid "Theme for the site."
-msgstr "Motyw strony."
+msgstr "Motyw witryny."
 
 #: actions/designadminpanel.php:417 lib/designsettings.php:101
 msgid "Change background image"
@@ -896,7 +1076,7 @@ msgstr "Tło"
 msgid ""
 "You can upload a background image for the site. The maximum file size is %1"
 "$s."
-msgstr "Można wysłać obraz tła dla strony. Maksymalny rozmiar pliku to %1$s."
+msgstr "Można wysłać obraz tła dla witryny. Maksymalny rozmiar pliku to %1$s."
 
 #: actions/designadminpanel.php:457 lib/designsettings.php:139
 msgid "On"
@@ -946,16 +1126,6 @@ msgstr "Przywróć domyślny wygląd"
 msgid "Reset back to default"
 msgstr "Przywróć domyślne ustawienia"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Zapisz"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Zapisz wygląd"
@@ -968,9 +1138,75 @@ msgstr "Ten wpis nie jest ulubiony."
 msgid "Add to favorites"
 msgstr "Dodaj do ulubionych"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Nie ma takiego dokumentu."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Nie ma takiego dokumentu \\\"%s\\\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Zmodyfikuj aplikację"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Musisz być zalogowany, aby zmodyfikować aplikację."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Nie ma takiej aplikacji."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Użyj tego formularza, aby zmodyfikować aplikację."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Nazwa jest wymagana."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Nazwa jest za długa (maksymalnie 255 znaków)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Nazwa jest już używana. Spróbuj innej."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Opis jest wymagany."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Źródłowy adres URL jest za długi."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Źródłowy adres URL jest nieprawidłowy."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organizacja jest wymagana."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Organizacja jest za długa (maksymalnie 255 znaków)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Strona domowa organizacji jest wymagana."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Adres zwrotny jest za długi."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "Adres zwrotny URL jest nieprawidłowy."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Nie można zaktualizować aplikacji."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -999,7 +1235,7 @@ msgstr "opis jest za długi (maksymalnie %d znaków)."
 msgid "Could not update group."
 msgstr "Nie można zaktualizować grupy."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Nie można utworzyć aliasów."
 
@@ -1041,7 +1277,8 @@ msgstr ""
 "instrukcjami."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Anuluj"
 
@@ -1121,7 +1358,7 @@ msgid "Cannot normalize that email address"
 msgstr "Nie można znormalizować tego adresu e-mail"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "To nie jest prawidłowy adres e-mail."
 
@@ -1133,7 +1370,7 @@ msgstr "Ten adres e-mail jest już twój."
 msgid "That email address already belongs to another user."
 msgstr "Ten adres e-mail należy już do innego użytkownika."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Nie można wprowadzić kodu potwierdzającego."
@@ -1195,7 +1432,7 @@ msgstr "Ten wpis jest już ulubiony."
 msgid "Disfavor favorite"
 msgstr "Usuń wpis z ulubionych"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Popularne wpisy"
@@ -1207,7 +1444,7 @@ msgstr "Popularne wpisy, strona %d"
 
 #: actions/favorited.php:79
 msgid "The most popular notices on the site right now."
-msgstr "Najpopularniejsze wpisy na stronie w te chwili."
+msgstr "Najpopularniejsze wpisy na witrynie w te chwili."
 
 #: actions/favorited.php:150
 msgid "Favorite notices appear on this page but no one has favorited one yet."
@@ -1343,7 +1580,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"
 
@@ -1437,23 +1674,23 @@ msgstr "Członkowie grupy %1$s, strona %2$d"
 msgid "A list of the users in this group."
 msgstr "Lista użytkowników znajdujących się w tej grupie."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1633,6 +1870,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "To nie jest twój identyfikator Jabbera."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Odebrane wiadomości użytkownika %1$s - strona %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1691,7 +1933,7 @@ msgid ""
 "on the site. Thanks for growing the community!"
 msgstr ""
 "Zostaniesz powiadomiony, kiedy ktoś zaakceptuje zaproszenie i zarejestruje "
-"się na stronie. Dziękujemy za pomoc w zwiększaniu społeczności."
+"się na witrynie. Dziękujemy za pomoc w zwiększaniu społeczności."
 
 #: actions/invite.php:162
 msgid ""
@@ -1716,7 +1958,7 @@ msgstr "Osobista wiadomość"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Opcjonalnie dodaj osobistą wiadomość do zaproszenia."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Wyślij"
 
@@ -1816,25 +2058,14 @@ msgstr "Niepoprawna nazwa użytkownika lub hasło."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Błąd podczas ustawiania użytkownika. Prawdopodobnie brak upoważnienia."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Zaloguj się"
 
 #: actions/login.php:227
 msgid "Login to site"
-msgstr "Zaloguj się na stronie"
-
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Pseudonim"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Hasło"
+msgstr "Zaloguj się na witrynie"
 
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
@@ -1867,21 +2098,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."
@@ -1890,6 +2121,26 @@ msgstr "Nie można uczynić %1$s administratorem grupy %2$s."
 msgid "No current status"
 msgstr "Brak obecnego stanu"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nowa aplikacja"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Musisz być zalogowany, aby zarejestrować aplikację."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Użyj tego formularza, aby zarejestrować aplikację."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Źródłowy adres URL jest wymagany."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Nie można utworzyć aplikacji."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Nowa grupa"
@@ -2003,6 +2254,48 @@ msgstr "Wysłano szturchnięcie"
 msgid "Nudge sent!"
 msgstr "Wysłano szturchnięcie."
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Musisz być zalogowany, aby wyświetlić listę aplikacji."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Aplikacje OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Zarejestrowane aplikacje"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Nie zarejestrowano jeszcze żadnych aplikacji."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Połączone aplikacje"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Zezwolono następującym aplikacjom na dostęp do konta."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Nie jesteś użytkownikiem tej aplikacji."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Nie można unieważnić dostępu dla aplikacji: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Nie upoważniono żadnych aplikacji do używania konta."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr "Programiści mogą zmodyfikować ustawienia rejestracji swoich aplikacji "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Wpis nie posiada profilu"
@@ -2020,8 +2313,8 @@ msgstr "typ zawartości "
 msgid "Only "
 msgstr "Tylko "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "To nie jest obsługiwany format danych."
 
@@ -2034,7 +2327,7 @@ msgid "Notice Search"
 msgstr "Wyszukiwanie wpisów"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Inne ustawienia"
 
 #: actions/othersettings.php:71
@@ -2085,6 +2378,11 @@ msgstr "Podano nieprawidłowy token logowania."
 msgid "Login token expired."
 msgstr "Token logowania wygasł."
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Wysłane wiadomości użytkownika %1$s - strona %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2155,140 +2453,158 @@ msgstr "Nie można zapisać nowego hasła."
 msgid "Password saved."
 msgstr "Zapisano hasło."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Ścieżki"
 
 #: actions/pathsadminpanel.php:70
 msgid "Path and server settings for this StatusNet site."
-msgstr "Ustawienia ścieżki i serwera dla tej strony StatusNet."
+msgstr "Ustawienia ścieżki i serwera dla tej witryny StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Katalog motywu jest nieczytelny: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Katalog awatara jest niezapisywalny: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Katalog tła jest niezapisywalny: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Katalog lokalizacji jest nieczytelny: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Nieprawidłowy serwer SSL. Maksymalna długość to 255 znaków."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
-msgstr "Strona"
+msgstr "Witryny"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Serwer"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nazwa komputera serwera strony."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Ścieżka"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
-msgstr "Ścieżka do strony"
+msgstr "Ścieżka do witryny"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Ścieżka do lokalizacji"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Ścieżka do katalogu lokalizacji"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Eleganckie adresu URL"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+"Używać eleganckich (bardziej czytelnych i łatwiejszych do zapamiętania) "
+"adresów URL?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Motyw"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Serwer motywu"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Ścieżka do motywu"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Katalog motywu"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Awatary"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Serwer awatara"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Ścieżka do awatara"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Katalog awatara"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Tła"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Serwer tła"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Ścieżka do tła"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Katalog tła"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Nigdy"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Czasem"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Zawsze"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Użycie SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Kiedy używać SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Serwer SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Serwer do przekierowywania żądań SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Ścieżki zapisu"
 
@@ -2323,7 +2639,7 @@ msgstr "Nieprawidłowa zawartość wpisu"
 #: actions/postnotice.php:90
 #, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
-msgstr "Licencja wpisu \"%1$s\" nie jest zgodna z licencją strony \"%2$s\"."
+msgstr "Licencja wpisu \"%1$s\" nie jest zgodna z licencją witryny \"%2$s\"."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2351,13 +2667,13 @@ msgid "Full name"
 msgstr "Imię i nazwisko"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Strona domowa"
 
 #: actions/profilesettings.php:117 actions/register.php:455
 msgid "URL of your homepage, blog, or profile on another site"
-msgstr "Adres URL strony domowej, bloga lub profilu na innej stronie"
+msgstr "Adres URL strony domowej, bloga lub profilu na innej witrynie"
 
 #: actions/profilesettings.php:122 actions/register.php:461
 #, php-format
@@ -2374,7 +2690,7 @@ msgstr "O mnie"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Położenie"
@@ -2400,7 +2716,7 @@ msgstr ""
 "Znaczniki dla siebie (litery, liczby, -, . i _), oddzielone przecinkami lub "
 "spacjami"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Język"
 
@@ -2427,7 +2743,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Wpis \"O mnie\" jest za długi (maksymalnie %d znaków)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Nie wybrano strefy czasowej."
 
@@ -2440,23 +2756,23 @@ msgstr "Język jest za długi (maksymalnie 50 znaków)."
 msgid "Invalid tag: \"%s\""
 msgstr "Nieprawidłowy znacznik: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Nie można zaktualizować użytkownika do automatycznej subskrypcji."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Nie można zapisać preferencji położenia."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Nie można zapisać profilu."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Nie można zapisać znaczników."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Zapisano ustawienia."
 
@@ -2478,19 +2794,19 @@ msgstr "Publiczna oś czasu, strona %d"
 msgid "Public timeline"
 msgstr "Publiczna oś czasu"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Kanał publicznego strumienia (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Kanał publicznego strumienia (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Kanał publicznego strumienia (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2499,11 +2815,11 @@ msgstr ""
 "To jest publiczna oś czasu dla %%site.name%%, ale nikt jeszcze nic nie "
 "wysłał."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Zostań pierwszym, który coś wyśle."
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2511,7 +2827,7 @@ msgstr ""
 "Dlaczego nie [zarejestrujesz konta](%%action.register%%) i zostaniesz "
 "pierwszym, który coś wyśle."
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2524,7 +2840,7 @@ msgstr ""
 "[Dołącz teraz](%%action.register%%), aby dzielić się wpisami o sobie z "
 "przyjaciółmi, rodziną i kolegami. ([Przeczytaj więcej](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2562,7 +2878,7 @@ msgstr ""
 "Dlaczego nie [zarejestrujesz konta](%%action.register%%) i zostaniesz "
 "pierwszym, który go wyśle."
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Chmura znaczników"
 
@@ -2702,7 +3018,7 @@ msgstr "Nieprawidłowy kod zaproszenia."
 msgid "Registration successful"
 msgstr "Rejestracja powiodła się"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Zarejestruj się"
@@ -2746,7 +3062,7 @@ msgid "Same as password above. Required."
 msgstr "Takie samo jak powyższe hasło. Wymagane."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mail"
 
@@ -2824,7 +3140,7 @@ msgid ""
 msgstr ""
 "Aby subskrybować, można [zalogować się](%%action.login%%) lub [zarejestrować]"
 "(%%action.register%%) nowe konto. Jeśli już posiadasz konto na [zgodnej "
-"stronie mikroblogowania](%%doc.openmublog%%), podaj poniżej adres URL "
+"witrynie mikroblogowania](%%doc.openmublog%%), podaj poniżej adres URL "
 "profilu."
 
 #: actions/remotesubscribe.php:112
@@ -2852,7 +3168,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Adres URL profilu na innej, zgodnej usłudze mikroblogowania"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subskrybuj"
 
@@ -2890,7 +3206,7 @@ msgstr "Nie można powtórzyć własnego wpisu."
 msgid "You already repeated that notice."
 msgstr "Już powtórzono ten wpis."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Powtórzono"
 
@@ -2904,6 +3220,11 @@ msgstr "Powtórzono."
 msgid "Replies to %s"
 msgstr "Odpowiedzi na %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "odpowiedzi dla użytkownika %1$s, strona %2$s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2951,14 +3272,133 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "odpowiedzi dla użytkownika %1$s na %2$s."
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
-msgstr "Nie można ograniczać użytkowników na tej stronie."
+msgstr "Nie można ograniczać użytkowników na tej witrynie."
 
 #: actions/sandbox.php:72
 msgid "User is already sandboxed."
 msgstr "Użytkownik jest już ograniczony."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sesje"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Ustawienia sesji tej witryny StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Obsługa sesji"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Czy samodzielnie obsługiwać sesje."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Debugowanie sesji"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Włącza wyjście debugowania dla sesji."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Zapisz ustawienia witryny"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Musisz być zalogowany, aby wyświetlić aplikację."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Profil aplikacji"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Ikona"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nazwa"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organizacja"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Opis"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statystyki"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Utworzona przez %1$s - domyślny dostęp: %2$s - %3$d użytkowników"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Czynności aplikacji"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Przywrócenie klucza i sekretu"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Informacje o aplikacji"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Klucz klienta"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Sekret klienta"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "Adres URL tokenu żądania"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "Adres URL tokenu żądania"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Adres URL upoważnienia"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Uwaga: obsługiwane są podpisy HMAC-SHA1. Metoda podpisu w zwykłym tekście "
+"nie jest obsługiwana."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Jesteś pewien, że chcesz przywrócić klucz i sekret klienta?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Ulubione wpisy użytkownika %1$s, strona %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Nie można odebrać ulubionych wpisów."
@@ -3016,17 +3456,22 @@ msgstr "To jest sposób na współdzielenie tego, co chcesz."
 msgid "%s group"
 msgstr "Grupa %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Grupa %1$s, strona %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Profil grupy"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "Adres URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Wpis"
 
@@ -3072,10 +3517,6 @@ msgstr "(Brak)"
 msgid "All members"
 msgstr "Wszyscy członkowie"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statystyki"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Utworzono"
@@ -3140,6 +3581,11 @@ msgstr "Usunięto wpis."
 msgid " tagged %s"
 msgstr " ze znacznikiem %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, strona %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3165,13 +3611,13 @@ msgstr "Kanał wpisów dla %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF dla %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 "To jest oś czasu dla użytkownika %1$s, ale %2$s nie nic jeszcze nie wysłał."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3179,7 +3625,7 @@ msgstr ""
 "Widziałeś ostatnio coś interesującego? Nie wysłałeś jeszcze żadnych wpisów, "
 "teraz jest dobry czas, aby zacząć. :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3188,7 +3634,7 @@ msgstr ""
 "Można spróbować szturchnąć użytkownika %1$s lub [wysłać coś, co wymaga jego "
 "uwagi](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3202,7 +3648,7 @@ msgstr ""
 "obserwować wpisy użytkownika **%s** i wiele więcej. ([Przeczytaj więcej](%%%%"
 "doc.help%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3213,14 +3659,14 @@ msgstr ""
 "pl.wikipedia.org/wiki/Mikroblog) opartej na wolnym narzędziu [StatusNet]"
 "(http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Powtórzenia %s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 msgid "You cannot silence users on this site."
-msgstr "Nie można wyciszać użytkowników na tej stronie."
+msgstr "Nie można wyciszać użytkowników na tej witrynie."
 
 #: actions/silence.php:72
 msgid "User is already silenced."
@@ -3228,201 +3674,147 @@ msgstr "Użytkownik jest już wyciszony."
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
-msgstr "Podstawowe ustawienia tej strony StatusNet."
+msgstr "Podstawowe ustawienia tej witryny StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
-msgstr "Nazwa strony nie może mieć zerową długość."
+msgstr "Nazwa witryny nie może mieć zerową długość."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Należy posiadać prawidłowy kontaktowy adres e-mail."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Nieznany język \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Nieprawidłowy adres URL zgłaszania migawek."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Nieprawidłowa wartość wykonania migawki."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Częstotliwość migawek musi być liczbą."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Maksymalne ograniczenie tekstu to 14 znaków."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Ograniczenie duplikatów musi wynosić jedną lub więcej sekund."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Ogólne"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
-msgstr "Nazwa strony"
+msgstr "Nazwa witryny"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Nazwa strony, taka jak \"Mikroblog firmy X\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Dostarczane przez"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Tekst używany do odnośnika do zasług w stopce każdej strony"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "Adres URL \"Dostarczane przez\""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "Adres URL używany do odnośnika do zasług w stopce każdej strony"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
-msgstr "Kontaktowy adres e-mail strony"
+msgstr "Kontaktowy adres e-mail witryny"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Lokalne"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Domyślna strefa czasowa"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
-msgstr "Domyśla strefa czasowa strony, zwykle UTC."
+msgstr "Domyśla strefa czasowa witryny, zwykle UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
-msgstr "Domyślny język strony"
-
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "Adresy URL"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Serwer"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nazwa komputera serwera strony."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Eleganckie adresu URL"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-"Używać eleganckich (bardziej czytelnych i łatwiejszych do zapamiętania) "
-"adresów URL?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Dostęp"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Prywatna"
+msgstr "Domyślny język witryny"
 
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Zabronić anonimowym użytkownikom (niezalogowanym) przeglądać stronę?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Tylko zaproszeni"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Rejestracja tylko za zaproszeniem."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Zamknięte"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Wyłączenie nowych rejestracji."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Migawki"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Losowo podczas trafienia WWW"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Jako zaplanowane zadanie"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Migawki danych"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Kiedy wysyłać dane statystyczne na serwery status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Częstotliwość"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Migawki będą wysyłane co N trafień WWW"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "Adres URL zgłaszania"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Migawki będą wysyłane na ten adres URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Ograniczenia"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Ograniczenie tekstu"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Maksymalna liczba znaków wpisów."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Ograniczenie duplikatów"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Ile czasu użytkownicy muszą czekać (w sekundach), aby ponownie wysłać to "
 "samo."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Zapisz ustawienia strony"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Ustawienia SMS"
@@ -3526,15 +3918,26 @@ msgstr "Nie podano kodu"
 msgid "You are not subscribed to that profile."
 msgstr "Nie jesteś subskrybowany do tego profilu."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Nie można zapisać subskrypcji."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Nie jest lokalnym użytkownikiem."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Nie ma takiego pliku."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Nie jesteś subskrybowany do tego profilu."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Subskrybowano"
 
@@ -3598,7 +4001,7 @@ msgstr "Osoby, których wpisy obserwujesz."
 msgid "These are the people whose notices %s listens to."
 msgstr "Osoby, których wpisy obserwuje użytkownik %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3614,19 +4017,24 @@ msgstr ""
 "twittersettings%%), można automatycznie subskrybować osoby, które tam już "
 "obserwujesz."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "Użytkownik %s nie obserwuje nikogo."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Wpisy ze znacznikiem %1$s, strona %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3655,7 +4063,8 @@ msgstr "Znacznik %s"
 msgid "User profile"
 msgstr "Profil użytkownika"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Zdjęcie"
 
@@ -3715,13 +4124,13 @@ msgstr "Brak identyfikatora profilu w żądaniu."
 msgid "Unsubscribed"
 msgstr "Zrezygnowano z subskrypcji"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
 "Licencja nasłuchiwanego strumienia \"%1$s\" nie jest zgodna z licencją "
-"strony \"%2$s\"."
+"witryny \"%2$s\"."
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
 #: lib/personalgroupnav.php:115
@@ -3730,86 +4139,66 @@ msgstr "Użytkownik"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr "Ustawienia użytkownika dla tej strony StatusNet."
+msgstr "Ustawienia użytkownika dla tej witryny StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Nieprawidłowe ograniczenie informacji o sobie. Musi być liczbowa."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Nieprawidłowy tekst powitania. Maksymalna długość to 255 znaków."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Nieprawidłowa domyślna subskrypcja: \"%1$s\" nie jest użytkownikiem."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Ograniczenie informacji o sobie"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Maksymalna długość informacji o sobie jako liczba znaków."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nowi użytkownicy"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Powitanie nowego użytkownika"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Tekst powitania nowych użytkowników (maksymalnie 255 znaków)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Domyślna subskrypcja"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Automatyczne subskrybowanie nowych użytkowników do tego użytkownika."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Zaproszenia"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Zaproszenia są włączone"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Czy zezwolić użytkownikom zapraszanie nowych użytkowników."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sesje"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Obsługa sesji"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Czy samodzielnie obsługiwać sesje."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Debugowanie sesji"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Włącza wyjście debugowania dla sesji."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Upoważnij subskrypcję"
@@ -3824,88 +4213,88 @@ msgstr ""
 "wpisy tego użytkownika. Jeżeli nie prosiłeś o subskrypcję czyichś wpisów, "
 "naciśnij \"Odrzuć\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licencja"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Zaakceptuj"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Subskrybuj tego użytkownika"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Odrzuć"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Odrzuć tę subskrypcję"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Brak żądania upoważnienia."
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Upoważniono subskrypcję"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 "Subskrypcja została upoważniona, ale nie przekazano zwrotnego adresu URL. "
-"Sprawdź w instrukcjach strony, jak upoważnić subskrypcję. Token subskrypcji:"
+"Sprawdź w instrukcjach witryny, jak upoważnić subskrypcję. Token subskrypcji:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Odrzucono subskrypcję"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 "Subskrypcja została odrzucona, ale nie przekazano zwrotnego adresu URL. "
-"Sprawdź w instrukcjach strony, jak w pełni odrzucić subskrypcję."
+"Sprawdź w instrukcjach witryny, jak w pełni odrzucić subskrypcję."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "Adres URI nasłuchującego \"%s\" nie został tutaj odnaleziony."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "Adres URI nasłuchującego \"%s\" jest za długi."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "Adres URI nasłuchującego \"%s\" jest lokalnym użytkownikiem."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "Adres URL profilu \"%s\" jest dla lokalnego użytkownika."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "Adres URL \"%s\" jest nieprawidłowy."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Nie można odczytać adresu URL awatara \"%s\"."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Błędny typ obrazu dla adresu URL awatara \"%s\"."
@@ -3925,6 +4314,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Smacznego hot-doga."
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Grupy użytkownika %1$s, strona %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Wyszukaj więcej grup"
@@ -3950,13 +4344,9 @@ msgid ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 msgstr ""
-"Ta strona korzysta z oprogramowania %1$s w wersji %2$s, Copyright 2008-2010 "
+"Ta witryna korzysta z oprogramowania %1$s w wersji %2$s, Copyright 2008-2010 "
 "StatusNet, Inc. i współtwórcy."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Współtwórcy"
@@ -4000,11 +4390,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Wtyczki"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Nazwa"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Wersja"
 
@@ -4012,10 +4398,6 @@ msgstr "Wersja"
 msgid "Author(s)"
 msgstr "Autorzy"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Opis"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4039,19 +4421,16 @@ msgstr ""
 "d bajty."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Profil grupy"
+msgstr "Dołączenie do grupy nie powiodło się."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Nie można zaktualizować grupy."
+msgstr "Nie jest częścią grupy."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Profil grupy"
+msgstr "Opuszczenie grupy nie powiodło się."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4070,27 +4449,27 @@ msgstr "Nie można wprowadzić wiadomości."
 msgid "Could not update message with new URI."
 msgstr "Nie można zaktualizować wiadomości za pomocą nowego adresu URL."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Błąd bazy danych podczas wprowadzania znacznika mieszania: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problem podczas zapisywania wpisu. Za długi."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problem podczas zapisywania wpisu. Nieznany użytkownik."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Za dużo wpisów w za krótkim czasie, weź głęboki oddech i wyślij ponownie za "
 "kilka minut."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4098,34 +4477,57 @@ msgstr ""
 "Za dużo takich samych wiadomości w za krótkim czasie, weź głęboki oddech i "
 "wyślij ponownie za kilka minut."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
-msgstr "Zabroniono ci wysyłania wpisów na tej stronie."
+msgstr "Zabroniono ci wysyłania wpisów na tej witrynie."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problem podczas zapisywania wpisu."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Błąd bazy danych podczas wprowadzania odpowiedzi: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problem podczas zapisywania skrzynki odbiorczej grupy."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Zablokowano subskrybowanie."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Już subskrybowane."
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Użytkownik zablokował cię."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Niesubskrybowane."
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Nie można usunąć autosubskrypcji."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Nie można usunąć subskrypcji."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Witaj w %1$s, @%2$s."
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Nie można utworzyć grupy."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Nie można ustawić członkostwa w grupie."
 
@@ -4166,128 +4568,124 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr "Strona bez nazwy"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
-msgstr "Główna nawigacja strony"
+msgstr "Główna nawigacja witryny"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Strona domowa"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Profil osobisty i oś czasu przyjaciół"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Konto"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Zmień adres e-mail, awatar, hasło, profil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Połącz"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Połącz z serwisami"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
-msgstr "Zmień konfigurację strony"
+msgstr "Zmień konfigurację witryny"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Zaproś"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Zaproś przyjaciół i kolegów do dołączenia do ciebie na %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Wyloguj się"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
-msgstr "Wyloguj się ze strony"
+msgstr "Wyloguj się z witryny"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Utwórz konto"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
-msgstr "Zaloguj się na stronę"
+msgstr "Zaloguj się na witrynie"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Pomoc"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Pomóż mi."
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Wyszukaj"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Wyszukaj osoby lub tekst"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
-msgstr "Wpis strony"
+msgstr "Wpis witryny"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Lokalne widoki"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Wpis strony"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
-msgstr "Druga nawigacja strony"
+msgstr "Druga nawigacja witryny"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "O usłudze"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Prywatność"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Kod źródłowy"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Odznaka"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licencja oprogramowania StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4296,12 +4694,12 @@ msgstr ""
 "**%%site.name%%** jest usługą mikroblogowania prowadzoną przez [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** jest usługą mikroblogowania. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4312,37 +4710,63 @@ msgstr ""
 "status.net/) w wersji %s, dostępnego na [Powszechnej Licencji Publicznej GNU "
 "Affero](http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
-msgstr "Licencja zawartości strony"
+msgstr "Licencja zawartości witryny"
+
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Treść i dane %1$s są prywatne i poufne."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+"Prawa autorskie do treści i danych są własnością %1$s. Wszystkie prawa "
+"zastrzeżone."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Prawa autorskie do treści i danych są własnością współtwórców. Wszystkie "
+"prawa zastrzeżone."
 
-#: lib/action.php:803
+#: lib/action.php:827
 msgid "All "
 msgstr "Wszystko "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licencja."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginacja"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Później"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Wcześniej"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Wystąpił problem z tokenem sesji."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
-msgstr "Nie można wprowadzić zmian strony."
+msgstr "Nie można wprowadzić zmian witryny."
 
 #: lib/adminpanelaction.php:107
 msgid "Changes to that panel are not allowed."
@@ -4362,16 +4786,107 @@ msgstr "Nie można usunąć ustawienia wyglądu."
 
 #: lib/adminpanelaction.php:312
 msgid "Basic site configuration"
-msgstr "Podstawowa konfiguracja strony"
+msgstr "Podstawowa konfiguracja witryny"
 
 #: lib/adminpanelaction.php:317
 msgid "Design configuration"
 msgstr "Konfiguracja wyglądu"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Konfiguracja użytkownika"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Konfiguracja dostępu"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Konfiguracja ścieżek"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Konfiguracja sesji"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"Zasób API wymaga dostępu do zapisu i do odczytu, ale powiadasz dostęp tylko "
+"do odczytu."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"Próba uwierzytelnienia API nie powiodła się, pseudonim = %1$s, pośrednik = %2"
+"$s, IP = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Zmodyfikuj aplikację"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Ikona tej aplikacji"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Opisz aplikację w %d znakach"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Opisz aplikację"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "Źródłowy adres URL"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "Adres URL strony domowej tej aplikacji"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organizacja odpowiedzialna za tę aplikację"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "Adres URL strony domowej organizacji"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "Adres URL do przekierowania po uwierzytelnieniu"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Przeglądarka"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Pulpit"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Typ aplikacji, przeglądarka lub pulpit"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Tylko do odczytu"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Odczyt i zapis"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Domyślny dostęp do tej aplikacji: tylko do odczytu lub do odczytu i zapisu"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Unieważnij"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Załączniki"
@@ -4392,11 +4907,11 @@ msgstr "Powiadamia, kiedy pojawia się ten załącznik"
 msgid "Tags for this attachment"
 msgstr "Znaczniki dla tego załącznika"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Zmiana hasła nie powiodła się"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Zmiana hasła nie jest dozwolona"
 
@@ -4547,85 +5062,95 @@ msgstr "Błąd podczas zapisywania wpisu."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Podaj nazwę użytkownika do subskrybowania."
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Brak takiego użytkownika."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Subskrybowano użytkownika %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Podaj nazwę użytkownika do usunięcia subskrypcji."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Usunięto subskrypcję użytkownika %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Nie zaimplementowano polecenia."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Wyłączono powiadomienia."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Nie można wyłączyć powiadomień."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Włączono powiadomienia."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Nie można włączyć powiadomień."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Polecenie logowania jest wyłączone"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Tego odnośnika można użyć tylko raz i będzie prawidłowy tylko przez dwie "
 "minuty: %s."
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Usunięto subskrypcję użytkownika %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Nie subskrybujesz nikogo."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Subskrybujesz tę osobę:"
 msgstr[1] "Subskrybujesz te osoby:"
 msgstr[2] "Subskrybujesz te osoby:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Nikt cię nie subskrybuje."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Ta osoba cię subskrybuje:"
 msgstr[1] "Te osoby cię subskrybują:"
 msgstr[2] "Te osoby cię subskrybują:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Nie jesteś członkiem żadnej grupy."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Jesteś członkiem tej grupy:"
 msgstr[1] "Jesteś członkiem tych grup:"
 msgstr[2] "Jesteś członkiem tych grup:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4639,6 +5164,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4705,19 +5231,19 @@ msgstr ""
 "tracks - jeszcze nie zaimplementowano\n"
 "tracking - jeszcze nie zaimplementowano\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Nie odnaleziono pliku konfiguracji."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Szukano plików konfiguracji w następujących miejscach: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Należy uruchomić instalator, aby to naprawić."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Przejdź do instalatora."
 
@@ -4733,6 +5259,14 @@ msgstr "Aktualizacje przez komunikator"
 msgid "Updates by SMS"
 msgstr "Aktualizacje przez wiadomości SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Połączenia"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Upoważnione połączone aplikacje"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Błąd bazy danych"
@@ -4919,15 +5453,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "KB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Nieznany język \"%s\"."
+msgstr "Nieznane źródło skrzynki odbiorczej %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5206,7 +5740,7 @@ msgstr ""
 "rozmowę z innymi użytkownikami. Inni mogą wysyłać ci wiadomości tylko dla "
 "twoich oczu."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "z"
 
@@ -5322,57 +5856,55 @@ msgid "Do not share my location"
 msgstr "Nie ujawniaj położenia"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Ukryj tę informację"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Pobieranie danych geolokalizacji trwa dłużej niż powinno, proszę spróbować "
+"ponownie później"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "Północ"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "Południe"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "Wschód"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "Zachód"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "w"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "w rozmowie"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Powtórzone przez"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Odpowiedz na ten wpis"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Odpowiedz"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Powtórzono wpis"
 
@@ -5404,11 +5936,7 @@ msgstr "Błąd podczas wprowadzania zdalnego profilu"
 msgid "Duplicate notice"
 msgstr "Duplikat wpisu"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Zablokowano subskrybowanie."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Nie można wprowadzić nowej subskrypcji."
 
@@ -5424,19 +5952,19 @@ msgstr "Odpowiedzi"
 msgid "Favorites"
 msgstr "Ulubione"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Odebrane"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Wiadomości przychodzące"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Wysłane"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Wysłane wiadomości"
 
@@ -5513,6 +6041,11 @@ msgstr "Powtórzyć ten wpis?"
 msgid "Repeat this notice"
 msgstr "Powtórz ten wpis"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+"Nie określono pojedynczego użytkownika dla trybu pojedynczego użytkownika."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Ogranicz"
@@ -5523,7 +6056,7 @@ msgstr "Ogranicz tego użytkownika"
 
 #: lib/searchaction.php:120
 msgid "Search site"
-msgstr "Przeszukaj stronę"
+msgstr "Przeszukaj witrynę"
 
 #: lib/searchaction.php:126
 msgid "Keyword(s)"
@@ -5539,7 +6072,7 @@ msgstr "Osoby"
 
 #: lib/searchgroupnav.php:81
 msgid "Find people on this site"
-msgstr "Znajdź osoby na tej stronie"
+msgstr "Znajdź osoby na tej witrynie"
 
 #: lib/searchgroupnav.php:83
 msgid "Find content of notices"
@@ -5547,7 +6080,7 @@ msgstr "Przeszukaj zawartość wpisów"
 
 #: lib/searchgroupnav.php:85
 msgid "Find groups on this site"
-msgstr "Znajdź grupy na tej stronie"
+msgstr "Znajdź grupy na tej witrynie"
 
 #: lib/section.php:89
 msgid "Untitled section"
@@ -5580,34 +6113,6 @@ msgstr "Osoby subskrybowane do %s"
 msgid "Groups %s is a member of"
 msgstr "Grupy %s są członkiem"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Już subskrybowane."
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Użytkownik zablokował cię."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Nie można subskrybować."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Nie można subskrybować innych do ciebie."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Niesubskrybowane."
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Nie można usunąć autosubskrypcji."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Nie można usunąć subskrypcji."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5658,67 +6163,67 @@ msgstr "Zmodyfikuj awatar"
 msgid "User actions"
 msgstr "Czynności użytkownika"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Zmodyfikuj ustawienia profilu"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Edycja"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Wyślij bezpośrednią wiadomość do tego użytkownika"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Wiadomość"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Moderuj"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "kilka sekund temu"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "około minutę temu"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "około %d minut temu"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "około godzinę temu"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "około %d godzin temu"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "blisko dzień temu"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "około %d dni temu"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "około miesiąc temu"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "około %d miesięcy temu"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "około rok temu"
 
@@ -5734,7 +6239,7 @@ msgstr ""
 "%s nie jest prawidłowym kolorem. Użyj trzech lub sześciu znaków "
 "szesnastkowych."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Wiadomość jest za długa - maksymalnie %1$d znaków, wysłano %2$d."
index f635266d1080e8773799755c9cd6804d4150e646..e742dda19723d740a33800bb5ad2aafec31f780d 100644 (file)
@@ -9,17 +9,72 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:05:58+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:34+0000\n"
 "Language-Team: Portuguese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Acesso"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Gravar configurações do site"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Registar"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privado"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Proibir utilizadores anónimos (sem sessão iniciada) de ver o site?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Só por convite"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Permitir o registo só a convidados."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Fechado"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Impossibilitar registos novos."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Gravar"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Gravar configurações do site"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +89,29 @@ msgstr "Página não encontrada."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Utilizador não encontrado."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "Perfis bloqueados de %1$s, página %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -98,7 +157,7 @@ msgstr ""
 "Pode tentar [dar um toque em %1$s](../%2$s) a partir do perfil ou [publicar "
 "qualquer coisa à sua atenção](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -111,8 +170,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Você e seus amigos"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Actualizações de %1$s e amigos no %2$s!"
@@ -122,23 +181,23 @@ msgstr "Actualizações de %1$s e amigos no %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Método da API não encontrado."
 
@@ -152,7 +211,7 @@ msgstr "Método da API não encontrado."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Este método requer um POST."
 
@@ -182,8 +241,9 @@ msgstr "Não foi possível gravar o perfil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -301,11 +361,11 @@ msgstr "Não pode deixar de seguir-se a si próprio."
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Devem ser fornecidos dois nomes de utilizador ou utilizadors."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Não foi possível determinar o utilizador de origem."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Não foi possível encontrar o utilizador de destino."
 
@@ -327,7 +387,8 @@ msgstr "Utilizador já é usado. Tente outro."
 msgid "Not a valid nickname."
 msgstr "Utilizador não é válido."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -339,7 +400,8 @@ msgstr "Página de ínicio não é uma URL válida."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nome completo demasiado longo (máx. 255 caracteres)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Descrição demasiado longa (máx. 140 caracteres)."
@@ -375,7 +437,7 @@ msgstr "Os sinónimos não podem ser iguais ao nome do utilizador."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Grupo não foi encontrado!"
 
@@ -416,6 +478,116 @@ msgstr "Grupos de %s"
 msgid "groups on %s"
 msgstr "Grupos em %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamanho inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Ocorreu um problema com a sua sessão. Por favor, tente novamente."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Nome de utilizador ou senha inválidos."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Erro ao configurar utilizador."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Erro na base de dados ao inserir a marca: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Envio inesperado de formulário."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Conta"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Utilizador"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Senha"
+
+#: actions/apioauthauthorize.php:328
+#, fuzzy
+msgid "Deny"
+msgstr "Estilo"
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "Todas"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Este método requer um POST ou DELETE."
@@ -445,17 +617,17 @@ msgstr "Estado apagado."
 msgid "No status with that ID found."
 msgstr "Não foi encontrado um estado com esse ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Demasiado longo. Tamanho máx. das notas é %d caracteres."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Não encontrado"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Tamanho máx. das notas é %d caracteres, incluíndo a URL do anexo."
@@ -469,7 +641,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 actualizações preferidas por %2$s / %2$s."
@@ -480,7 +652,7 @@ msgstr "%1$s actualizações preferidas por %2$s / %2$s."
 msgid "%s timeline"
 msgstr "Notas 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!"
@@ -496,27 +668,22 @@ msgstr "%1$s / Actualizações que mencionam %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s actualizações em resposta a actualizações 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 "Notas 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 actualizações de todos!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repetida por %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Repetida para %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Repetências de %s"
@@ -526,7 +693,7 @@ msgstr "Repetências de %s"
 msgid "Notices tagged with %s"
 msgstr "Notas categorizadas com %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 "Actualizações categorizadas com %1$s em %2$s!"
@@ -586,8 +753,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Antevisão"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Apagar"
 
@@ -599,29 +766,6 @@ msgstr "Carregar"
 msgid "Crop"
 msgstr "Cortar"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Ocorreu um problema com a sua sessão. Por favor, tente novamente."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Envio inesperado de formulário."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Escolha uma área quadrada da imagem para ser o seu avatar"
@@ -660,8 +804,9 @@ msgstr ""
 "subscrição por este utilizador será cancelada, ele não poderá subscrevê-lo "
 "de futuro e você não receberá notificações das @-respostas dele."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Não"
 
@@ -669,13 +814,13 @@ msgstr "Não"
 msgid "Do not block this user"
 msgstr "Não bloquear este utilizador"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -758,7 +903,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Não foi possível apagar a confirmação do endereço electrónico."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Confirmar Endereço"
 
 #: actions/confirmaddress.php:159
@@ -775,10 +921,57 @@ msgstr "Conversação"
 msgid "Notices"
 msgstr "Notas"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Precisa de iniciar sessão para editar um grupo."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Nota não tem perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Não é membro deste grupo."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Ocorreu um problema com a sua sessão."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Nota não encontrada."
+
+#: 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 a certeza de que quer apagar este utilizador? Todos os dados do "
+"utilizador serão eliminados da base de dados, sem haver cópias."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Não apagar esta nota"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Apagar esta nota"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -809,7 +1002,7 @@ msgstr "Tem a certeza de que quer apagar esta nota?"
 msgid "Do not delete this notice"
 msgstr "Não apagar esta nota"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Apagar esta nota"
 
@@ -941,16 +1134,6 @@ msgstr "Repor estilos predefinidos"
 msgid "Reset back to default"
 msgstr "Repor predefinição"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Gravar"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Gravar o estilo"
@@ -963,10 +1146,88 @@ msgstr "Esta nota não é uma favorita!"
 msgid "Add to favorites"
 msgstr "Adicionar às favoritas"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Documento não encontrado."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Outras opções"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Precisa de iniciar sessão para editar um grupo."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Nota não encontrada."
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "Use este formulário para editar o grupo."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Repita a senha acima. Obrigatório."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Nome completo demasiado longo (máx. 255 caracteres)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Utilizador já é usado. Tente outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Descrição"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "A URL ‘%s’ do avatar é inválida."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Localidade demasiado longa (máx. 255 caracteres)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+#, fuzzy
+msgid "Callback URL is not valid."
+msgstr "A URL ‘%s’ do avatar é inválida."
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Não foi possível actualizar o grupo."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -994,7 +1255,7 @@ msgstr "descrição é demasiada extensa (máx. %d caracteres)."
 msgid "Could not update group."
 msgstr "Não foi possível actualizar o grupo."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Não foi possível criar sinónimos."
 
@@ -1035,7 +1296,8 @@ msgstr ""
 "na caixa de spam!) uma mensagem com mais instruções."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -1120,7 +1382,7 @@ msgid "Cannot normalize that email address"
 msgstr "Não é possível normalizar esse endereço electrónico"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Correio electrónico é inválido."
 
@@ -1132,7 +1394,7 @@ msgstr "Esse já é o seu endereço electrónico."
 msgid "That email address already belongs to another user."
 msgstr "Esse endereço electrónico já pertence a outro utilizador."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Não foi possível inserir o código de confirmação."
@@ -1194,7 +1456,7 @@ msgstr "Esta nota já é uma favorita!"
 msgid "Disfavor favorite"
 msgstr "Retirar das favoritas"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Notas populares"
@@ -1341,7 +1603,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"
 
@@ -1439,23 +1701,23 @@ msgstr "Membros do grupo %1$s, página %2$d"
 msgid "A list of the users in this group."
 msgstr "Uma lista dos utilizadores neste grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1635,6 +1897,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Esse não é o seu Jabber ID."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Caixa de entrada de %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1719,7 +1986,7 @@ msgstr "Mensagem pessoal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Pode optar por acrescentar uma mensagem pessoal ao convite"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Enviar"
 
@@ -1818,7 +2085,7 @@ msgstr "Nome de utilizador ou senha incorrectos."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Erro ao preparar o utilizador. Provavelmente não está autorizado."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Entrar"
@@ -1827,17 +2094,6 @@ msgstr "Entrar"
 msgid "Login to site"
 msgstr "Iniciar sessão no site"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Utilizador"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Senha"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Lembrar-me neste computador"
@@ -1869,21 +2125,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."
@@ -1892,6 +2148,30 @@ msgstr "Não é possível tornar %1$s administrador do grupo %2$s."
 msgid "No current status"
 msgstr "Sem estado actual"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Nota não encontrada."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Tem de iniciar uma sessão para criar o grupo."
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "Use este formulário para criar um grupo novo."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Não foi possível criar sinónimos."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Grupo novo"
@@ -2004,6 +2284,51 @@ msgstr "Toque enviado"
 msgid "Nudge sent!"
 msgstr "Toque enviado!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Precisa de iniciar sessão para editar um grupo."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "Outras opções"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Não é um membro desse grupo."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Nota não tem perfil"
@@ -2021,8 +2346,8 @@ msgstr "tipo de conteúdo "
 msgid "Only "
 msgstr "Apenas "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Formato de dados não suportado."
 
@@ -2035,7 +2360,8 @@ msgid "Notice Search"
 msgstr "Pesquisa de Notas"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+#, fuzzy
+msgid "Other settings"
 msgstr "Outras Configurações"
 
 #: actions/othersettings.php:71
@@ -2091,6 +2417,11 @@ msgstr "Chave inválida ou expirada."
 msgid "Login token expired."
 msgstr "Iniciar sessão no site"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Caixa de saída de %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2162,7 +2493,7 @@ msgstr "Não é possível guardar a nova senha."
 msgid "Password saved."
 msgstr "Senha gravada."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Localizações"
 
@@ -2170,132 +2501,148 @@ msgstr "Localizações"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Configurações de localização e servidor deste site StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Sem acesso de leitura do directório do tema: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Sem acesso de escrita no directório do avatar: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Sem acesso de escrita no directório do fundo: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Sem acesso de leitura ao directório de idiomas: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Servidor SSL inválido. O tamanho máximo é 255 caracteres."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Site"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Servidor"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nome do servidor do site."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Localização"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Localização do site"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Localização de idiomas"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Localização do directório de idiomas"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "URLs bonitas"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Usar URLs bonitas (mais legíveis e memoráveis)"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Tema"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Servidor do tema"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Localização do tema"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Directório do tema"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatares"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Servidor do avatar"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Localização do avatar"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Directório do avatar"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Fundos"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Servidor de fundos"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Localização dos fundos"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Directório dos fundos"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Nunca"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Às vezes"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Sempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Usar SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Quando usar SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Servidor SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Servidor para onde encaminhar pedidos SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Gravar localizações"
 
@@ -2359,7 +2706,7 @@ msgid "Full name"
 msgstr "Nome completo"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Página pessoal"
 
@@ -2382,7 +2729,7 @@ msgstr "Biografia"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Localidade"
@@ -2408,7 +2755,7 @@ msgstr ""
 "Categorias para si (letras, números, -, ., _), separadas por vírgulas ou "
 "espaços"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Idioma"
 
@@ -2434,7 +2781,7 @@ msgstr "Subscrever automaticamente quem me subscreva (óptimo para não-humanos)
 msgid "Bio is too long (max %d chars)."
 msgstr "Biografia demasiado extensa (máx. %d caracteres)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Fuso horário não foi seleccionado."
 
@@ -2447,23 +2794,23 @@ msgstr "Idioma é demasiado extenso (máx. 50 caracteres)."
 msgid "Invalid tag: \"%s\""
 msgstr "Categoria inválida: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Não foi possível actualizar o utilizador para subscrição automática."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Não foi possível gravar as preferências de localização."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Não foi possível gravar o perfil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Não foi possível gravar as categorias."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Configurações gravadas."
 
@@ -2485,19 +2832,19 @@ msgstr "Notas públicas, página %d"
 msgid "Public timeline"
 msgstr "Notas públicas"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fonte de Notas Públicas (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fonte de Notas Públicas (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Fonte de Notas Públicas (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2506,11 +2853,11 @@ msgstr ""
 "Estas são as notas públicas do site %%site.name%% mas ninguém publicou nada "
 "ainda."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Seja a primeira pessoa a publicar!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2518,7 +2865,7 @@ msgstr ""
 "Podia [registar uma conta](%%action.register%%) e ser a primeira pessoa a "
 "publicar!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2531,7 +2878,7 @@ msgstr ""
 "[StatusNet](http://status.net/). [Registe-se agora](%%action.register%%) "
 "para partilhar notas sobre si, família e amigos! ([Saber mais](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2569,7 +2916,7 @@ msgstr ""
 "Podia [registar uma conta](%%action.register%%) e ser a primeira pessoa a "
 "publicar uma!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Nuvem de categorias"
 
@@ -2713,7 +3060,7 @@ msgstr "Desculpe, código de convite inválido."
 msgid "Registration successful"
 msgstr "Registo efectuado"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registar"
@@ -2756,7 +3103,7 @@ msgid "Same as password above. Required."
 msgstr "Repita a senha acima. Obrigatório."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Correio"
 
@@ -2862,7 +3209,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL do seu perfil noutro serviço de microblogues compatível"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Subscrever"
 
@@ -2900,7 +3247,7 @@ msgstr "Não pode repetir a sua própria nota."
 msgid "You already repeated that notice."
 msgstr "Já repetiu essa nota."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Repetida"
 
@@ -2914,6 +3261,11 @@ msgstr "Repetida!"
 msgid "Replies to %s"
 msgstr "Respostas a %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Respostas a %1$s em %2$s!"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2961,6 +3313,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Respostas a %1$s em %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Não pode impedir notas públicas neste site."
@@ -2969,6 +3325,125 @@ msgstr "Não pode impedir notas públicas neste site."
 msgid "User is already sandboxed."
 msgstr "Utilizador já está impedido de criar notas públicas."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessões"
+
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "Configurações do estilo deste site StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gerir sessões"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Se devemos gerir sessões nós próprios."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Depuração de sessões"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Ligar a impressão de dados de depuração, para sessões."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Gravar configurações do site"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Precisa de iniciar uma sessão para deixar um grupo."
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Nota não tem perfil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nome"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Paginação"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Descrição"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Estatísticas"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "Autor"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Tem a certeza de que quer apagar esta nota?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Notas favoritas de %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Não foi possível importar notas favoritas."
@@ -3026,17 +3501,22 @@ msgstr "Esta é uma forma de partilhar aquilo de que gosta."
 msgid "%s group"
 msgstr "Grupo %s"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Membros do grupo %1$s, página %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Perfil do grupo"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Anotação"
 
@@ -3082,10 +3562,6 @@ msgstr "(Nenhum)"
 msgid "All members"
 msgstr "Todos os membros"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Estatísticas"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Criado"
@@ -3150,6 +3626,11 @@ msgstr "Avatar actualizado."
 msgid " tagged %s"
 msgstr "  categorizou %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "Perfis bloqueados de %1$s, página %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3175,12 +3656,12 @@ msgstr "Fonte de notas para %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF para %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Estas são as notas de %1$s, mas %2$s ainda não publicou nenhuma."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3188,7 +3669,7 @@ msgstr ""
 "Viu algo de interessante ultimamente? Como ainda não publicou nenhuma nota, "
 "esta seria uma óptima altura para começar :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3197,7 +3678,7 @@ msgstr ""
 "Pode tentar dar um toque em %1$s ou [publicar algo à sua atenção](%%%%action."
 "newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3211,7 +3692,7 @@ msgstr ""
 "register%%) para seguir as notas de **%s** e de muitos mais! ([Saber mais](%%"
 "doc.help%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3222,7 +3703,7 @@ msgstr ""
 "(http://en.wikipedia.org/wiki/Micro-blogging) baseado no programa de "
 "Software Livre [StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Repetência de %s"
@@ -3239,197 +3720,145 @@ msgstr "O utilizador já está silenciado."
 msgid "Basic settings for this StatusNet site."
 msgstr "Configurações básicas para este site StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Nome do site não pode ter comprimento zero."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Tem de ter um endereço válido para o correio electrónico de contacto."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Língua desconhecida \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "URL para onde enviar instantâneos é inválida"
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Valor de criação do instantâneo é inválido."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Frequência dos instantâneos estatísticos tem de ser um número."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "O valor mínimo de limite para o texto é 140 caracteres."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "O limite de duplicados tem de ser 1 ou mais segundos."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Geral"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nome do site"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "O nome do seu site, por exemplo \"Microblogue NomeDaEmpresa\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Disponibilizado por"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Texto usado para a ligação de atribuição no rodapé de cada página"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL da atribuição"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL usada para a ligação de atribuição no rodapé de cada página"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Endereço de correio electrónico de contacto para o site"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Local"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Fuso horário, por omissão"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Fuso horário por omissão, para o site; normalmente, UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Idioma do site, por omissão"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URLs"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Servidor"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nome do servidor do site."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "URLs bonitas"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Usar URLs bonitas (mais legíveis e memoráveis)"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Acesso"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privado"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Proibir utilizadores anónimos (sem sessão iniciada) de ver o site?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Só por convite"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Permitir o registo só a convidados."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Fechado"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Impossibilitar registos novos."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Instantâneos"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Aleatoriamente, durante o acesso pela internet"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Num processo agendado"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Instantâneos dos dados"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Quando enviar dados estatísticos para os servidores do status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequência"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Instantâneos serão enviados uma vez a cada N acessos da internet"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL para relatórios"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Instantâneos serão enviados para esta URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limites"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Limite de texto"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Número máximo de caracteres nas notas."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Limite de duplicações"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Quanto tempo os utilizadores terão de esperar (em segundos) para publicar a "
 "mesma coisa outra vez."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Gravar configurações do site"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Configurações de SMS"
@@ -3534,15 +3963,26 @@ msgstr "Nenhum código introduzido"
 msgid "You are not subscribed to that profile."
 msgstr "Não subscreveu esse perfil."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Não foi possível gravar a subscrição."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "O utilizador não é local."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Ficheiro não foi encontrado."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Não subscreveu esse perfil."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Subscrito"
 
@@ -3606,7 +4046,7 @@ msgstr "Estas são as pessoas cujas notas está a escutar."
 msgid "These are the people whose notices %s listens to."
 msgstr "Estas são as pessoas cujas notas %s está a escutar."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3622,19 +4062,24 @@ msgstr ""
 "twittersettings%%) pode subscrever automaticamente as pessoas que já segue "
 "lá."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s não está a ouvir ninguém."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Utilizadores auto-categorizados com %1$s - página %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3663,7 +4108,8 @@ msgstr "Categoria %s"
 msgid "User profile"
 msgstr "Perfil"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3722,7 +4168,7 @@ msgstr "O pedido não tem a identificação do perfil."
 msgid "Unsubscribed"
 msgstr "Subscrição cancelada"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3739,84 +4185,64 @@ msgstr "Utilizador"
 msgid "User settings for this StatusNet site."
 msgstr "Configurações do utilizador para este site StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Limite da biografia inválido. Tem de ser numérico."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Texto de boas-vindas inválido. Tamanho máx. é 255 caracteres."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Subscrição predefinida é inválida: '%1$s' não é utilizador."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Perfil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Limite da Biografia"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Tamanho máximo de uma biografia em caracteres."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Utilizadores novos"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Boas-vindas a utilizadores novos"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Texto de boas-vindas a utilizadores novos (máx. 255 caracteres)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Subscrição predefinida"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Novos utilizadores subscrevem automaticamente este utilizador."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Convites"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Convites habilitados"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Permitir, ou não, que utilizadores convidem utilizadores novos."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessões"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Gerir sessões"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Se devemos gerir sessões nós próprios."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Depuração de sessões"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Ligar a impressão de dados de depuração, para sessões."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizar subscrição"
@@ -3831,36 +4257,36 @@ msgstr ""
 "subscrever as notas deste utilizador. Se não fez um pedido para subscrever "
 "as notas de alguém, simplesmente clique \"Rejeitar\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licença"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Aceitar"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Subscrever este utilizador"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Rejeitar"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Rejeitar esta subscrição"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Não há pedido de autorização!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Subscrição autorizada"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3870,11 +4296,11 @@ msgstr ""
 "Verifique as instruções do site para saber como autorizar a subscrição. A "
 "sua chave de subscrição é:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Subscrição rejeitada"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3884,37 +4310,37 @@ msgstr ""
 "Verifique as instruções do site para saber como rejeitar completamente a "
 "subscrição."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "A listener URI ‘%s’ não foi encontrada aqui."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "URI do escutado ‘%s’ é demasiado longo."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "URI do ouvido ‘%s’ é um utilizador local."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "A URL ‘%s’ do perfil é de um utilizador local."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "A URL ‘%s’ do avatar é inválida."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Não é possível ler a URL do avatar ‘%s’."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Tipo de imagem incorrecto para o avatar da URL ‘%s’."
@@ -3935,6 +4361,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Disfrute do seu cachorro-quente!"
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Membros do grupo %1$s, página %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Procurar mais grupos"
@@ -3963,10 +4394,6 @@ msgstr ""
 "Este site utiliza o %1$s versão %2$s, (c) 2008-2010 StatusNet, Inc. e "
 "colaboradores."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Colaboradores"
@@ -4007,11 +4434,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Plugins"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Nome"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Versão"
 
@@ -4019,10 +4442,6 @@ msgstr "Versão"
 msgid "Author(s)"
 msgstr "Autores"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Descrição"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4075,27 +4494,27 @@ msgstr "Não foi possível inserir a mensagem."
 msgid "Could not update message with new URI."
 msgstr "Não foi possível actualizar a mensagem com a nova URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Erro na base de dados ao inserir a marca: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problema na gravação da nota. Demasiado longa."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problema na gravação da nota. Utilizador desconhecido."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Demasiadas notas, demasiado rápido; descanse e volte a publicar daqui a "
 "alguns minutos."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4103,34 +4522,58 @@ msgstr ""
 "Demasiadas mensagens duplicadas, demasiado rápido; descanse e volte a "
 "publicar daqui a alguns minutos."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Está proibido de publicar notas neste site."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problema na gravação da nota."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Ocorreu um erro na base de dados ao inserir a resposta: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Problema na gravação da nota."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Foi bloqueado de fazer subscrições"
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Já subscrito!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "O utilizador bloqueou-o."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Não subscrito!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Não foi possível apagar a auto-subscrição."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Não foi possível apagar a subscrição."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "%1$s dá-lhe as boas-vindas, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Não foi possível criar o grupo."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Não foi possível configurar membros do grupo."
 
@@ -4171,128 +4614,124 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "Página sem título"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navegação primária deste site"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Início"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Perfil pessoal e notas dos amigos"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Conta"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Altere o seu endereço electrónico, avatar, senha, perfil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Ligar"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Ligar aos serviços"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Alterar a configuração do site"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convidar"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Convidar amigos e colegas para se juntarem a si em %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Terminar esta sessão"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Criar uma conta"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Iniciar uma sessão"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Ajudem-me!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Pesquisa"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Procurar pessoas ou pesquisar texto"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Aviso do site"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Vistas locais"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Aviso da página"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Navegação secundária deste site"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Termos"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Código"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contacto"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Emblema"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licença de software do StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4301,12 +4740,12 @@ msgstr ""
 "**%%site.name%%** é um serviço de microblogues disponibilizado por [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** é um serviço de microblogues. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4317,33 +4756,55 @@ msgstr ""
 "disponibilizado nos termos da [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licença de conteúdos do site"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Tudo "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licença."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginação"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Posteriores"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Anteriores"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Ocorreu um problema com a sua sessão."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4373,10 +4834,104 @@ msgstr "Configuração básica do site"
 msgid "Design configuration"
 msgstr "Configuração do estilo"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Configuração das localizações"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Configuração do estilo"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Configuração das localizações"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Configuração do estilo"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Descreva o grupo ou o assunto em %d caracteres"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Descreva o grupo ou assunto"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Código"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL da página ou do blogue, deste grupo ou assunto"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL da página ou do blogue, deste grupo ou assunto"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Remover"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Anexos"
@@ -4397,11 +4952,11 @@ msgstr "Notas em que este anexo aparece"
 msgid "Tags for this attachment"
 msgstr "Categorias para este anexo"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Não foi possível mudar a palavra-chave"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Não é permitido mudar a palavra-chave"
 
@@ -4552,82 +5107,93 @@ msgstr "Erro ao gravar nota."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Introduza o nome do utilizador para subscrever"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Utilizador não encontrado."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Subscreveu %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Introduza o nome do utilizador para deixar de subscrever"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Deixou de subscrever %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Comando ainda não implementado."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificação desligada."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Não foi possível desligar a notificação."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificação ligada."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Não foi possível ligar a notificação."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Comando para iniciar sessão foi desactivado"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Esta ligação é utilizável uma única vez e só durante os próximos 2 minutos: %"
 "s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Deixou de subscrever %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Não subscreveu ninguém."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Subscreveu esta pessoa:"
 msgstr[1] "Subscreveu estas pessoas:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Ninguém subscreve as suas notas."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Esta pessoa subscreve as suas notas:"
 msgstr[1] "Estas pessoas subscrevem as suas notas:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Não está em nenhum grupo."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Está no grupo:"
 msgstr[1] "Está nos grupos:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4641,6 +5207,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4705,19 +5272,19 @@ msgstr ""
 "tracks - ainda não implementado.\n"
 "tracking - ainda não implementado.\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Ficheiro de configuração não encontrado. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Procurei ficheiros de configuração nos seguintes sítios: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Talvez queira correr o instalador para resolver esta questão."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Ir para o instalador."
 
@@ -4733,6 +5300,15 @@ msgstr "Actualizações por mensagem instantânea (MI)"
 msgid "Updates by SMS"
 msgstr "Actualizações por SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Ligar"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Erro de base de dados"
@@ -4918,12 +5494,12 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, fuzzy, php-format
 msgid "Unknown inbox source %d."
 msgstr "Língua desconhecida \"%s\"."
@@ -5204,7 +5780,7 @@ msgstr ""
 "conversa com outros utilizadores. Outros podem enviar-lhe mensagens, a que "
 "só você terá acesso."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "de"
 
@@ -5324,57 +5900,53 @@ msgid "Do not share my location"
 msgstr "Não partilhar a minha localização."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Ocultar esta informação"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "coords."
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "no contexto"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Repetida por"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Responder a esta nota"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Nota repetida"
 
@@ -5406,11 +5978,7 @@ msgstr "Erro ao inserir perfil remoto"
 msgid "Duplicate notice"
 msgstr "Nota duplicada"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Foi bloqueado de fazer subscrições"
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Não foi possível inserir nova subscrição."
 
@@ -5426,19 +5994,19 @@ msgstr "Respostas"
 msgid "Favorites"
 msgstr "Favoritas"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Recebidas"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Mensagens recebidas"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Enviadas"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Mensagens enviadas"
 
@@ -5515,6 +6083,10 @@ msgstr "Repetir esta nota?"
 msgid "Repeat this notice"
 msgstr "Repetir esta nota"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Bloquear notas públicas"
@@ -5582,34 +6154,6 @@ msgstr "Pessoas que subscrevem %s"
 msgid "Groups %s is a member of"
 msgstr "Grupos de que %s é membro"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Já subscrito!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "O utilizador bloqueou-o."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Não foi possível subscrever."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Não foi possível que outro o subscrevesse."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Não subscrito!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Não foi possível apagar a auto-subscrição."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Não foi possível apagar a subscrição."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5660,67 +6204,67 @@ msgstr "Editar Avatar"
 msgid "User actions"
 msgstr "Acções do utilizador"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Editar configurações do perfil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Editar"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Enviar mensagem directa a este utilizador"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Mensagem"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Moderar"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "há alguns segundos"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "há cerca de um minuto"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "há cerca de %d minutos"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "há cerca de uma hora"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "há cerca de %d horas"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "há cerca de um dia"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "há cerca de %d dias"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "há cerca de um mês"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "há cerca de %d meses"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "há cerca de um ano"
 
@@ -5734,7 +6278,7 @@ msgstr "%s não é uma cor válida!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s não é uma cor válida! Use 3 ou 6 caracteres hexadecimais."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "Mensagem demasiado extensa - máx. %1$d caracteres, enviou %2$d."
index cd0bdedd706c5467faa8697d484e963a4d01db11..18659cecf545b5f1fd1ec3d9999e68cd77903b41 100644 (file)
@@ -2,6 +2,7 @@
 #
 # Author@translatewiki.net: Aracnus
 # Author@translatewiki.net: Ewout
+# Author@translatewiki.net: McDutchie
 # Author@translatewiki.net: Vuln
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -10,17 +11,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:02+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:37+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Acesso"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Configurações de acesso ao site"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registro"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Particular"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Impedir usuários anônimos (não autenticados) de visualizar o site?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Somente convidados"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Cadastro liberado somente para convidados."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Fechado"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Desabilita novos registros."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Salvar"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+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
 msgid "No such page"
@@ -35,25 +88,29 @@ msgstr "Esta página não existe."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Este usuário não existe."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s e amigos, pág. %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,16 +149,16 @@ msgstr ""
 "publicar algo."
 
 #: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Você pode tentar [chamar a atenção de %s](../%s) em seu perfil ou [publicar "
-"alguma coisa que desperte seu interesse](%%%%action.newnotice%%%%?"
-"status_textarea=%s)."
+"Você pode tentar [chamar a atenção de %1$s](../%2$s) em seu perfil ou "
+"[publicar alguma coisa que desperte seu interesse](%%%%action.newnotice%%%%?"
+"status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -114,8 +171,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Você e amigos"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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!"
@@ -125,23 +182,23 @@ msgstr "Atualizações de %1$s e amigos no %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "O método da API não foi encontrado!"
 
@@ -155,7 +212,7 @@ msgstr "O método da API não foi encontrado!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Este método requer um POST."
 
@@ -186,8 +243,9 @@ msgstr "Não foi possível salvar o perfil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -269,7 +327,6 @@ msgid "No status found with that ID."
 msgstr "Não foi encontrado nenhum status com esse ID."
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 msgid "This status is already a favorite."
 msgstr "Esta mensagem já é favorita!"
 
@@ -278,7 +335,6 @@ msgid "Could not create favorite."
 msgstr "Não foi possível criar a favorita."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
 msgstr "Essa mensagem não é favorita!"
 
@@ -300,7 +356,6 @@ msgid "Could not unfollow user: User not found."
 msgstr "Não é possível deixar de seguir o usuário: Usuário não encontrado."
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
 msgstr "Você não pode deixar de seguir você mesmo!"
 
@@ -308,11 +363,11 @@ msgstr "Você não pode deixar de seguir você mesmo!"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Duas IDs de usuário ou screen_names devem ser informados."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Não foi possível determinar o usuário de origem."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Não foi possível encontrar usuário de destino."
 
@@ -336,7 +391,8 @@ msgstr "Esta identificação já está em uso. Tente outro."
 msgid "Not a valid nickname."
 msgstr "Não é uma identificação válida."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -348,7 +404,8 @@ msgstr "A URL informada não é válida."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nome completo muito extenso (máx. 255 caracteres)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Descrição muito extensa (máximo %d caracteres)."
@@ -384,7 +441,7 @@ msgstr "O apelido não pode ser igual à identificação."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "O grupo não foi encontrado!"
 
@@ -397,18 +454,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr "O administrador desse grupo bloqueou sua inscrição."
 
 #: 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 "Não foi possível associar o usuário %s ao grupo %s."
+msgstr "Não foi possível associar o usuário %1$s ao grupo %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
 msgstr "Você não é membro deste 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 "Não foi possível remover o usuário %s do grupo %s."
+msgstr "Não foi possível remover o usuário %1$s do grupo %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -425,6 +482,119 @@ msgstr "Grupos de %s"
 msgid "groups on %s"
 msgstr "grupos no %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Não foi fornecido nenhum parâmetro oauth_token"
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Token inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Ocorreu um problema com o seu token de sessão. Tente novamente, por favor."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Nome de usuário e/ou senha inválido(s)!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+"Erro no banco de dados durante a exclusão do usuário da aplicação OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+"Erro no banco de dados durante a inserção do usuário da aplicativo OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"O token de requisição %s foi autorizado. Por favor, troque-o por um token de "
+"acesso."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+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
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Submissão inesperada de formulário."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Uma aplicação gostaria de se conectar à sua conta"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Permitir ou negar o acesso"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"A aplicação <strong>%1$s</strong> por <strong>%2$s</strong> solicita a "
+"permissão para <strong>%3$s</strong> os dados da sua conta %4$s. Você deve "
+"fornecer acesso à sua conta %4$s somente para terceiros nos quais você "
+"confia."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Conta"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Usuário"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Senha"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Negar"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Permitir"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Permitir ou negar o acesso às informações da sua conta."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Esse método requer um POST ou DELETE."
@@ -454,17 +624,17 @@ msgstr "A mensagem foi excluída."
 msgid "No status with that ID found."
 msgstr "Não foi encontrada nenhuma mensagem com esse ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Está muito extenso. O tamanho máximo é de %s caracteres."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Não encontrado"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "O tamanho máximo da mensagem é de %s caracteres"
@@ -474,14 +644,14 @@ msgid "Unsupported format."
 msgstr "Formato não suportado."
 
 #: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Favorites from %2$s"
-msgstr "%s / Favoritas de %s"
+msgstr "%1$s / Favoritas 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 marcadas como favoritas por %s / %s."
+msgstr "%1$s marcadas como favoritas por %2$s / %2$s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -489,7 +659,7 @@ msgstr "%s marcadas como favoritas por %s / %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!"
@@ -505,27 +675,22 @@ 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!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Repetida por %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 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"
@@ -535,7 +700,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!"
@@ -596,8 +761,8 @@ msgstr "Original"
 msgid "Preview"
 msgstr "Visualização"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Excluir"
 
@@ -609,30 +774,6 @@ msgstr "Enviar"
 msgid "Crop"
 msgstr "Cortar"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Ocorreu um problema com o seu token de sessão. Tente novamente, por favor."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Submissão inesperada de formulário."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Selecione uma área quadrada da imagem para ser seu avatar"
@@ -672,8 +813,9 @@ msgstr ""
 "nenhuma notificação acerca de qualquer citação (@usuário) que ele fizer de "
 "você."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Não"
 
@@ -681,13 +823,13 @@ msgstr "Não"
 msgid "Do not block this user"
 msgstr "Não bloquear este usuário"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -711,9 +853,9 @@ msgid "%s blocked profiles"
 msgstr "Perfis bloqueados no %s"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "Perfis bloqueados no %s, página %d"
+msgstr "Perfis bloqueados no %1$s, pág. %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -770,7 +912,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Não foi possível excluir a confirmação de e-mail."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Confirme o endereço"
 
 #: actions/confirmaddress.php:159
@@ -787,10 +929,51 @@ msgstr "Conversa"
 msgid "Notices"
 msgstr "Mensagens"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Você precisa estar autenticado para excluir uma aplicação."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "A aplicação não foi encontrada."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Você não é o dono desta aplicação."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+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
+msgid "Delete application"
+msgstr "Excluir a aplicação"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"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
+msgid "Do not delete this application"
+msgstr "Não excluir esta aplicação"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -821,7 +1004,7 @@ msgstr "Tem certeza que deseja excluir esta mensagem?"
 msgid "Do not delete this notice"
 msgstr "Não excluir esta mensagem."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Excluir esta mensagem"
 
@@ -842,8 +1025,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"
@@ -953,16 +1136,6 @@ msgstr "Restaura a aparência padrão"
 msgid "Reset back to default"
 msgstr "Restaura de volta ao padrão"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Salvar"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Salvar a aparência"
@@ -975,9 +1148,75 @@ msgstr "Esta mensagem não é uma favorita!"
 msgid "Add to favorites"
 msgstr "Adicionar às favoritas"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Esse documento não existe."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "O documento \"%s\" não existe"
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Editar a aplicação"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Você precisa estar autenticado para editar uma aplicação."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Essa aplicação não existe."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Use este formulário para editar a sua aplicação."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "O nome é obrigatório."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+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
+msgid "Name already in use. Try another one."
+msgstr "Este nome já está em uso. Tente outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "A descrição é obrigatória."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "A URL da fonte  é muito extensa."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "A URL da fonte não é válida."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "A organização é obrigatória."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "A organização é muito extensa (máx. 255 caracteres)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "O site da organização é obrigatório."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "O retorno é muito extenso."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "A URL de retorno não é válida."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Não foi possível atualizar a aplicação."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -990,9 +1229,8 @@ msgstr "Você deve estar autenticado para criar um 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 "Você deve ser o administrador do grupo para editá-lo"
+msgstr "Você deve ser um administrador para editar o grupo."
 
 #: actions/editgroup.php:154
 msgid "Use this form to edit the group."
@@ -1007,7 +1245,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:433
 msgid "Could not create aliases."
 msgstr "Não foi possível criar os apelidos."
 
@@ -1016,7 +1254,6 @@ msgid "Options saved."
 msgstr "As configurações foram salvas."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
 msgstr "Configurações do e-mail"
 
@@ -1049,14 +1286,14 @@ msgstr ""
 "de spam!) por uma mensagem com mais instruções."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Cancelar"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "Endereços de e-mail"
+msgstr "Endereço de e-mail"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1134,7 +1371,7 @@ msgid "Cannot normalize that email address"
 msgstr "Não foi possível normalizar este endereço de e-mail"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Não é um endereço de e-mail válido."
 
@@ -1146,7 +1383,7 @@ msgstr "Esse já é seu endereço de e-mail."
 msgid "That email address already belongs to another user."
 msgstr "Esse endereço de e-mail já pertence à outro usuário."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Não foi possível inserir o código de confirmação."
@@ -1209,7 +1446,7 @@ msgstr "Essa mensagem já é uma favorita!"
 msgid "Disfavor favorite"
 msgstr "Desmarcar a favorita"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Mensagens populares"
@@ -1357,19 +1594,19 @@ 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"
 
 #: actions/groupblock.php:162
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
-"Tem certeza que deseja bloquear o usuário \"%s\" no grupo \"%s\"? Ele será "
-"removido do grupo e impossibilitado de publicar e de se juntar ao grupo "
+"Tem certeza que deseja bloquear o usuário \"%1$s\" no grupo \"%2$s\"? Ele "
+"será removido do grupo e impossibilitado de publicar e de se juntar ao grupo "
 "futuramente."
 
 #: actions/groupblock.php:178
@@ -1427,7 +1664,6 @@ msgstr ""
 "arquivo é %s."
 
 #: actions/grouplogo.php:178
-#, fuzzy
 msgid "User without matching profile."
 msgstr "Usuário sem um perfil correspondente"
 
@@ -1449,31 +1685,31 @@ msgid "%s group members"
 msgstr "Membros do grupo %s"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "Membros do grupo %s, pág. %d"
+msgstr "Membros do grupo %1$s, pág. %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "Uma lista dos usuários deste grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1560,7 +1796,6 @@ msgid "Error removing the block."
 msgstr "Erro na remoção do bloqueio."
 
 #: actions/imsettings.php:59
-#, fuzzy
 msgid "IM settings"
 msgstr "Configurações do MI"
 
@@ -1592,7 +1827,6 @@ msgstr ""
 "contatos?)"
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
 msgstr "Endereço do MI"
 
@@ -1657,6 +1891,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Essa não é sua ID do Jabber."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Recebidas por %s - pág. %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1740,7 +1979,7 @@ msgstr "Mensagem pessoal"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Você pode, opcionalmente, adicionar uma mensagem pessoal ao convite."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Enviar"
 
@@ -1811,9 +2050,9 @@ msgid "You must be logged in to join a group."
 msgstr "Você deve estar autenticado para se associar a um grupo."
 
 #: actions/joingroup.php:131
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s joined group %2$s"
-msgstr "%s associou-se ao grupo %s"
+msgstr "%1$s associou-se ao grupo %2$s"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
@@ -1824,9 +2063,9 @@ msgid "You are not a member of that group."
 msgstr "Você não é um membro desse grupo."
 
 #: actions/leavegroup.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s left group %2$s"
-msgstr "%s deixou o grupo %s"
+msgstr "%1$s deixou o grupo %2$s"
 
 #: actions/login.php:80 actions/otp.php:62 actions/register.php:137
 msgid "Already logged in."
@@ -1841,7 +2080,7 @@ msgid "Error setting user. You are probably not authorized."
 msgstr ""
 "Erro na configuração do usuário. Você provavelmente não tem autorização."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Entrar"
@@ -1850,17 +2089,6 @@ msgstr "Entrar"
 msgid "Login to site"
 msgstr "Autenticar-se no site"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Usuário"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Senha"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Lembrar neste computador"
@@ -1892,31 +2120,51 @@ 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
-#, fuzzy, php-format
+#: actions/makeadmin.php:96
+#, php-format
 msgid "%1$s is already an admin for group \"%2$s\"."
-msgstr "%s já é um administrador do grupo \"%s\"."
+msgstr "%1$s já é um administrador do 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 "Não foi possível obter o registro de membro de %s no grupo %s"
+msgstr "Não foi possível obter o registro de membro de %1$s no 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 "Não foi possível tornar %s um administrador do grupo %s"
+msgstr "Não foi possível tornar %1$s um administrador do grupo %2$s."
 
 #: actions/microsummary.php:69
 msgid "No current status"
 msgstr "Nenhuma mensagem atual"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Nova aplicação"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Você deve estar autenticado para registrar uma aplicação."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Utilize este formulário para registrar uma nova aplicação."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "A URL da fonte é obrigatória."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Não foi possível criar a aplicação."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Novo grupo"
@@ -1954,9 +2202,9 @@ msgid "Message sent"
 msgstr "A mensagem foi enviada"
 
 #: actions/newmessage.php:185
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent."
-msgstr "A mensagem direta para %s foi enviada"
+msgstr "A mensagem direta para %s foi enviada."
 
 #: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
@@ -1984,9 +2232,9 @@ msgid "Text search"
 msgstr "Procurar por texto"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%1$s\" on %2$s"
-msgstr "Resultados da procura por \"%s\" no %s"
+msgstr "Resultados da procura para \"%1$s\" no %2$s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -2032,6 +2280,50 @@ msgstr "A chamada de atenção foi enviada"
 msgid "Nudge sent!"
 msgstr "A chamada de atenção foi enviada!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Você precisa estar autenticado para listar suas aplicações."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Aplicações OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Aplicações que você registrou"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Você ainda não registrou nenhuma aplicação."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Aplicações conectadas"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Você permitiu que as seguintes aplicações acessem a sua conta."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Você não é um usuário dessa aplicação."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Não foi possível revogar o acesso para a aplicação: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Você não autorizou nenhuma aplicação a usar a sua conta."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Os desenvolvedores podem editar as configurações de registro para suas "
+"aplicações "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "A mensagem não está associada a nenhum perfil"
@@ -2049,8 +2341,8 @@ msgstr "tipo de conteúdo "
 msgid "Only "
 msgstr "Apenas "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Não é um formato de dados suportado."
 
@@ -2063,7 +2355,7 @@ msgid "Notice Search"
 msgstr "Procurar mensagens"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Outras configurações"
 
 #: actions/othersettings.php:71
@@ -2095,29 +2387,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr "O serviço de encolhimento de URL é muito extenso (máx. 50 caracteres)."
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Não foi especificado nenhum grupo."
+msgstr "Não foi especificado nenhum ID de usuário."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Não foi especificada nenhuma mensagem."
+msgstr "Não foi especificado nenhum token de autenticação."
 
 #: actions/otp.php:90
-#, fuzzy
 msgid "No login token requested."
-msgstr "Nenhuma ID de perfil na requisição."
+msgstr "Não foi requerido nenhum token de autenticação."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "Token inválido ou expirado."
+msgstr "O token de autenticação especificado é inválido."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "Autenticar-se no site"
+msgstr "O token de autenticação expirou."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Enviadas por %s - pág. %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2191,7 +2483,7 @@ msgstr "Não é possível salvar a nova senha."
 msgid "Password saved."
 msgstr "A senha foi salva."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Caminhos"
 
@@ -2199,134 +2491,149 @@ msgstr "Caminhos"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Configurações dos caminhos e do servidor para este site StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Sem permissão de leitura no diretório de temas: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Sem permissão de escrita no diretório de avatares: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Sem permissão de escrita no diretório de imagens de fundo: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Sem permissão de leitura no diretório de locales: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 "Servidor SSL inválido. O comprimento máximo deve ser de 255 caracteres."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Site"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Servidor"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Nome de host do servidor do site."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Caminho"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Caminho do site"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Caminho para os locales"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Caminho do diretório de locales"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "URLs limpas"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Utilizar URLs limpas (mais legíveis e memorizáveis)?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Tema"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Servidor de temas"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Caminho dos temas"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Diretório dos temas"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatares"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Servidor de avatares"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Caminho dos avatares"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Diretório dos avatares"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Imagens de fundo"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Servidor de imagens de fundo"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Caminho das imagens de fundo"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Diretório das imagens de fundo"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Nunca"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Algumas vezes"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Sempre"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Usar SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Quando usar SSL"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "Servidor SSL"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Servidor para onde devem ser direcionadas as requisições SSL"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Salvar caminhos"
 
@@ -2349,19 +2656,19 @@ msgid "Not a valid people tag: %s"
 msgstr "Não é uma etiqueta de pessoa válida: %s"
 
 #: actions/peopletag.php:144
-#, fuzzy, php-format
+#, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
-msgstr "Usuários auto-etiquetados com %s - pág. %d"
+msgstr "Usuários auto-etiquetados com %1$s - pág. %2$d"
 
 #: actions/postnotice.php:84
 msgid "Invalid notice content"
 msgstr "O conteúdo da mensagem é inválido"
 
 #: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"A licença ‘%s’ da mensagem não é compatível com a licença ‘%s’ do site."
+"A licença ‘%1$s’ da mensagem não é compatível com a licença ‘%2$s’ do site."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2389,7 +2696,7 @@ msgid "Full name"
 msgstr "Nome completo"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Site"
 
@@ -2412,7 +2719,7 @@ msgstr "Descrição"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Localização"
@@ -2438,7 +2745,7 @@ msgstr ""
 "Suas etiquetas (letras, números, -, ., e _), separadas por vírgulas ou "
 "espaços"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Idioma"
 
@@ -2465,7 +2772,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "A descrição é muito extensa (máximo %d caracteres)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "O fuso horário não foi selecionado."
 
@@ -2478,23 +2785,23 @@ msgstr "O nome do idioma é muito extenso (máx. 50 caracteres)."
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta inválida: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Não foi possível atualizar o usuário para assinar automaticamente."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Não foi possível salvar as preferências de localização."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Não foi possível salvar o perfil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Não foi possível salvar as etiquetas."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "As configurações foram salvas."
 
@@ -2516,19 +2823,19 @@ msgstr "Mensagens públicas, pág. %d"
 msgid "Public timeline"
 msgstr "Mensagens públicas"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fonte de mensagens públicas (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fonte de mensagens públicas (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Fonte de mensagens públicas (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2537,11 +2844,11 @@ msgstr ""
 "Esse é o fluxo de mensagens públicas de %%site.name%%, mas ninguém publicou "
 "nada ainda."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Seja o primeiro a publicar!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2549,7 +2856,7 @@ msgstr ""
 "Por que você não [registra uma conta](%%action.register%%) pra ser o "
 "primeiro a publicar?"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2562,7 +2869,7 @@ msgstr ""
 "[Cadastre-se agora](%%action.register%%) para compartilhar notícias sobre "
 "você com seus amigos, família e colegas! ([Saiba mais](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2600,7 +2907,7 @@ msgstr ""
 "Por que você não [registra uma conta](%%action.register%%) pra ser o "
 "primeiro a publicar?"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Nuvem de etiquetas"
 
@@ -2745,7 +3052,7 @@ msgstr "Desculpe, mas o código do convite é inválido."
 msgid "Registration successful"
 msgstr "Registro realizado com sucesso"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrar-se"
@@ -2788,7 +3095,7 @@ msgid "Same as password above. Required."
 msgstr "Igual à senha acima. Obrigatório."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-mail"
 
@@ -2817,7 +3124,7 @@ msgstr ""
 "e número de telefone."
 
 #: 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"
@@ -2834,10 +3141,10 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"Parabéns, %s! E bem-vindo(a) a %%%%site.name%%%%. A partir daqui, você "
+"Parabéns, %1$s! E bem-vindo(a) a %%%%site.name%%%%. A partir daqui, você "
 "pode...\n"
 "\n"
-"* Acessar [seu perfil](%s) e publicar sua primeira mensagem.\n"
+"* Acessar [seu perfil](%2$s) e publicar sua primeira mensagem.\n"
 "* Adicionar um [endereço de Jabber/GTalk](%%%%action.imsettings%%%%) para "
 "que você possa publicar via mensagens instantâneas.\n"
 "* [Procurar pessoas](%%%%action.peoplesearch%%%%) que você conheça ou que "
@@ -2894,7 +3201,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL do seu perfil em outro serviço de microblog compatível"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Assinar"
 
@@ -2931,7 +3238,7 @@ msgstr "Você não pode repetir sua própria mensagem."
 msgid "You already repeated that notice."
 msgstr "Você já repetiu essa mensagem."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Repetida"
 
@@ -2945,6 +3252,11 @@ msgstr "Repetida!"
 msgid "Replies to %s"
 msgstr "Respostas para %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Respostas para %1$s, pág. %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2961,13 +3273,13 @@ msgid "Replies feed for %s (Atom)"
 msgstr "Fonte de respostas para %s (Atom)"
 
 #: actions/replies.php:198
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "This is the timeline showing replies to %1$s but %2$s hasn't received a "
 "notice to his attention yet."
 msgstr ""
-"Esse é o fluxo de mensagens de resposta para %s, mas %s ainda não recebeu "
-"nenhuma mensagem direcionada a ele(a)."
+"Esse é o fluxo de mensagens de resposta para %1$s, mas %2$s ainda não "
+"recebeu nenhuma mensagem direcionada a ele(a)."
 
 #: actions/replies.php:203
 #, php-format
@@ -2979,19 +3291,24 @@ msgstr ""
 "pessoas ou [associe-se a grupos](%%action.groups%%)."
 
 #: actions/replies.php:205
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) or [post something to his or her "
 "attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Você pode tentar [chamar a atenção de %s](../%s) ou [publicar alguma coisa "
-"que desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%s)."
+"Você pode tentar [chamar a atenção de %1$s](../%2$s) ou [publicar alguma "
+"coisa que desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%3"
+"$s)."
 
 #: actions/repliesrss.php:72
 #, php-format
 msgid "Replies to %1$s on %2$s!"
 msgstr "Respostas para %1$s no %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Você não pode colocar usuários deste site em isolamento."
@@ -3000,9 +3317,124 @@ msgstr "Você não pode colocar usuários deste site em isolamento."
 msgid "User is already sandboxed."
 msgstr "O usuário já está em isolamento."
 
-#: actions/showfavorites.php:132
-msgid "Could not retrieve favorite notices."
-msgstr "Não foi possível recuperar as mensagens favoritas."
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessões"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Configurações da sessão deste site StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Gerenciar sessões"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Define se nós cuidamos do gerenciamento das sessões."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Depuração da sessão"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Ativa a saída de depuração para as sessões."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Salvar as configurações do site"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Você deve estar autenticado para visualizar uma aplicação."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Perfil da aplicação"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Ícone"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Nome"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organização"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Descrição"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Estatísticas"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Criado por %1$s - acesso %2$s por padrão - %3$d usuários"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Ações da aplicação"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Restaurar a chave e o segredo"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Informação da aplicação"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Chave do consumidor"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Segredo do consumidor"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL do token de requisição"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL do token de acesso"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Autorizar a URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Nota: Nós suportamos assinaturas HMAC-SHA1. Nós não suportamos o método de "
+"assinatura em texto plano."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Tem certeza que deseja restaurar sua chave e segredo de consumidor?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Mensagens favoritas de %1$s, pág. %2$d"
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr "Não foi possível recuperar as mensagens favoritas."
 
 #: actions/showfavorites.php:170
 #, php-format
@@ -3057,17 +3489,22 @@ msgstr "Esta é uma forma de compartilhar o que você gosta."
 msgid "%s group"
 msgstr "Grupo %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Grupo %1$s, pág. %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Perfil do grupo"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "Site"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Mensagem"
 
@@ -3113,10 +3550,6 @@ msgstr "(Nenhum)"
 msgid "All members"
 msgstr "Todos os membros"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Estatísticas"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Criado"
@@ -3181,10 +3614,15 @@ msgstr "A mensagem excluída."
 msgid " tagged %s"
 msgstr " etiquetada %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, pág. %2$d"
+
 #: actions/showstream.php:122
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
-msgstr "Fonte de mensagens de %s etiquetada %s (RSS 1.0)"
+msgstr "Fonte de mensagens de %1$s etiquetada como %2$s (RSS 1.0)"
 
 #: actions/showstream.php:129
 #, php-format
@@ -3206,13 +3644,14 @@ msgstr "Fonte de mensagens de %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF de %s"
 
-#: actions/showstream.php:191
-#, fuzzy, php-format
+#: actions/showstream.php:200
+#, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
-"Este é o fluxo público de mensagens de %s, mas %s não publicou nada ainda."
+"Este é o fluxo público de mensagens de %1$s, mas %2$s não publicou nada "
+"ainda."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3220,16 +3659,16 @@ msgstr ""
 "Viu alguma coisa interessante recentemente? Você ainda não publicou nenhuma "
 "mensagem. Que tal começar agora? :)"
 
-#: actions/showstream.php:198
-#, fuzzy, php-format
+#: actions/showstream.php:207
+#, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
-"Você pode tentar chamar a atenção de %s ou [publicar alguma coisa que "
-"desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%s)."
+"Você pode tentar chamar a atenção de %1$s ou [publicar alguma coisa que "
+"desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3243,7 +3682,7 @@ msgstr ""
 "acompanhar as mensagens de **%s** e muito mais! ([Saiba mais](%%%%doc.help%%%"
 "%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3254,7 +3693,7 @@ msgstr ""
 "pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre [StatusNet]"
 "(http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Repetição de %s"
@@ -3271,202 +3710,148 @@ msgstr "O usuário já está silenciado."
 msgid "Basic settings for this StatusNet site."
 msgstr "Configurações básicas para esta instância do StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Você deve digitar alguma coisa para o nome do site."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Você deve ter um endereço de e-mail para contato válido."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "Idioma desconhecido \"%s\""
+msgstr "Idioma \"%s\" desconhecido."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "A URL para o envio das estatísticas é inválida."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "O valor de execução da obtenção das estatísticas é inválido."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "A frequência de geração de estatísticas deve ser um número."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "O comprimento máximo do texto é de 140 caracteres."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "O limite de duplicatas deve ser de um ou mais segundos."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Geral"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Nome do site"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "O nome do seu site, por exemplo \"Microblog da Sua Empresa\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Disponibilizado por"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Texto utilizado para o link de créditos no rodapé de cada página"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL do disponibilizado por"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL utilizada para o link de créditos no rodapé de cada página"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Endereço de e-mail para contatos do seu site"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Local"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Fuso horário padrão"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Fuso horário padrão para o seu site; geralmente UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Idioma padrão do site"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URLs"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Servidor"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Nome de host do servidor do site."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "URLs limpas"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Utilizar URLs limpas (mais legíveis e memorizáveis)?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Acesso"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Particular"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Impedir usuários anônimos (não autenticados) de visualizar o site?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Somente convidados"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Cadastro liberado somente para convidados."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Fechado"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Desabilita novos registros."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Estatísticas"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Aleatoriamente durante o funcionamento"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Em horários pré-definidos"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Estatísticas dos dados"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Quando enviar dados estatísticos para os servidores status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frequentemente"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "As estatísticas serão enviadas uma vez a cada N usos da web"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL para envio"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "As estatísticas serão enviadas para esta URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Limites"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Limite do texto"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Número máximo de caracteres para as mensagens."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Limite de duplicatas"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Quanto tempo (em segundos) os usuários devem esperar para publicar a mesma "
 "coisa novamente."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Salvar as configurações do site"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "Configuração de SMS"
+msgstr "Configuração do SMS"
 
 #: actions/smssettings.php:69
 #, php-format
@@ -3494,7 +3879,6 @@ msgid "Enter the code you received on your phone."
 msgstr "Informe o código que você recebeu no seu telefone."
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
 msgstr "Telefone para SMS"
 
@@ -3567,15 +3951,26 @@ msgstr "Não foi digitado nenhum código"
 msgid "You are not subscribed to that profile."
 msgstr "Você não está assinando esse perfil."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Não foi possível salvar a assinatura."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Não é um usuário local."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Esse arquivo não existe."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Você não está assinando esse perfil."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Assinado"
 
@@ -3585,9 +3980,9 @@ msgid "%s subscribers"
 msgstr "Assinantes de %s"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "Assinantes de %s, pág. %d"
+msgstr "Assinantes de %1$s, pág. %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3626,9 +4021,9 @@ msgid "%s subscriptions"
 msgstr "Assinaturas de %s"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "Assinaturas de %s, pág. %d"
+msgstr "Assinaturas de %1$s, pág. %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3639,7 +4034,7 @@ msgstr "Estas são as pessoas cujas mensagens você acompanha."
 msgid "These are the people whose notices %s listens to."
 msgstr "Estas são as pessoas cujas mensagens %s acompanha."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3655,19 +4050,24 @@ msgstr ""
 "[usuário do Twitter](%%action.twittersettings%%), você pode assinar "
 "automaticamente as pessoas que já segue lá."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s não está acompanhando ninguém."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Mensagens etiquetadas com %1$s, pág. %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3696,7 +4096,8 @@ msgstr "Etiqueta %s"
 msgid "User profile"
 msgstr "Perfil do usuário"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Imagem"
 
@@ -3755,13 +4156,13 @@ msgstr "Nenhuma ID de perfil na requisição."
 msgid "Unsubscribed"
 msgstr "Cancelado"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
-#, fuzzy, php-format
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
+#, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"A licença '%s' do fluxo do usuário não é compatível com a licença '%s' do "
-"site."
+"A licença '%1$s' do fluxo do usuário não é compatível com a licença '%2$s' "
+"do site."
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
 #: lib/personalgroupnav.php:115
@@ -3772,85 +4173,65 @@ msgstr "Usuário"
 msgid "User settings for this StatusNet site."
 msgstr "Configurações de usuário para este site StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Limite da descrição inválido. Seu valor deve ser numérico."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 "Mensagem de boas vindas inválida. O comprimento máximo é de 255 caracteres."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Assinatura padrão inválida: '%1$s' não é um usuário."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Perfil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Limite da descrição"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Comprimento máximo da descrição do perfil, em caracteres."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Novos usuários"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Boas vindas aos novos usuários"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Texto de boas vindas para os novos usuários (máx. 255 caracteres)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Assinatura padrão"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Os novos usuários assinam esse usuário automaticamente."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Convites"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Convites habilitados"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Define se os usuários podem ou não convidar novos usuários."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessões"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Gerenciar sessões"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Define se nós cuidamos do gerenciamento das sessões."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Depuração da sessão"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Ativa a saída de depuração para as sessões."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizar a assinatura"
@@ -3865,36 +4246,36 @@ msgstr ""
 "as mensagens deste usuário. Se você não solicitou assinar as mensagens de "
 "alguém, clique em \"Recusar\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licença"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Aceitar"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Assinar este usuário"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Recusar"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Recusar esta assinatura"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Nenhum pedido de autorização!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "A assinatura foi autorizada"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3904,11 +4285,11 @@ msgstr ""
 "Verifique as instruções do site para detalhes sobre como autorizar a "
 "assinatura. Seu token de assinatura é:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "A assinatura foi recusada"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3918,37 +4299,37 @@ msgstr ""
 "Verifique as instruções do site para detalhes sobre como rejeitar "
 "completamente a assinatura."
 
-#: actions/userauthorization.php:296
-#, fuzzy, php-format
+#: actions/userauthorization.php:303
+#, php-format
 msgid "Listener URI ‘%s’ not found here."
-msgstr "A URI ‘%s’ do usuário não foi encontrada aqui"
+msgstr "A URI ‘%s’ do usuário não foi encontrada aqui."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "A URI ‘%s’ do usuário é muito extensa."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "A URI ‘%s’ é de um usuário local."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "A URL ‘%s’ do perfil é de um usuário local."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "A URL ‘%s’ do avatar não é válida."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Não é possível ler a URL '%s' do avatar."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Tipo de imagem errado para a URL '%s' do avatar."
@@ -3969,6 +4350,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Aproveite o seu cachorro-quente!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Grupos de %1$s, pág. %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Procurar por outros grupos"
@@ -3986,9 +4372,9 @@ msgstr ""
 "eles."
 
 #: actions/version.php:73
-#, fuzzy, php-format
+#, php-format
 msgid "StatusNet %s"
-msgstr "Estatísticas"
+msgstr "StatusNet %s"
 
 #: actions/version.php:153
 #, php-format
@@ -3996,15 +4382,12 @@ msgid ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 msgstr ""
-
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "A mensagem foi excluída."
+"Este site funciona sobre %1$s versão %2$s, Copyright 2008-2010 StatusNet, "
+"Inc. e colaboradores."
 
 #: actions/version.php:161
 msgid "Contributors"
-msgstr ""
+msgstr "Colaboradores"
 
 #: actions/version.php:168
 msgid ""
@@ -4013,6 +4396,10 @@ msgid ""
 "Software Foundation, either version 3 of the License, or (at your option) "
 "any later version. "
 msgstr ""
+"StatusNet é um software livre: você pode redistribui-lo e/ou modificá-lo sob "
+"os termos da GNU Affero General Public License, conforme publicado pela Free "
+"Software Foundation, na versão 3 desta licença ou (caso deseje) qualquer "
+"versão posterior. "
 
 #: actions/version.php:174
 msgid ""
@@ -4021,6 +4408,10 @@ msgid ""
 "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License "
 "for more details. "
 msgstr ""
+"Este programa é distribuído na esperança de ser útil, mas NÃO POSSUI "
+"QUALQUER GARANTIA, nem mesmo a garantia implícita de COMERCIALIZAÇÃO ou "
+"ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.  Verifique a GNU Affero General "
+"Public License para mais detalhes. "
 
 #: actions/version.php:180
 #, php-format
@@ -4028,29 +4419,20 @@ msgid ""
 "You should have received a copy of the GNU Affero General Public License "
 "along with this program.  If not, see %s."
 msgstr ""
+"Você deve ter recebido uma cópia da GNU Affero General Public License com "
+"este programa. Caso contrário, veja %s."
 
 #: actions/version.php:189
 msgid "Plugins"
-msgstr ""
+msgstr "Plugins"
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Usuário"
-
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "Sessões"
+msgstr "Versão"
 
 #: actions/version.php:197
-#, fuzzy
 msgid "Author(s)"
-msgstr "Autor"
-
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Descrição"
+msgstr "Autor(es)"
 
 #: classes/File.php:144
 #, php-format
@@ -4072,19 +4454,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "Um arquivo deste tamanho excederá a sua conta mensal de %d bytes."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Perfil do grupo"
+msgstr "Não foi possível se unir ao grupo."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Não foi possível atualizar o grupo."
+msgstr "Não é parte de um grupo."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Perfil do grupo"
+msgstr "Não foi possível deixar o grupo."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4103,27 +4482,27 @@ msgstr "Não foi possível inserir a mensagem."
 msgid "Could not update message with new URI."
 msgstr "Não foi possível atualizar a mensagem com a nova URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Erro no banco de dados durante a inserção da hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problema no salvamento da mensagem. Ela é muito extensa."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problema no salvamento da mensagem. Usuário desconhecido."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Muitas mensagens em um período curto de tempo; dê uma respirada e publique "
 "novamente daqui a alguns minutos."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4131,34 +4510,57 @@ msgstr ""
 "Muitas mensagens duplicadas em um período curto de tempo; dê uma respirada e "
 "publique novamente daqui a alguns minutos."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Você está proibido de publicar mensagens neste site."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problema no salvamento da mensagem."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Erro no banco de dados na inserção da reposta: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problema no salvamento das mensagens recebidas do grupo."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Você está proibido de assinar."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Já assinado!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "O usuário bloqueou você."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Não assinado!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Não foi possível excluir a auto-assinatura."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Não foi possível excluir a assinatura."
+
+#: classes/User.php:372
 #, php-format
 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:423
 msgid "Could not create group."
 msgstr "Não foi possível criar o grupo."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Não foi possível configurar a associação ao grupo."
 
@@ -4191,136 +4593,132 @@ msgid "Other options"
 msgstr "Outras opções"
 
 #: 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"
 msgstr "Página sem título"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Navegação primária no site"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Início"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Perfil pessoal e fluxo de mensagens dos amigos"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Conta"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Mude seu e-mail, avatar, senha, perfil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Conectar"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Conecte-se a outros serviços"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Mude as configurações do site"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convidar"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Convide seus amigos e colegas para unir-se a você no %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Sai do site"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Cria uma conta"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Autentique-se no site"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Ajudem-me!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Procurar"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Procura por pessoas ou textos"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Mensagem do site"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Visualizações locais"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Notícia da página"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Navegação secundária no site"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Termos de uso"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Fonte"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Contato"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Mini-aplicativo"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Licença do software StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4329,12 +4727,12 @@ msgstr ""
 "**%%site.name%%** é um serviço de microblog disponibilizado por [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** é um serviço de microblog. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4345,42 +4743,65 @@ msgstr ""
 "versão %s, disponível sob a [GNU Affero General Public License] (http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licença do conteúdo do site"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "O conteúdo e os dados de %1$s são privados e confidenciais."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr "Conteúdo e dados licenciados sob %1$s. Todos os direitos reservados."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Conteúdo e dados licenciados pelos colaboradores. Todos os direitos "
+"reservados."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Todas "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licença."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Paginação"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Próximo"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Anterior"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Ocorreu um problema com o seu token de sessão."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
 msgstr "Você não pode fazer alterações neste site."
 
 #: lib/adminpanelaction.php:107
-#, fuzzy
 msgid "Changes to that panel are not allowed."
-msgstr "Não é permitido o registro."
+msgstr "Não são permitidas alterações a esse painel."
 
 #: lib/adminpanelaction.php:206
 msgid "showForm() not implemented."
@@ -4402,10 +4823,101 @@ msgstr "Configuração básica do site"
 msgid "Design configuration"
 msgstr "Configuração da aparência"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Configuração do usuário"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Configuração do acesso"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Configuração dos caminhos"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Configuração das sessões"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"Os recursos de API exigem acesso de leitura e escrita, mas você possui "
+"somente acesso de leitura."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"A tentativa de autenticação na API falhou, identificação = %1$s, proxy = %2"
+"$s, ip = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Editar a aplicação"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Ícone para esta aplicação"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Descreva a sua aplicação em %d caracteres"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Descreva sua aplicação"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL da fonte"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL do site desta aplicação"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organização responsável por esta aplicação"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL para o site da organização"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL para o redirecionamento após a autenticação"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Navegador"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Desktop"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Tipo de aplicação: navegador ou desktop"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Somente leitura"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Leitura e escrita"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Acesso padrão para esta aplicação: somente leitura ou leitura e escrita"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Revogar"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Anexos"
@@ -4426,15 +4938,13 @@ msgstr "Mensagens onde este anexo aparece"
 msgid "Tags for this attachment"
 msgstr "Etiquetas para este anexo"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
-#, fuzzy
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
-msgstr "Alterar a senha"
+msgstr "Não foi possível alterar a senha"
 
-#: lib/authenticationplugin.php:197
-#, fuzzy
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
-msgstr "Alterar a senha"
+msgstr "Não é permitido alterar a senha"
 
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
@@ -4585,82 +5095,92 @@ msgstr "Erro no salvamento da mensagem."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Especifique o nome do usuário que será assinado"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Este usuário não existe."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Efetuada a assinatura de %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Especifique o nome do usuário cuja assinatura será cancelada"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Cancelada a assinatura de %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "O comando não foi implementado ainda."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notificação desligada."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Não é possível desligar a notificação."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notificação ligada."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Não é possível ligar a notificação."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "O comando para autenticação está desabilitado"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Este link é utilizável somente uma vez e é válido somente por dois minutos: %"
 "s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Cancelada a assinatura de %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Você não está assinando ninguém."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Você já está assinando esta pessoa:"
 msgstr[1] "Você já está assinando estas pessoas:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Ninguém o assinou ainda."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Esta pessoa está assinando você:"
 msgstr[1] "Estas pessoas estão assinando você:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Você não é membro de nenhum grupo."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Você é membro deste grupo:"
 msgstr[1] "Você é membro destes grupos:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4674,6 +5194,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4739,19 +5260,19 @@ msgstr ""
 "tracks -  não implementado ainda\n"
 "tracking -  não implementado ainda\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Não foi encontrado nenhum arquivo de configuração. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Eu procurei pelos arquivos de configuração nos seguintes lugares: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Você pode querer executar o instalador para corrigir isto."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Ir para o instalador."
 
@@ -4767,6 +5288,14 @@ msgstr "Atualizações via mensageiro instantâneo (MI)"
 msgid "Updates by SMS"
 msgstr "Atualizações via SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Conexões"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Aplicações autorizadas conectadas"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Erro no banco de dados"
@@ -4953,15 +5482,15 @@ msgstr "Mb"
 msgid "kB"
 msgstr "Kb"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Idioma desconhecido \"%s\""
+msgstr "Fonte da caixa de entrada desconhecida %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5043,11 +5572,9 @@ msgstr ""
 "Altere seu endereço de e-mail e suas opções de notificação em %8$s\n"
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr ""
-"Descrição: %s\n"
-"\n"
+msgstr "Descrição: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -5240,7 +5767,7 @@ msgstr ""
 "privadas para envolver outras pessoas em uma conversa. Você também pode "
 "receber mensagens privadas."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "de"
 
@@ -5261,9 +5788,9 @@ msgid "Sorry, no incoming email allowed."
 msgstr "Desculpe-me, mas não é permitido o recebimento de e-mails."
 
 #: lib/mailhandler.php:228
-#, fuzzy, php-format
+#, php-format
 msgid "Unsupported message type: %s"
-msgstr "Formato de imagem não suportado."
+msgstr "Tipo de mensagem não suportado: %s"
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
@@ -5302,18 +5829,16 @@ msgid "File upload stopped by extension."
 msgstr "O arquivo a ser enviado foi barrado por causa de sua extensão."
 
 #: lib/mediafile.php:179 lib/mediafile.php:216
-#, fuzzy
 msgid "File exceeds user's quota."
-msgstr "O arquivo excede a quota do usuário!"
+msgstr "O arquivo excede a quota do usuário."
 
 #: lib/mediafile.php:196 lib/mediafile.php:233
 msgid "File could not be moved to destination directory."
 msgstr "Não foi possível mover o arquivo para o diretório de destino."
 
 #: lib/mediafile.php:201 lib/mediafile.php:237
-#, fuzzy
 msgid "Could not determine file's MIME type."
-msgstr "Não foi possível determinar o mime-type do arquivo!"
+msgstr "Não foi possível determinar o tipo MIME do arquivo."
 
 #: lib/mediafile.php:270
 #, php-format
@@ -5321,7 +5846,7 @@ msgid " Try using another %s format."
 msgstr " Tente usar outro formato %s."
 
 #: lib/mediafile.php:275
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a supported file type on this server."
 msgstr "%s não é um tipo de arquivo suportado neste servidor."
 
@@ -5355,67 +5880,63 @@ msgid "Attach a file"
 msgstr "Anexar um arquivo"
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "Indique a sua localização"
+msgstr "Divulgar minha localização"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Indique a sua localização"
+msgstr "Não divulgar minha localização"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Desculpe, mas recuperar a sua geolocalização está demorando mais que o "
+"esperado. Por favor, tente novamente mais tarde."
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "L"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "em"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "no contexto"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Repetida por"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Responder a esta mensagem"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Mensagem repetida"
 
@@ -5447,11 +5968,7 @@ msgstr "Erro na inserção do perfil remoto"
 msgid "Duplicate notice"
 msgstr "Duplicar a mensagem"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Você está proibido de assinar."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Não foi possível inserir a nova assinatura."
 
@@ -5467,19 +5984,19 @@ msgstr "Respostas"
 msgid "Favorites"
 msgstr "Favoritas"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Recebidas"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Suas mensagens recebidas"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Enviadas"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Suas mensagens enviadas"
 
@@ -5489,9 +6006,8 @@ msgid "Tags in %s's notices"
 msgstr "Etiquetas nas mensagens de %s"
 
 #: lib/plugin.php:114
-#, fuzzy
 msgid "Unknown"
-msgstr "Ação desconhecida"
+msgstr "Desconhecido"
 
 #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
 msgid "Subscriptions"
@@ -5557,6 +6073,10 @@ msgstr "Repetir esta mensagem?"
 msgid "Repeat this notice"
 msgstr "Repetir esta mensagem"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Nenhum usuário definido para o modo de usuário único."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Isolamento"
@@ -5624,34 +6144,6 @@ msgstr "Assinantes de %s"
 msgid "Groups %s is a member of"
 msgstr "Grupos dos quais %s é membro"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Já assinado!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "O usuário bloqueou você."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Não foi possível assinar."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Não foi possível fazer com que outros o assinem."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Não assinado!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Não foi possível excluir a auto-assinatura."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Não foi possível excluir a assinatura."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5702,67 +6194,67 @@ msgstr "Editar o avatar"
 msgid "User actions"
 msgstr "Ações do usuário"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Editar as configurações do perfil"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Editar"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Enviar uma mensagem para este usuário."
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Mensagem"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Moderar"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "alguns segundos atrás"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "cerca de 1 minuto atrás"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "cerca de %d minutos atrás"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "cerca de 1 hora atrás"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "cerca de %d horas atrás"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "cerca de 1 dia atrás"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "cerca de %d dias atrás"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "cerca de 1 mês atrás"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "cerca de %d meses atrás"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "cerca de 1 ano atrás"
 
@@ -5776,8 +6268,8 @@ msgstr "%s não é uma cor válida!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s não é uma cor válida! Utilize 3 ou 6 caracteres hexadecimais."
 
-#: scripts/xmppdaemon.php:301
-#, fuzzy, php-format
+#: lib/xmppmanager.php:402
+#, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
-"A mensagem é muito extensa - o máximo são %d caracteres e você enviou %d"
+"A mensagem é muito extensa - o máximo são %1$d caracteres e você enviou %2$d."
index f727147b965af2ee1916fbf37bf20fc9af984d29..d4df1a654898d1831d01362b6f618619c47aa8c6 100644 (file)
@@ -1,7 +1,9 @@
 # Translation of StatusNet to Russian
 #
 # Author@translatewiki.net: Brion
+# Author@translatewiki.net: Kirill
 # Author@translatewiki.net: Lockal
+# Author@translatewiki.net: Rubin
 # Author@translatewiki.net: Александр Сигачёв
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -10,18 +12,71 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:06+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:41+0000\n"
 "Language-Team: Russian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10< =4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Принять"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Настройки доступа к сайту"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Регистрация"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Личное"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Запретить анонимным (не авторизовавшимся) пользователям просматривать сайт?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Только по приглашениям"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Разрешить регистрацию только по приглашениям."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Закрыта"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Отключить новые регистрации."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Сохранить"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Сохранить настройки доступа"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -36,25 +91,29 @@ msgstr "Нет такой страницы"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Нет такого пользователя."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s и друзья, страница %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -100,7 +159,7 @@ msgstr ""
 "что-нибудь для привлечения его или её внимания](%%%%action.newnotice%%%%?"
 "status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -113,8 +172,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Вы и друзья"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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!"
@@ -124,23 +183,23 @@ msgstr "Обновлено от %1$s и его друзей на %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "Метод API не найден."
 
@@ -154,7 +213,7 @@ msgstr "Метод API не найден."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Этот метод требует POST."
 
@@ -183,8 +242,9 @@ msgstr "Не удаётся сохранить профиль."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -306,11 +366,11 @@ msgstr "Вы не можете перестать следовать за соб
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Надо представить два имени пользователя или кода."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Не удаётся определить исходного пользователя."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Не удаётся найти целевого пользователя."
 
@@ -333,7 +393,8 @@ msgstr "Такое имя уже используется. Попробуйте
 msgid "Not a valid nickname."
 msgstr "Неверное имя."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -345,7 +406,8 @@ msgstr "URL Главной страницы неверен."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Полное имя слишком длинное (не больше 255 знаков)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Слишком длинное описание (максимум %d символов)"
@@ -381,7 +443,7 @@ msgstr "Алиас не может совпадать с именем."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Группа не найдена!"
 
@@ -422,6 +484,115 @@ msgstr "Группы %s"
 msgid "groups on %s"
 msgstr "группы на %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Не задан параметр oauth_token."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Неправильный токен"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Неверное имя или пароль."
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Ошибка базы данных при удалении пользователя приложения OAuth."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Ошибка базы данных при добавлении пользователя приложения OAuth."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Ключ запроса %s авторизован. Пожалуйста, обменяйте его на ключ доступа."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Запрос токена %s был запрещен и аннулирован."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Нетиповое подтверждение формы."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Приложение хочет соединиться с вашей учётной записью"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Разрешить или запретить доступ"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Приложение <strong>%1$s</strong> от <strong>%2$s</strong> просит разрешение "
+"на<strong>%3$s</strong> данных вашей учётной записи%4$s . Вы должны "
+"предоставлять разрешение на доступ к вашей учётной записи %4$s только тем "
+"сторонним приложениям, которым вы доверяете."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Настройки"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Имя"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Пароль"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Запретить"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Разрешить"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Разрешить или запретить доступ к информации вашей учётной записи."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Этот метод требует POST или DELETE."
@@ -451,17 +622,17 @@ msgstr "Статус удалён."
 msgid "No status with that ID found."
 msgstr "Не найдено статуса с таким ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Слишком длинная запись. Максимальная длина — %d знаков."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Не найдено"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Максимальная длина записи — %d символов, включая URL вложения."
@@ -475,7 +646,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."
@@ -486,7 +657,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!"
@@ -502,27 +673,22 @@ 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 от всех!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Повторено %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Повторено для %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Повторы за %s"
@@ -532,7 +698,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!"
@@ -593,8 +759,8 @@ msgstr "Оригинал"
 msgid "Preview"
 msgstr "Просмотр"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Удалить"
 
@@ -606,29 +772,6 @@ msgstr "Загрузить"
 msgid "Crop"
 msgstr "Обрезать"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Нетиповое подтверждение формы."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Подберите нужный квадратный участок для вашей аватары"
@@ -667,8 +810,9 @@ msgstr ""
 "будет отписан от вас без возможности подписаться в будущем, а вам не будут "
 "приходить уведомления об @-ответах от него."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Нет"
 
@@ -676,13 +820,13 @@ msgstr "Нет"
 msgid "Do not block this user"
 msgstr "Не блокировать этого пользователя"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "Заблокировать пользователя."
 
@@ -765,7 +909,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Не удаётся удалить подверждение по электронному адресу."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Подтвердить адрес"
 
 #: actions/confirmaddress.php:159
@@ -782,10 +926,51 @@ msgstr "Дискуссия"
 msgid "Notices"
 msgstr "Записи"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Вы должны войти в систему, чтобы удалить приложение."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Приложение не найдено."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Вы не являетесь владельцем этого приложения."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Удалить приложение"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Вы уверены, что хотите удалить это приложение? Это очистит все данные о "
+"применении из базы данных, включая все существующие подключения "
+"пользователей."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не удаляйте это приложение"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Удалить это приложение"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -816,7 +1001,7 @@ msgstr "Вы уверены, что хотите удалить эту запи
 msgid "Do not delete this notice"
 msgstr "Не удалять эту запись"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Удалить эту запись"
 
@@ -948,16 +1133,6 @@ msgstr "Восстановить оформление по умолчанию"
 msgid "Reset back to default"
 msgstr "Восстановить значения по умолчанию"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Сохранить"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Сохранить оформление"
@@ -970,9 +1145,75 @@ msgstr "Эта запись не входит в число ваших люби
 msgid "Add to favorites"
 msgstr "Добавить в любимые"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Нет такого документа."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Нет такого документа «%s»"
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Изменить приложение"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Вы должны авторизоваться, чтобы изменить приложение."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Нет такого приложения."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Воспользуйтесь этой формой, чтобы изменить приложение."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Имя обязательно."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Имя слишком длинное (не больше 255 знаков)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Такое имя уже используется. Попробуйте какое-нибудь другое."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Описание обязательно."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "URL источника слишком длинный."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "URL источника недействителен."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Организация обязательна."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Слишком длинное название организации (максимум 255 знаков)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Домашняя страница организации обязательна."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Обратный вызов слишком длинный."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "URL-адрес обратного вызова недействителен."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Не удаётся обновить приложение."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -1001,7 +1242,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:433
 msgid "Could not create aliases."
 msgstr "Не удаётся создать алиасы."
 
@@ -1042,7 +1283,8 @@ msgstr ""
 "для спама!), там будут дальнейшие инструкции."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Отменить"
 
@@ -1132,7 +1374,7 @@ msgid "Cannot normalize that email address"
 msgstr "Не удаётся стандартизировать этот электронный адрес"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Неверный электронный адрес."
 
@@ -1144,7 +1386,7 @@ msgstr "Это уже Ваш электронный адрес."
 msgid "That email address already belongs to another user."
 msgstr "Этот электронный адрес уже задействован другим пользователем."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Не удаётся вставить код подтверждения."
@@ -1206,7 +1448,7 @@ msgstr "Эта запись уже входит в число любимых!"
 msgid "Disfavor favorite"
 msgstr "Разлюбить"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Популярные записи"
@@ -1354,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
 msgid "Block user from group"
 msgstr "Заблокировать пользователя из группы."
 
@@ -1452,23 +1694,23 @@ msgstr "Участники группы %1$s, страница %2$d"
 msgid "A list of the users in this group."
 msgstr "Список пользователей, являющихся членами этой группы."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "Сделать этого пользователя администратором"
 
@@ -1500,7 +1742,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"
@@ -1649,6 +1891,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Это не Ваш Jabber ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Входящие для %1$s — страница %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1657,7 +1904,8 @@ msgstr "Входящие для %s"
 #: actions/inbox.php:115
 msgid "This is your inbox, which lists your incoming private messages."
 msgstr ""
-"Это Ваши входящие сообщения, где перечислены входящие приватные сообщения."
+"Это ваш ящик входящих сообщений, в котором хранятся поступившие личные "
+"сообщения."
 
 #: actions/invite.php:39
 msgid "Invites have been disabled."
@@ -1714,7 +1962,7 @@ msgstr ""
 #: actions/invite.php:162
 msgid ""
 "Use this form to invite your friends and colleagues to use this service."
-msgstr "В этой форме ты можешь пригласить друзей и коллег на этот сервис."
+msgstr "В этой форме вы можете пригласить друзей и коллег на этот сервис."
 
 #: actions/invite.php:187
 msgid "Email addresses"
@@ -1722,7 +1970,7 @@ msgstr "Почтовый адрес"
 
 #: actions/invite.php:189
 msgid "Addresses of friends to invite (one per line)"
-msgstr "Адреса друзей, которых ты хочешь пригласить (по одному на строчку)"
+msgstr "Адреса друзей, которых вы хотите пригласить (по одному на строчку)"
 
 #: actions/invite.php:192
 msgid "Personal message"
@@ -1732,7 +1980,7 @@ msgstr "Личное сообщение"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Можно добавить к приглашению личное сообщение."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "ОК"
 
@@ -1832,7 +2080,7 @@ msgstr "Некорректное имя или пароль."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ошибка установки пользователя. Вы, вероятно, не авторизованы."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Вход"
@@ -1841,17 +2089,6 @@ msgstr "Вход"
 msgid "Login to site"
 msgstr "Авторизоваться"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Имя"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Пароль"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Запомнить меня"
@@ -1881,22 +2118,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."
@@ -1905,6 +2142,26 @@ msgstr "Невозможно сделать %1$s администратором
 msgid "No current status"
 msgstr "Нет текущего статуса"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Новое приложение"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Вы должны авторизоваться, чтобы зарегистрировать приложение."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Используйте эту форму для создания нового приложения."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "URL источника обязателен."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Не удаётся создать приложение."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Новая группа"
@@ -2017,6 +2274,48 @@ msgstr "«Подталкивание» послано"
 msgid "Nudge sent!"
 msgstr "«Подталкивание» отправлено!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Вы должны авторизоваться, чтобы просматривать свои приложения."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Приложения OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Приложения, которые вы зарегистрировали"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Вы пока не зарегистрировали ни одного приложения."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Подключённые приложения"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Вы разрешили доступ к учётной записи следующим приложениям."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Вы не являетесь пользователем этого приложения."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Не удаётся отозвать права для приложения: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Вы не разрешили приложениям использовать вашу учётную запись."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr "Разработчики могут изменять настройки регистрации своих приложений "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Запись без профиля"
@@ -2034,8 +2333,8 @@ msgstr "тип содержимого "
 msgid "Only "
 msgstr "Только "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Неподдерживаемый формат данных."
 
@@ -2048,7 +2347,7 @@ msgid "Notice Search"
 msgstr "Поиск в записях"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Другие настройки"
 
 #: actions/othersettings.php:71
@@ -2080,29 +2379,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr "Сервис сокращения URL слишком длинный (максимум 50 символов)."
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Ð\93Ñ\80Ñ\83ппа Ð½Ðµ Ð¾Ð¿Ñ\80еделена."
+msgstr "Ð\9dе Ñ\83казан Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Не указана запись."
+msgstr "Не указан ключ для входа."
 
 #: actions/otp.php:90
-#, fuzzy
 msgid "No login token requested."
-msgstr "Ð\9dеÑ\82 ID Ð¿Ñ\80оÑ\84илÑ\8f Ð² Ð·Ð°Ð¿Ñ\80оÑ\81е."
+msgstr "Ð\9aлÑ\8eÑ\87 Ð´Ð»Ñ\8f Ð²Ñ\85ода Ð½Ðµ Ð±Ñ\8bл Ð·Ð°Ð¿Ñ\80оÑ\88ен."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "Ð\9dевеÑ\80нÑ\8bй Ð¸Ð»Ð¸ Ñ\83Ñ\81Ñ\82аÑ\80евÑ\88ий ÐºÐ»Ñ\8eÑ\87."
+msgstr "Ð\97адан Ð½ÐµÐ²ÐµÑ\80нÑ\8bй ÐºÐ»Ñ\8eÑ\87 Ð´Ð»Ñ\8f Ð²Ñ\85ода."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "Авторизоваться"
+msgstr "Срок действия ключа для входа истёк."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Исходящие для %s — страница %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2176,7 +2475,7 @@ msgstr "Не удаётся сохранить новый пароль."
 msgid "Password saved."
 msgstr "Пароль сохранён."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Пути"
 
@@ -2184,132 +2483,148 @@ msgstr "Пути"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Настройки путей и серверов для этого сайта StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Директория тем недоступна для чтения: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Директория аватар не доступна для записи: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Директория фоновых изображений не доступна для записи: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Директория локализаций не доступна для чтения: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Неверный SSL-сервер. Максимальная длина составляет 255 символов."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Сайт"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Сервер"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Имя хоста сервера сайта."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Путь"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Путь к сайту"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Пусть к локализациям"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Путь к директории локализаций"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Короткие URL"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Использовать ли короткие (более читаемые и запоминаемые) URL-адреса?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Тема"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Сервер темы"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Путь темы"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Директория темы"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Аватары"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Сервер аватар"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Путь к аватарам"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Директория аватар"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Фоновые изображения"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Сервер фонового изображения"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Путь к фоновому изображению"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Директория фонового изображения"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Никогда"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Иногда"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Всегда"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Использовать SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Когда использовать SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-сервер"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Сервер, которому направлять SSL-запросы"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Сохранить пути"
 
@@ -2371,7 +2686,7 @@ msgid "Full name"
 msgstr "Полное имя"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Главная"
 
@@ -2394,7 +2709,7 @@ msgstr "Биография"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Месторасположение"
@@ -2420,7 +2735,7 @@ msgstr ""
 "Теги для самого себя (буквы, цифры, -, ., и _), разделенные запятой или "
 "пробелом"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Язык"
 
@@ -2446,7 +2761,7 @@ msgstr "Автоматически подписываться на всех, к
 msgid "Bio is too long (max %d chars)."
 msgstr "Слишком длинная биография (максимум %d символов)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Часовой пояс не выбран."
 
@@ -2459,23 +2774,23 @@ msgstr "Слишком длинный язык (более 50 символов).
 msgid "Invalid tag: \"%s\""
 msgstr "Неверный тег: «%s»"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Не удаётся обновить пользователя для автоподписки."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Не удаётся сохранить настройки местоположения."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Не удаётся сохранить профиль."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Не удаётся сохранить теги."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Настройки сохранены."
 
@@ -2497,30 +2812,30 @@ msgstr "Общая лента, страница %d"
 msgid "Public timeline"
 msgstr "Общая лента"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Лента публичного потока (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Лента публичного потока (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Лента публичного потока (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr "Это общая лента %%site.name%%, однако пока никто ничего не отправил."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Создайте первую запись!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2528,7 +2843,7 @@ msgstr ""
 "Почему бы не [зарегистрироваться](%%action.register%%), чтобы стать первым "
 "отправителем?"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2542,7 +2857,7 @@ msgstr ""
 "register%%), чтобы держать в курсе своих  событий  поклонников, друзей, "
 "родственников и коллег! ([Читать далее](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2580,7 +2895,7 @@ msgstr ""
 "Почему бы не [зарегистрироваться](%%action.register%%), чтобы отправить "
 "первым?"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Облако тегов"
 
@@ -2720,7 +3035,7 @@ msgstr "Извините, неверный пригласительный код
 msgid "Registration successful"
 msgstr "Регистрация успешна!"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистрация"
@@ -2767,7 +3082,7 @@ msgid "Same as password above. Required."
 msgstr "Тот же пароль что и сверху. Обязательное поле."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Email"
 
@@ -2872,7 +3187,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "Адрес URL твоего профиля на другом подходящем сервисе микроблогинга"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Подписаться"
 
@@ -2908,7 +3223,7 @@ msgstr "Вы не можете повторить собственную зап
 msgid "You already repeated that notice."
 msgstr "Вы уже повторили эту запись."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -2922,6 +3237,11 @@ msgstr "Повторено!"
 msgid "Replies to %s"
 msgstr "Ответы для %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Ответы для %1$s, страница %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2969,6 +3289,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Ответы на записи %1$s на %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2978,6 +3302,122 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr "Пользователь уже в режиме песочницы."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Сессии"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Настройки сессии для этого сайта StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Управление сессиями"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Управлять ли сессиями самостоятельно."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Отладка сессий"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Включить отладочный вывод для сессий."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Сохранить настройки сайта"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Вы должны авторизоваться, чтобы просматривать приложения."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Профиль приложения"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Иконка"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Имя"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Организация"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Описание"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Статистика"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Создано %1$s — доступ по умолчанию: %2$s — %3$d польз."
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Действия приложения"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Сбросить ключ и секретную фразу"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Информация о приложении"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Потребительский ключ"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Секретная фраза потребителя"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL ключа запроса"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL ключа доступа"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "URL авторизации"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Примечание: Мы поддерживаем подписи HMAC-SHA1. Мы не поддерживаем метод "
+"подписи открытым текстом."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+"Вы уверены, что хотите сбросить ваш ключ потребителя и секретную фразу?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Любимые записи %1$s, страница %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Не удаётся восстановить любимые записи."
@@ -3034,17 +3474,22 @@ msgstr "Это способ разделить то, что вам нравит
 msgid "%s group"
 msgstr "Группа %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Группа %1$s, страница %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Профиль группы"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Запись"
 
@@ -3090,10 +3535,6 @@ msgstr "(пока ничего нет)"
 msgid "All members"
 msgstr "Все участники"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Статистика"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Создано"
@@ -3158,6 +3599,11 @@ msgstr "Запись удалена."
 msgid " tagged %s"
 msgstr "  с тегом %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, страница %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3183,12 +3629,12 @@ msgstr "Лента записей для %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF для %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Это лента %1$s, однако %2$s пока ничего не отправил."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3196,7 +3642,7 @@ msgstr ""
 "Видели недавно что-нибудь интересное? Вы ещё не отправили ни одной записи, "
 "сейчас хорошее время  для начала :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3206,7 +3652,7 @@ msgstr ""
 "привлечения его или её внимания](%%%%action.newnotice%%%%?status_textarea=%2"
 "$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3221,7 +3667,7 @@ msgstr ""
 "сообщения  участника **%s** и иметь доступ ко множеству других возможностей! "
 "([Читать далее](%%%%doc.help%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3233,7 +3679,7 @@ msgstr ""
 "использованием свободного программного обеспечения [StatusNet](http://status."
 "net/)."
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Повтор за %s"
@@ -3250,199 +3696,146 @@ msgstr "Пользователь уже заглушён."
 msgid "Basic settings for this StatusNet site."
 msgstr "Основные настройки для этого сайта StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Имя сайта должно быть ненулевой длины."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "У вас должен быть действительный контактный email-адрес."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Неизвестный язык «%s»."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Неверный URL отчёта снимка."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Неверное значение запуска снимка."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Частота снимков должна быть числом."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Минимальное ограничение текста составляет 140 символов."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Ограничение дублирования должно составлять 1 или более секунд."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Базовые"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Имя сайта"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Имя вашего сайта, например, «Yourcompany Microblog»"
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Предоставлено"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 "Текст, используемый для указания авторов в нижнем колонтитуле каждой страницы"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "URL-адрес поставщика услуг"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 "URL, используемый для ссылки на авторов в нижнем колонтитуле каждой страницы"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Контактный email-адрес для вашего сайта"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Внутренние настройки"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Часовой пояс по умолчанию"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Часовой пояс по умолчанию для сайта; обычно UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Язык сайта по умолчанию"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL-адреса"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Сервер"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Имя хоста сервера сайта."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Короткие URL"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Использовать ли короткие (более читаемые и запоминаемые) URL-адреса?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Принять"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Личное"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Запретить анонимным (не авторизовавшимся) пользователям просматривать сайт?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Только по приглашениям"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Разрешить регистрацию только по приглашениям."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Закрыта"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Отключить новые регистрации."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Снимки"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "При случайном посещении"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "По заданному графику"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Снимки данных"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Когда отправлять статистические данные на сервера status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Частота"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Снимки будут отправляться каждые N посещений"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "URL отчёта"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Снимки будут отправляться по этому URL-адресу"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Границы"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Границы текста"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Максимальное число символов для записей."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Предел дубликатов"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Сколько нужно ждать пользователям (в секундах) для отправки того же ещё раз."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Сохранить настройки сайта"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Установки СМС"
@@ -3548,15 +3941,26 @@ msgstr "Код не введён"
 msgid "You are not subscribed to that profile."
 msgstr "Вы не подписаны на этот профиль."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Не удаётся сохранить подписку."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Не локальный пользователь."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Нет такого файла."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Вы не подписаны на этот профиль."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Подписано"
 
@@ -3620,7 +4024,7 @@ msgstr "Это пользователи, записи которых вы чит
 msgid "These are the people whose notices %s listens to."
 msgstr "Это пользователи, записи которых читает %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3636,19 +4040,24 @@ msgstr ""
 "пользуетесь [Твиттером](%%action.twittersettings%%), то можете автоматически "
 "подписаться на тех людей, за которыми уже следите там."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s не просматривает ничьи записи."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "СМС"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Записи с тегом %1$s, страница %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3677,7 +4086,8 @@ msgstr "Теги %s"
 msgid "User profile"
 msgstr "Профиль пользователя"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Фото"
 
@@ -3737,7 +4147,7 @@ msgstr "Нет ID профиля в запросе."
 msgid "Unsubscribed"
 msgstr "Отписано"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3753,85 +4163,65 @@ msgstr "Пользователь"
 msgid "User settings for this StatusNet site."
 msgstr "Пользовательские настройки для этого сайта StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Неверное ограничение биографии. Должно быть числом."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 "Неверный текст приветствия. Максимальная длина составляет 255 символов."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Неверная подписка по умолчанию: «%1$s» не является пользователем."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Профиль"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Ограничение биографии"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Максимальная длина биографии профиля в символах."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Новые пользователи"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Приветствие новым пользователям"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Текст приветствия для новых пользователей (максимум 255 символов)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Подписка по умолчанию"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Автоматически подписывать новых пользователей на этого пользователя."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Приглашения"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Приглашения включены"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Разрешать ли пользователям приглашать новых пользователей."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Сессии"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Управление сессиями"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Управлять ли сессиями самостоятельно."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Отладка сессий"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Включить отладочный вывод для сессий."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Авторизовать подписку"
@@ -3846,36 +4236,36 @@ msgstr ""
 "подписаться на записи этого пользователя. Если Вы этого не хотите делать, "
 "нажмите «Отказ»."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Лицензия"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Принять"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Подписаться на %s"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Отбросить"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Отвергнуть эту подписку"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Не авторизованный запрос!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Подписка авторизована"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3884,11 +4274,11 @@ msgstr ""
 "Подписка авторизована, но нет обратного URL. Посмотрите инструкции на сайте "
 "о том, как авторизовать подписку. Ваш ключ подписки:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Подписка отменена"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3897,37 +4287,37 @@ msgstr ""
 "Подписка отвергнута, но не бы передан URL обратного вызова. Проверьте "
 "инструкции на сайте, чтобы полностью отказаться от подписки."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "Смотрящий URI «%s» здесь не найден."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "Просматриваемый URI «%s» слишком длинный."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "Просматриваемый URI «%s» — локальный пользователь."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "URL профиля «%s» предназначен только для локального пользователя."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "URL аватары «%s» недействителен."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Не удаётся прочитать URL аватары «%s»"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Неверный тип изображения для URL аватары «%s»."
@@ -3948,6 +4338,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Приятного аппетита!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Группы %1$s, страница %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Искать другие группы"
@@ -3977,10 +4372,6 @@ msgstr ""
 "Этот сайт создан на основе %1$s версии %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. и участники."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Разработчики"
@@ -4022,11 +4413,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Плагины"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Имя"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Версия"
 
@@ -4034,10 +4421,6 @@ msgstr "Версия"
 msgid "Author(s)"
 msgstr "Автор(ы)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Описание"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4058,19 +4441,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "Файл такого размера превысит вашу месячную квоту в %d байта."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Ð\9fÑ\80оÑ\84илÑ\8c Ð³Ñ\80Ñ\83ппÑ\8b"
+msgstr "Ð\9dе Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ð¿Ñ\80иÑ\81оединиÑ\82Ñ\8cÑ\81Ñ\8f Ðº Ð³Ñ\80Ñ\83ппе."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Ð\9dе Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾ Ð³Ñ\80Ñ\83ппе."
+msgstr "Ð\9dе Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ñ\87аÑ\81Ñ\82Ñ\8cÑ\8e Ð³Ñ\80Ñ\83ппÑ\8b."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Ð\9fÑ\80оÑ\84илÑ\8c Ð³Ñ\80Ñ\83ппÑ\8b"
+msgstr "Ð\9dе Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ð¿Ð¾ÐºÐ¸Ð½Ñ\83Ñ\82Ñ\8c Ð³Ñ\80Ñ\83ппÑ\83."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4089,27 +4469,27 @@ msgstr "Не удаётся вставить сообщение."
 msgid "Could not update message with new URI."
 msgstr "Не удаётся обновить сообщение с новым URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Ошибка баз данных при вставке хеш-тегов для %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Проблемы с сохранением записи. Слишком длинно."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Проблема при сохранении записи. Неизвестный пользователь."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Слишком много записей за столь короткий срок; передохните немного и "
 "попробуйте вновь через пару минут."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4117,34 +4497,57 @@ msgstr ""
 "Слишком много одинаковых записей за столь короткий срок; передохните немного "
 "и попробуйте вновь через пару минут."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Вам запрещено поститься на этом сайте (бан)"
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Проблемы с сохранением записи."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Ошибка баз данных при вставке ответа для %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Проблемы с сохранением входящих сообщений группы."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Вы заблокированы от подписки."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Уже подписаны!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Пользователь заблокировал Вас."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Не подписаны!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Невозможно удалить самоподписку."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Не удаётся удалить подписку."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Добро пожаловать на %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Не удаётся создать группу."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Не удаётся назначить членство в группе."
 
@@ -4177,136 +4580,132 @@ msgid "Other options"
 msgstr "Другие опции"
 
 #: 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"
 msgstr "Страница без названия"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Главная навигация"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Моё"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Личный профиль и лента друзей"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Настройки"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Изменить ваш email, аватару, пароль, профиль"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Соединить"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Соединить с сервисами"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Изменить конфигурацию сайта"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Пригласить"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
-msgstr "Пригласи друзей и коллег стать такими же как ты участниками %s"
+msgstr "Пригласите друзей и коллег стать такими же как вы участниками %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Выход"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Выйти"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Создать новый аккаунт"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Войти"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Помощь"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Помощь"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Поиск"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Искать людей или текст"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Новая запись"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Локальные виды"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Новая запись"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Навигация по подпискам"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "О проекте"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "ЧаВо"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Пользовательское соглашение"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Исходный код"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Контактная информация"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Бедж"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet лицензия"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4315,50 +4714,75 @@ msgstr ""
 "**%%site.name%%** — это сервис микроблогинга, созданный для вас при помощи [%"
 "%site.broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** — сервис микроблогинга. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
 "s, available under the [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
-"Этот сервис работает при помощи [StatusNet](http://status.net/) - "
-"программного обеспечения для микроблогинга, версии %s, доступного под "
+"Этот сервис работает при помощи [StatusNet](http://status.net/)  "
+"пÑ\80огÑ\80аммного Ð¾Ð±ÐµÑ\81пеÑ\87ениÑ\8f Ð´Ð»Ñ\8f Ð¼Ð¸ÐºÑ\80облоггинга, Ð²ÐµÑ\80Ñ\81ии %s, Ð´Ð¾Ñ\81Ñ\82Ñ\83пного Ð¿Ð¾Ð´ "
 "лицензией [GNU Affero General Public License](http://www.fsf.org/licensing/"
 "licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Лицензия содержимого сайта"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Содержание и данные %1$s являются личными и конфиденциальными."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+"Авторские права на содержание и данные принадлежат %1$s. Все права защищены."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Авторские права на содержание и данные принадлежат разработчикам. Все права "
+"защищены."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "All "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "license."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Разбиение на страницы"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Сюда"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Туда"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4388,10 +4812,101 @@ msgstr "Основная конфигурация сайта"
 msgid "Design configuration"
 msgstr "Конфигурация оформления"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Конфигурация пользователя"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Конфигурация доступа"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Конфигурация путей"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Конфигурация сессий"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"API ресурса требует доступ для чтения и записи, но у вас есть только доступ "
+"для чтения."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"Неудачная попытка авторизации через API, nickname = %1$s, proxy = %2$s, ip = "
+"%3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Изменить приложение"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Иконка для этого приложения"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Опишите ваше приложение при помощи %d символов"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Опишите ваше приложение"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL источника"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL-адрес домашней страницы этого приложения"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Организация, ответственная за это приложение"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL-адрес домашней страницы организации"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL для перенаправления после проверки подлинности"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Браузер"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Операционная система"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Среда выполнения приложения: браузер или операционная система"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Только чтение"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Чтение и запись"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Доступ по умолчанию для этого приложения: только чтение или чтение и запись"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Отозвать"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Вложения"
@@ -4412,11 +4927,11 @@ msgstr "Сообщает, где появляется это вложение"
 msgid "Tags for this attachment"
 msgstr "Теги для этого вложения"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Изменение пароля не удалось"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Смена пароля не разрешена"
 
@@ -4567,83 +5082,93 @@ msgstr "Проблемы с сохранением записи."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Укажите имя пользователя для подписки."
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Нет такого пользователя."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Подписано на %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Укажите имя пользователя для отмены подписки."
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Отписано от %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Команда ещё не выполнена."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Оповещение отсутствует."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Нет оповещения."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Есть оповещение."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Есть оповещение."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Команда входа отключена"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr "Эта ссылка действительна только один раз в течение 2 минут: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Отписано от %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Вы ни на кого не подписаны."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Вы подписаны на этих людей:"
 msgstr[1] "Вы подписаны на этих людей:"
 msgstr[2] "Вы подписаны на этих людей:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Никто не подписан на вас."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Эти люди подписались на вас:"
 msgstr[1] "Эти люди подписались на вас:"
 msgstr[2] "Эти люди подписались на вас:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Вы не состоите ни в одной группе."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Вы являетесь участником следующих групп:"
 msgstr[1] "Вы являетесь участником следующих групп:"
 msgstr[2] "Вы являетесь участником следующих групп:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4657,6 +5182,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4721,19 +5247,19 @@ msgstr ""
 "tracks — пока не реализовано.\n"
 "tracking — пока не реализовано.\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Конфигурационный файл не найден. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Конфигурационные файлы искались в следующих местах: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Возможно, вы решите запустить установщик для исправления этого."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Перейти к установщику"
 
@@ -4749,6 +5275,14 @@ msgstr "Обновлено по IM"
 msgid "Updates by SMS"
 msgstr "Обновления по СМС"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Соединения"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Авторизованные соединённые приложения"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Ошибка базы данных"
@@ -4935,15 +5469,15 @@ msgstr "МБ"
 msgid "kB"
 msgstr "КБ"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Неизвестный язык «%s»."
+msgstr "Неизвестный источник входящих сообщений %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5221,7 +5755,7 @@ msgstr ""
 "вовлечения других пользователей в разговор. Сообщения, получаемые от других "
 "людей, видите только вы."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "от "
 
@@ -5335,62 +5869,59 @@ msgid "Share my location"
 msgstr "Поделиться своим местоположением."
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Не публиковать своё местоположение."
+msgstr "Не публиковать своё местоположение"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Скрыть эту информацию"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"К сожалению, получение информации о вашем местонахождении заняло больше "
+"времени, чем ожидалось; повторите попытку позже"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\" %4$s %5$u°%6$u'%7$u\" %8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "с. ш."
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "ю. ш."
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "в. д."
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "з. д."
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "на"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "в контексте"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Повторено"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Ответить на эту запись"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Ответить"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Запись повторена"
 
@@ -5422,11 +5953,7 @@ msgstr "Ошибка вставки удалённого профиля"
 msgid "Duplicate notice"
 msgstr "Дублировать запись"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Вы заблокированы от подписки."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Не удаётся вставить новую подписку."
 
@@ -5442,19 +5969,19 @@ msgstr "Ответы"
 msgid "Favorites"
 msgstr "Любимое"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Входящие"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Ваши входящие сообщения"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Исходящие"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Ваши исходящие сообщения"
 
@@ -5531,6 +6058,10 @@ msgstr "Повторить эту запись?"
 msgid "Repeat this notice"
 msgstr "Повторить эту запись"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Ни задан пользователь для однопользовательского режима."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Песочница"
@@ -5598,34 +6129,6 @@ msgstr "Люди подписанные на %s"
 msgid "Groups %s is a member of"
 msgstr "Группы, в которых состоит %s"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Уже подписаны!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Пользователь заблокировал Вас."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Подписка неудачна."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Не удаётся подписать других на вашу ленту."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Не подписаны!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Невозможно удалить самоподписку."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Не удаётся удалить подписку."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5676,67 +6179,67 @@ msgstr "Изменить аватару"
 msgid "User actions"
 msgstr "Действия пользователя"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Изменение настроек профиля"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Редактировать"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Послать приватное сообщение этому пользователю."
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Сообщение"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Модерировать"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "пару секунд назад"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "около минуты назад"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "около %d минут(ы) назад"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "около часа назад"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "около %d часа(ов) назад"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "около дня назад"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "около %d дня(ей) назад"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "около месяца назад"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "около %d месяца(ев) назад"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "около года назад"
 
@@ -5752,7 +6255,7 @@ msgstr ""
 "%s не является допустимым цветом! Используйте 3 или 6 шестнадцатеричных "
 "символов."
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index fb8fd0ad6b82751b8331d07d8a51d4f13081b77c..cf44e2d3c960111c3679c3283fb8a86b6278abe0 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,6 +17,58 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr ""
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr ""
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr ""
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr ""
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr ""
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr ""
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr ""
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -31,25 +83,29 @@ msgstr ""
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr ""
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr ""
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -90,7 +146,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -101,8 +157,8 @@ msgstr ""
 msgid "You and friends"
 msgstr ""
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -112,23 +168,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr ""
 
@@ -142,7 +198,7 @@ msgstr ""
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -171,8 +227,9 @@ msgstr ""
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -286,11 +343,11 @@ msgstr ""
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr ""
 
@@ -312,7 +369,8 @@ msgstr ""
 msgid "Not a valid nickname."
 msgstr ""
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -324,7 +382,8 @@ msgstr ""
 msgid "Full name is too long (max 255 chars)."
 msgstr ""
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr ""
@@ -360,7 +419,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr ""
 
@@ -401,6 +460,110 @@ msgstr ""
 msgid "groups on %s"
 msgstr ""
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr ""
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr ""
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr ""
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr ""
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr ""
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -430,17 +593,17 @@ msgstr ""
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -454,7 +617,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 ""
@@ -465,7 +628,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!"
@@ -481,27 +644,22 @@ 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr ""
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr ""
@@ -511,7 +669,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 ""
@@ -571,8 +729,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr ""
 
@@ -584,29 +742,6 @@ msgstr ""
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -642,8 +777,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr ""
 
@@ -651,13 +787,13 @@ msgstr ""
 msgid "Do not block this user"
 msgstr ""
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 ""
 
@@ -740,7 +876,7 @@ msgid "Couldn't delete email confirmation."
 msgstr ""
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr ""
 
 #: actions/confirmaddress.php:159
@@ -757,10 +893,48 @@ msgstr ""
 msgid "Notices"
 msgstr ""
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr ""
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr ""
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr ""
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr ""
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr ""
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr ""
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -789,7 +963,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr ""
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr ""
 
@@ -917,16 +1091,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr ""
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -939,8 +1103,74 @@ msgstr ""
 msgid "Add to favorites"
 msgstr ""
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr ""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr ""
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr ""
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr ""
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr ""
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr ""
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
 msgstr ""
 
 #: actions/editgroup.php:56
@@ -970,7 +1200,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:433
 msgid "Could not create aliases."
 msgstr ""
 
@@ -1009,7 +1239,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr ""
 
@@ -1089,7 +1320,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr ""
 
@@ -1101,7 +1332,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr ""
@@ -1160,7 +1391,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr ""
@@ -1302,7 +1533,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 ""
 
@@ -1393,23 +1624,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1568,6 +1799,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr ""
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1644,7 +1880,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr ""
 
@@ -1718,7 +1954,7 @@ msgstr ""
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr ""
@@ -1727,17 +1963,6 @@ msgstr ""
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr ""
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr ""
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr ""
@@ -1763,21 +1988,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 ""
@@ -1786,6 +2011,26 @@ msgstr ""
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr ""
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr ""
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1890,6 +2135,48 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1907,8 +2194,8 @@ msgstr ""
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -1921,7 +2208,7 @@ msgid "Notice Search"
 msgstr ""
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr ""
 
 #: actions/othersettings.php:71
@@ -1972,6 +2259,11 @@ msgstr ""
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2042,7 +2334,7 @@ msgstr ""
 msgid "Password saved."
 msgstr ""
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2050,132 +2342,148 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr ""
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr ""
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr ""
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr ""
 
@@ -2233,7 +2541,7 @@ msgid "Full name"
 msgstr ""
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr ""
 
@@ -2256,7 +2564,7 @@ msgstr ""
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr ""
@@ -2280,7 +2588,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr ""
 
@@ -2306,7 +2614,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2319,23 +2627,23 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr ""
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr ""
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr ""
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr ""
 
@@ -2357,36 +2665,36 @@ msgstr ""
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2395,7 +2703,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2428,7 +2736,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2564,7 +2872,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2604,7 +2912,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr ""
 
@@ -2688,7 +2996,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr ""
 
@@ -2724,7 +3032,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr ""
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr ""
 
@@ -2738,6 +3046,11 @@ msgstr ""
 msgid "Replies to %s"
 msgstr ""
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr ""
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2779,6 +3092,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr ""
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr ""
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr ""
@@ -2787,27 +3104,140 @@ msgstr ""
 msgid "User is already sandboxed."
 msgstr ""
 
-#: actions/showfavorites.php:132
-msgid "Could not retrieve favorite notices."
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
 msgstr ""
 
-#: actions/showfavorites.php:170
-#, php-format
-msgid "Feed for favorites of %s (RSS 1.0)"
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
 msgstr ""
 
-#: actions/showfavorites.php:177
-#, php-format
-msgid "Feed for favorites of %s (RSS 2.0)"
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
 msgstr ""
 
-#: actions/showfavorites.php:184
-#, php-format
-msgid "Feed for favorites of %s (Atom)"
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
 msgstr ""
 
-#: actions/showfavorites.php:205
-msgid ""
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr ""
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr ""
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr ""
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr ""
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr ""
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr ""
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr ""
+
+#: actions/showfavorites.php:170
+#, php-format
+msgid "Feed for favorites of %s (RSS 1.0)"
+msgstr ""
+
+#: actions/showfavorites.php:177
+#, php-format
+msgid "Feed for favorites of %s (RSS 2.0)"
+msgstr ""
+
+#: actions/showfavorites.php:184
+#, php-format
+msgid "Feed for favorites of %s (Atom)"
+msgstr ""
+
+#: actions/showfavorites.php:205
+msgid ""
 "You haven't chosen any favorite notices yet. Click the fave button on "
 "notices you like to bookmark them for later or shed a spotlight on them."
 msgstr ""
@@ -2836,17 +3266,22 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr ""
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr ""
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -2892,10 +3327,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr ""
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr ""
@@ -2950,6 +3381,11 @@ msgstr ""
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr ""
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -2975,25 +3411,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3002,7 +3438,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3010,7 +3446,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr ""
@@ -3027,195 +3463,143 @@ msgstr ""
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr ""
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr ""
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr ""
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr ""
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr ""
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr ""
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr ""
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr ""
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr ""
@@ -3312,15 +3696,24 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr ""
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+msgid "No such profile."
 msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr ""
 
@@ -3380,7 +3773,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3390,19 +3783,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr ""
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr ""
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3431,7 +3829,8 @@ msgstr ""
 msgid "User profile"
 msgstr ""
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3486,7 +3885,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr ""
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3501,84 +3900,64 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr ""
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr ""
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr ""
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr ""
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr ""
@@ -3590,84 +3969,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr ""
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr ""
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr ""
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr ""
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr ""
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr ""
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3686,6 +4065,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr ""
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3712,10 +4096,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr ""
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3747,11 +4127,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-msgid "Name"
-msgstr ""
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr ""
 
@@ -3759,10 +4135,6 @@ msgstr ""
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr ""
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3809,58 +4181,81 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr ""
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr ""
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
 msgstr ""
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr ""
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr ""
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr ""
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr ""
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr ""
 
@@ -3901,140 +4296,136 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr ""
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr ""
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr ""
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr ""
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr ""
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr ""
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr ""
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4042,32 +4433,54 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4098,10 +4511,96 @@ msgstr ""
 msgid "Design configuration"
 msgstr ""
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr ""
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr ""
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr ""
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr ""
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr ""
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr ""
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr ""
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr ""
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4122,11 +4621,11 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr ""
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr ""
 
@@ -4274,80 +4773,89 @@ msgstr ""
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr ""
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, php-format
+msgid "Unsubscribed  %s"
+msgstr ""
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr ""
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr ""
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr ""
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4361,6 +4869,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4388,19 +4897,19 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr ""
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4416,6 +4925,14 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr ""
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4598,12 +5115,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -4798,7 +5315,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr ""
 
@@ -4913,57 +5430,53 @@ msgid "Do not share my location"
 msgstr ""
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr ""
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr ""
 
@@ -4995,11 +5508,7 @@ msgstr ""
 msgid "Duplicate notice"
 msgstr ""
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr ""
 
@@ -5015,19 +5524,19 @@ msgstr ""
 msgid "Favorites"
 msgstr ""
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5104,6 +5613,10 @@ msgstr ""
 msgid "Repeat this notice"
 msgstr ""
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5171,34 +5684,6 @@ msgstr ""
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr ""
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr ""
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr ""
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5249,67 +5734,67 @@ msgstr ""
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr ""
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr ""
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr ""
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr ""
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr ""
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr ""
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr ""
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr ""
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr ""
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr ""
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr ""
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr ""
 
@@ -5323,7 +5808,7 @@ msgstr ""
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index aab154cafddc68e45c5d02be8ab7bb9ad7395546..b09823e6bef52d96c6a41f1150b91b68c4362b07 100644 (file)
@@ -9,17 +9,70 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:09+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:44+0000\n"
 "Language-Team: Swedish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Åtkomst"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Inställningar för webbplatsåtkomst"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Registrering"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Privat"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Skall anonyma användare (inte inloggade) förhindras från att se webbplatsen?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Endast inbjudan"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Gör så att registrering endast sker genom inbjudan."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Stängd"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Inaktivera nya registreringar."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Spara"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Spara inställningar för åtkomst"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -34,25 +87,29 @@ msgstr "Ingen sådan sida"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Ingen sådan användare."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s och vänner, sida %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -77,7 +134,7 @@ msgstr "Flöden för %ss vänner (Atom)"
 #, php-format
 msgid ""
 "This is the timeline for %s and friends but no one has posted anything yet."
-msgstr "Detta är tidslinjen för %s och vänner men ingen har postat något än."
+msgstr "Detta är tidslinjen för %s och vänner, men ingen har skrivit något än."
 
 #: actions/all.php:132
 #, php-format
@@ -86,33 +143,33 @@ msgid ""
 "something yourself."
 msgstr ""
 "Prova att prenumerera på fler personer, [gå med i en grupp](%%action.groups%"
-"%) eller posta något själv."
+"%) eller skriv något själv."
 
 #: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Du kan prova att [knuffa %s](../%s) från dennes profil eller [posta "
+"Du kan prova att [knuffa %1$s](../%2$s) från dennes profil eller [skriva "
 "någonting för hans eller hennes uppmärksamhet](%%%%action.newnotice%%%%?"
-"status_textarea=%s)."
+"status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
 "post a notice to his or her attention."
 msgstr ""
 "Varför inte [registrera ett konto](%%%%action.register%%%%) och sedan knuffa "
-"%s eller posta en notis för hans eller hennes uppmärksamhet."
+"%s eller skriva en notis för hans eller hennes uppmärksamhet."
 
 #: actions/all.php:165
 msgid "You and friends"
 msgstr "Du och vänner"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "Uppdateringar från %1$s och vänner på %2$s!"
@@ -122,25 +179,25 @@ msgstr "Uppdateringar från %1$s och vänner på %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
-msgstr "API-metoden hittades inte"
+msgstr "API-metod hittades inte."
 
 #: actions/apiaccountupdatedeliverydevice.php:85
 #: actions/apiaccountupdateprofile.php:89
@@ -152,7 +209,7 @@ msgstr "API-metoden hittades inte"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Denna metod kräver en POST."
 
@@ -181,8 +238,9 @@ msgstr "Kunde inte spara profil."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -222,7 +280,7 @@ msgstr "Hävning av blockering av användare misslyckades."
 #: actions/apidirectmessage.php:89
 #, php-format
 msgid "Direct messages from %s"
-msgstr "Direktmeddelande från %s"
+msgstr "Direktmeddelanden från %s"
 
 #: actions/apidirectmessage.php:93
 #, php-format
@@ -262,18 +320,16 @@ msgid "No status found with that ID."
 msgstr "Ingen status hittad med det ID:t."
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 msgid "This status is already a favorite."
-msgstr "Denna status är redan en favorit!"
+msgstr "Denna status är redan en favorit."
 
 #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
 msgid "Could not create favorite."
 msgstr "Kunde inte skapa favorit."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "Denna status är inte en favorit!"
+msgstr "Denna status är inte en favorit."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -293,21 +349,20 @@ msgid "Could not unfollow user: User not found."
 msgstr "Kunde inte sluta följa användaren: användaren hittades inte."
 
 #: actions/apifriendshipsdestroy.php:120
-#, fuzzy
 msgid "You cannot unfollow yourself."
-msgstr "Du kan inte sluta följa dig själv!"
+msgstr "Du kan inte sluta följa dig själv."
 
 #: actions/apifriendshipsexists.php:94
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Två användar-ID:n eller screen_names måste tillhandahållas."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
-msgstr ""
+msgstr "Kunde inte fastställa användare hos källan."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
-msgstr ""
+msgstr "Kunde inte hitta målanvändare."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
 #: actions/newgroup.php:126 actions/profilesettings.php:215
@@ -328,7 +383,8 @@ msgstr "Smeknamnet används redan. Försök med ett annat."
 msgid "Not a valid nickname."
 msgstr "Inte ett giltigt smeknamn."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -340,10 +396,11 @@ msgstr "Hemsida är inte en giltig URL."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Fullständigt namn är för långt (max 255 tecken)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
-msgstr "Beskrivning är för lång (max 140 tecken)"
+msgstr "Beskrivning är för lång (max 140 tecken)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
 #: actions/newgroup.php:148 actions/profilesettings.php:232
@@ -376,7 +433,7 @@ msgstr "Alias kan inte vara samma som smeknamn."
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Grupp hittades inte!"
 
@@ -389,18 +446,18 @@ msgid "You have been blocked from that group by the admin."
 msgstr "Du har blivit blockerad från denna grupp av administratören."
 
 #: 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 "Kunde inte ansluta användare % till grupp %s."
+msgstr "Kunde inte ansluta användare %1$s till grupp %2$s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
 msgstr "Du är inte en medlem i denna grupp."
 
 #: 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 "Kunde inte ta bort användare %s från grupp %s."
+msgstr "Kunde inte ta bort användare %1$s från grupp %2$s."
 
 #: actions/apigrouplist.php:95
 #, php-format
@@ -417,6 +474,113 @@ msgstr "%s grupper"
 msgid "groups on %s"
 msgstr "grupper på %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Ingen oauth_token-parameter angiven."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Ogiltig token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Det var ett problem med din sessions-token. Var vänlig försök igen."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Ogiltigt smeknamn / lösenord!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Databasfel vid borttagning av OAuth-applikationsanvändare."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Databasfel vid infogning av OAuth-applikationsanvändare."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr "Begäran-token %s har godkänts. Byt ut den mot en åtkomst-token."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Begäran-token %s har nekats och återkallats."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Oväntat inskick av formulär."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "En applikation skulle vilja ansluta till ditt konto"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Tillåt eller neka åtkomst"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Applikationen <strong>%1$s</strong> av <strong>%2$s</strong> vill att "
+"möjligheten att <strong>%3$s</strong> din %4$s kontoinformation. Du bör bara "
+"ge tillgång till ditt %4$s-konto till tredje-parter du litar på."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Smeknamn"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Lösenord"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Neka"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Tillåt"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Tillåt eller neka åtkomst till din kontoinformation."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Denna metod kräver en POST eller en DELETE."
@@ -446,34 +610,34 @@ msgstr "Status borttagen."
 msgid "No status with that ID found."
 msgstr "Ingen status med det ID:t hittades."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Det är för långt. Maximal notisstorlek är %d tecken."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Hittades inte"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
-msgstr "Maximal notisstorlek är %d tecken, inklusive bilage-URL."
+msgstr "Maximal notisstorlek är %d tecken, inklusive URL för bilaga."
 
 #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
 msgid "Unsupported format."
 msgstr "Format som inte stödjs."
 
 #: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Favorites from %2$s"
-msgstr "%s / Favoriter från %s"
+msgstr "%1$s / Favoriter från %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 uppdateringar markerade som favorit av %s / %s."
+msgstr "%1$s uppdateringar markerade som favorit av %2$s / %2$s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -481,7 +645,7 @@ msgstr "%s uppdateringar markerade som favorit av %s / %s."
 msgid "%s timeline"
 msgstr "%s tidslinje"
 
-#: 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!"
@@ -497,27 +661,22 @@ msgstr "%1$s / Uppdateringar som nämner %2$s"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "%1$s uppdateringar med svar på uppdatering från %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 publika tidslinje"
 
-#: 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 uppdateringar från alla!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Upprepat av %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Upprepat till %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Upprepningar av %s"
@@ -527,7 +686,7 @@ msgstr "Upprepningar av %s"
 msgid "Notices tagged with %s"
 msgstr "Notiser taggade med %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 "Uppdateringar taggade med %1$s på %2$s!"
@@ -588,8 +747,8 @@ msgstr "Orginal"
 msgid "Preview"
 msgstr "Förhandsgranska"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Ta bort"
 
@@ -601,29 +760,6 @@ msgstr "Ladda upp"
 msgid "Crop"
 msgstr "Beskär"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Det var ett problem med din sessions-token. Var vänlig försök igen."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Oväntat inskick av formulär."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Välj ett kvadratiskt område i bilden som din avatar"
@@ -662,8 +798,9 @@ msgstr ""
 "prenumeration på dig tas bort, de kommer inte kunna prenumerera på dig i "
 "framtiden och du kommer inte bli underrättad om några @-svar från dem."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Nej"
 
@@ -671,13 +808,13 @@ msgstr "Nej"
 msgid "Do not block this user"
 msgstr "Blockera inte denna användare"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
 
@@ -701,9 +838,9 @@ msgid "%s blocked profiles"
 msgstr "%s blockerade profiler"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s blocked profiles, page %2$d"
-msgstr "%s blockerade profiler, sida %d"
+msgstr "%1$s blockerade profiler, sida %2$d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
@@ -761,7 +898,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Kunde inte ta bort e-postbekräftelse."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Bekräfta adress"
 
 #: actions/confirmaddress.php:159
@@ -778,10 +915,51 @@ msgstr "Konversationer"
 msgid "Notices"
 msgstr "Notiser"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Du måste vara inloggad för att ta bort en applikation."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Applikation hittades inte."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Du är inte ägaren av denna applikation."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Det var ett problem med din sessions-token."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Ta bort applikation"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Är du säker på att du vill ta bort denna applikation? Detta kommer rensa "
+"bort all data om applikationen från databasen, inklusive alla befintliga "
+"användaranslutningar."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Ta inte bort denna applikation"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Ta bort denna applikation"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -812,7 +990,7 @@ msgstr "Är du säker på att du vill ta bort denna notis?"
 msgid "Do not delete this notice"
 msgstr "Ta inte bort denna notis"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Ta bort denna notis"
 
@@ -944,16 +1122,6 @@ msgstr "Återställ standardutseende"
 msgid "Reset back to default"
 msgstr "Återställ till standardvärde"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Spara"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Spara utseende"
@@ -966,9 +1134,75 @@ msgstr "Denna notis är inte en favorit!"
 msgid "Add to favorites"
 msgstr "Lägg till i favoriter"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Inget sådant dokument."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Inget sådant dokument \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Redigera applikation"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Du måste vara inloggad för att redigera en applikation."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Ingen sådan applikation."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Använd detta formulär för att redigera din applikation."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Namn krävs."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Namnet är för långt (max 255 tecken)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Namnet används redan. Prova ett annat."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Beskrivning krävs."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "URL till källa är för lång."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "URL till källa är inte giltig."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organisation krävs."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Organisation är för lång (max 255 tecken)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Hemsida för organisation krävs."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Anrop är för lång."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "URL för anrop är inte giltig."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Kunde inte uppdatera applikation."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -981,9 +1215,8 @@ msgstr "Du måste vara inloggad för att skapa en grupp."
 
 #: 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 "Du måste vara inloggad för att redigera gruppen"
+msgstr "Du måste vara en administratör för att redigera gruppen."
 
 #: actions/editgroup.php:154
 msgid "Use this form to edit the group."
@@ -998,7 +1231,7 @@ msgstr "beskrivning är för lång (max %d tecken)."
 msgid "Could not update group."
 msgstr "Kunde inte uppdatera grupp."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "Kunde inte skapa alias."
 
@@ -1007,7 +1240,6 @@ msgid "Options saved."
 msgstr "Alternativ sparade."
 
 #: actions/emailsettings.php:60
-#, fuzzy
 msgid "Email settings"
 msgstr "E-postinställningar"
 
@@ -1040,14 +1272,14 @@ msgstr ""
 "skräppostkorg!) efter ett meddelande med vidare instruktioner."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Avbryt"
 
 #: actions/emailsettings.php:121
-#, fuzzy
 msgid "Email address"
-msgstr "E-postadresser"
+msgstr "E-postadress"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
@@ -1122,19 +1354,19 @@ msgid "Cannot normalize that email address"
 msgstr "Kan inte normalisera den e-postadressen"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Inte en giltig e-postadress."
 
 #: actions/emailsettings.php:334
 msgid "That is already your email address."
-msgstr "Detta är redan din e-postadress."
+msgstr "Det är redan din e-postadress."
 
 #: actions/emailsettings.php:337
 msgid "That email address already belongs to another user."
 msgstr "Den e-postadressen tillhör redan en annan användare."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Kunde inte infoga bekräftelsekod."
@@ -1164,7 +1396,7 @@ msgstr "Bekräftelse avbruten."
 
 #: actions/emailsettings.php:413
 msgid "That is not your email address."
-msgstr "Detta är inte din e-postadress."
+msgstr "Det är inte din e-postadress."
 
 #: actions/emailsettings.php:432 actions/imsettings.php:408
 #: actions/smssettings.php:425
@@ -1196,7 +1428,7 @@ msgstr "Denna notis är redan en favorit!"
 msgid "Disfavor favorite"
 msgstr "Ta bort märkning som favorit"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Populära notiser"
@@ -1221,8 +1453,8 @@ msgid ""
 "Be the first to add a notice to your favorites by clicking the fave button "
 "next to any notice you like."
 msgstr ""
-"Bli först att lägga en notis till dina favoriter genom att klicka på favorit-"
-"knappen bredvid någon notis du gillar."
+"Var den första att lägga en notis till dina favoriter genom att klicka på "
+"favorit-knappen bredvid någon notis du gillar."
 
 #: actions/favorited.php:156
 #, php-format
@@ -1230,8 +1462,8 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to add a "
 "notice to your favorites!"
 msgstr ""
-"Varför inte [registrera ett konto](%%action.register%%) och bli först att "
-"lägga en notis till dina favoriter!"
+"Varför inte [registrera ett konto](%%action.register%%) och vara först med "
+"att lägga en notis till dina favoriter!"
 
 #: actions/favoritesrss.php:111 actions/showfavorites.php:77
 #: lib/personalgroupnav.php:115
@@ -1297,7 +1529,7 @@ msgstr "Du har inte tillstånd."
 
 #: actions/finishremotesubscribe.php:113
 msgid "Could not convert request token to access token."
-msgstr "Kunde inte konvertera förfrågnings-token till access-token."
+msgstr "Kunde inte konvertera token för begäran till token för åtkomst."
 
 #: actions/finishremotesubscribe.php:118
 msgid "Remote service uses unknown version of OMB protocol."
@@ -1344,20 +1576,20 @@ 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"
 
 #: actions/groupblock.php:162
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
-"Är du säker på att du vill blockera användare \"%s\" från gruppen \"%s\"? De "
-"kommer bli borttagna från gruppen, inte kunna posta och inte kunna "
-"prenumerera på gruppen i framtiden."
+"Är du säker på att du vill blockera användare \"%1$s\" från gruppen \"%2$s"
+"\"? De kommer bli borttagna från gruppen, inte kunna skriva till och inte "
+"kunna prenumerera på gruppen i framtiden."
 
 #: actions/groupblock.php:178
 msgid "Do not block this user from this group"
@@ -1412,9 +1644,8 @@ msgstr ""
 "s."
 
 #: actions/grouplogo.php:178
-#, fuzzy
 msgid "User without matching profile."
-msgstr "Användare utan matchande profil"
+msgstr "Användare utan matchande profil."
 
 #: actions/grouplogo.php:362
 msgid "Pick a square area of the image to be the logo."
@@ -1434,31 +1665,31 @@ msgid "%s group members"
 msgstr "%s gruppmedlemmar"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "%s gruppmedlemmar, sida %d"
+msgstr "%1$s gruppmedlemmar, sida %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "En lista av användarna i denna grupp."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
 
@@ -1486,9 +1717,9 @@ msgid ""
 "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
 "%%%%)"
 msgstr ""
-"%%%%site.name%%%% grupper låter dig hitta och prata med personer med "
+"%%%%site.name%%%% grupper låter dig hitta och samtala med personer med "
 "liknande intressen. Efter att ha gått med i en grupp kan du skicka "
-"meddelanden till alla andra medlemmar mha. syntaxen \"!gruppnamn\". Ser du "
+"meddelanden till alla andra medlemmar mha syntaxen \"!gruppnamn\". Ser du "
 "inte någon grupp du gillar? Prova att [söka efter en](%%%%action.groupsearch%"
 "%%%) eller [starta din egen!](%%%%action.newgroup%%%%)"
 
@@ -1546,9 +1777,8 @@ msgid "Error removing the block."
 msgstr "Fel vid hävning av blockering."
 
 #: actions/imsettings.php:59
-#, fuzzy
 msgid "IM settings"
-msgstr "IM-inställningar"
+msgstr "Inställningar för snabbmeddelanden"
 
 #: actions/imsettings.php:70
 #, php-format
@@ -1556,7 +1786,7 @@ msgid ""
 "You can send and receive notices through Jabber/GTalk [instant messages](%%"
 "doc.im%%). Configure your address and settings below."
 msgstr ""
-"Du kan skicka och ta emot notiser genom Jabber/GTalk [snabbmeddelanden](%%"
+"Du kan skicka och ta emot notiser genom Jabber/GTalk-[snabbmeddelanden](%%"
 "doc.im%%). Konfigurera din adress och dina inställningar nedan."
 
 #: actions/imsettings.php:89
@@ -1573,13 +1803,12 @@ msgid ""
 "Awaiting confirmation on this address. Check your Jabber/GTalk account for a "
 "message with further instructions. (Did you add %s to your buddy list?)"
 msgstr ""
-"Väntar bekräftelse av denna adress. Kontrollera ditt Jabber/GTalk-konto för "
-"vidare instruktioner. (La du till %s i din kompislista?)"
+"Väntar på bekräftelse för denna adress. Kontrollera ditt Jabber/GTalk-konto "
+"för vidare instruktioner. (La du till %s i din kompislista?)"
 
 #: actions/imsettings.php:124
-#, fuzzy
 msgid "IM address"
-msgstr "IM-adress"
+msgstr "Adress för snabbmeddelanden"
 
 #: actions/imsettings.php:126
 #, php-format
@@ -1587,8 +1816,8 @@ msgid ""
 "Jabber or GTalk address, like \"UserName@example.org\". First, make sure to "
 "add %s to your buddy list in your IM client or on GTalk."
 msgstr ""
-"Jabber- eller GTalk-adress liknande \"användarnamn@example.org\". Se först "
-"till att lägga till %s i din kompislista i din IM-klient eller hos GTalk."
+"Jabber- eller GTalk-adress, som \"användarnamn@example.org\". Se först till "
+"att lägga till %s i din kompislista i din IM-klient eller hos GTalk."
 
 #: actions/imsettings.php:143
 msgid "Send me notices through Jabber/GTalk."
@@ -1634,13 +1863,18 @@ msgid ""
 "A confirmation code was sent to the IM address you added. You must approve %"
 "s for sending messages to you."
 msgstr ""
-"En bekräftelsekod har skickats till den IM-adress du angav. Du måste "
-"godkänna att %s får skicka meddelanden till dig."
+"En bekräftelsekod skickades till den IM-adress du angav. Du måste godkänna "
+"att %s får skicka meddelanden till dig."
 
 #: actions/imsettings.php:387
 msgid "That is not your Jabber ID."
 msgstr "Detta är inte ditt Jabber-ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Inkorg för %1$s - sida %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1705,8 +1939,8 @@ msgstr ""
 msgid ""
 "Use this form to invite your friends and colleagues to use this service."
 msgstr ""
-"Använd detta formulär för att bjuda in dina vänner och kollegor till denna "
-"webbplats."
+"Använd detta formulär för att bjuda in dina vänner och kollegor att använda "
+"denna tjänst."
 
 #: actions/invite.php:187
 msgid "Email addresses"
@@ -1724,7 +1958,7 @@ msgstr "Personligt meddelande"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Om du vill, skriv ett personligt meddelande till inbjudan."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Skicka"
 
@@ -1763,15 +1997,41 @@ msgid ""
 "\n"
 "Sincerely, %2$s\n"
 msgstr ""
+"%1$s har bjudit in dig till dem på %2$s (%3$s).\n"
+"\n"
+"%2$s är en mikrobloggtjänst som låter dig hålla dig uppdaterad med folk du "
+"känner och folk som intresserar dig . \n"
+"\n"
+"Du kan också dela nyheter om dig själv, dina tankar, eller ditt liv online "
+"med folk som känner till dig. Det är också bra för att träffa nya människor "
+"som delar dina intressen.\n"
+"\n"
+"%1$s sa:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Du kan se %1$ss profilsida på %2$s här: \n"
+"\n"
+"%5$s\n"
+"\n"
+"Om du vill prova tjänsten, klicka på länken nedan för att acceptera "
+"inbjudan. \n"
+"\n"
+"%6$s\n"
+"\n"
+"Om inte, kan du bortse från detta meddelande. Tack för ditt tålamod och din "
+"tid\n"
+"\n"
+"Vänliga hälsningar, %2$s\n"
 
 #: actions/joingroup.php:60
 msgid "You must be logged in to join a group."
 msgstr "Du måste vara inloggad för att kunna gå med i en grupp."
 
 #: actions/joingroup.php:131
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s joined group %2$s"
-msgstr "%s gick med i grupp %s"
+msgstr "%1$s gick med i grupp %2$s"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
@@ -1782,9 +2042,9 @@ msgid "You are not a member of that group."
 msgstr "Du är inte en medlem i den gruppen."
 
 #: actions/leavegroup.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s left group %2$s"
-msgstr "%s lämnade grupp %s"
+msgstr "%1$s lämnade grupp %2$s"
 
 #: actions/login.php:80 actions/otp.php:62 actions/register.php:137
 msgid "Already logged in."
@@ -1798,7 +2058,7 @@ msgstr "Felaktigt användarnamn eller lösenord."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Fel vid inställning av användare. Du har sannolikt inte tillstånd."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logga in"
@@ -1807,17 +2067,6 @@ msgstr "Logga in"
 msgid "Login to site"
 msgstr "Logga in på webbplatsen"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Smeknamn"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Lösenord"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Kom ihåg mig"
@@ -1847,29 +2096,49 @@ 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
-#, fuzzy, php-format
+#: actions/makeadmin.php:96
+#, php-format
 msgid "%1$s is already an admin for group \"%2$s\"."
-msgstr "%s är redan en administratör för grupp \"%s\"."
+msgstr "%1$s är redan en administratör för grupp \"%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 "Kan inte hämta uppgift om medlemskap för %s i grupp %s"
+msgstr "Kan inte hämta uppgift om medlemskap för %1$s i grupp %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 "Kan inte göra %s till en administratör för grupp %s"
+msgstr "Kan inte göra %1$s till en administratör för grupp %2$s."
 
 #: actions/microsummary.php:69
 msgid "No current status"
 msgstr "Ingen aktuell status"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Ny applikation"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Du måste vara inloggad för att registrera en applikation."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Använd detta formulär för att registrera en ny applikation."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "URL till källa krävs."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Kunde inte skapa applikation."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Ny grupp"
@@ -1907,9 +2176,9 @@ msgid "Message sent"
 msgstr "Meddelande skickat"
 
 #: actions/newmessage.php:185
-#, fuzzy, php-format
+#, php-format
 msgid "Direct message to %s sent."
-msgstr "Direktmeddelande till %s skickat"
+msgstr "Direktmeddelande till %s skickat."
 
 #: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
@@ -1937,9 +2206,9 @@ msgid "Text search"
 msgstr "Textsökning"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%1$s\" on %2$s"
-msgstr "Sökresultat för \"%s\" på %s"
+msgstr "Sökresultat för \"%1$s\" på %2$s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -1947,8 +2216,8 @@ msgid ""
 "Be the first to [post on this topic](%%%%action.newnotice%%%%?"
 "status_textarea=%s)!"
 msgstr ""
-"Bli först att [posta i detta ämne](%%%%action.newnotice%%%%?status_textarea=%"
-"s)!"
+"Var den första att [skriva i detta ämne](%%%%action.newnotice%%%%?"
+"status_textarea=%s)!"
 
 #: actions/noticesearch.php:124
 #, php-format
@@ -1956,8 +2225,8 @@ msgid ""
 "Why not [register an account](%%%%action.register%%%%) and be the first to "
 "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
 msgstr ""
-"Varför inte [registrera ett konto](%%%%action.register%%%%) och bli först "
-"att [posta i detta ämne](%%%%action.newnotice%%%%?status_textarea=%s)!"
+"Varför inte [registrera ett konto](%%%%action.register%%%%) och vara först "
+"med att [skriva i detta ämne](%%%%action.newnotice%%%%?status_textarea=%s)!"
 
 #: actions/noticesearchrss.php:96
 #, php-format
@@ -1984,6 +2253,49 @@ msgstr "Knuff sänd"
 msgid "Nudge sent!"
 msgstr "Knuff sänd!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Du måste vara inloggad för att lista dina applikationer."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "OAuth-applikationer"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Applikationer du har registrerat"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Du har inte registrerat några applikationer än."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Anslutna applikationer"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr "Du har tillåtit följande applikationer att komma åt ditt konto."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Du är inte en användare av den applikationen."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Kunde inte återkalla åtkomst för applikation: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Du har inte tillåtit några applikationer att använda ditt konto."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+"Utvecklare kan redigera registreringsinställningarna för sina applikationer "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Notisen har ingen profil"
@@ -2001,8 +2313,8 @@ msgstr "innehållstyp "
 msgid "Only "
 msgstr "Bara "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Ett dataformat som inte stödjs"
 
@@ -2015,7 +2327,7 @@ msgid "Notice Search"
 msgstr "Notissökning"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Övriga inställningar"
 
 #: actions/othersettings.php:71
@@ -2047,29 +2359,29 @@ msgid "URL shortening service is too long (max 50 chars)."
 msgstr "Namnet på URL-förkortningstjänsen är för långt (max 50 tecken)."
 
 #: actions/otp.php:69
-#, fuzzy
 msgid "No user ID specified."
-msgstr "Ingen grupp angiven."
+msgstr "Ingen användar-ID angiven."
 
 #: actions/otp.php:83
-#, fuzzy
 msgid "No login token specified."
-msgstr "Ingen notis angiven."
+msgstr "Ingen inloggnings-token angiven."
 
 #: actions/otp.php:90
-#, fuzzy
 msgid "No login token requested."
-msgstr "Ingen profil-ID i begäran."
+msgstr "Ingen token för inloggning begärd."
 
 #: actions/otp.php:95
-#, fuzzy
 msgid "Invalid login token specified."
-msgstr "Ogiltig eller utgången token."
+msgstr "Ogiltig inloggnings-token angiven."
 
 #: actions/otp.php:104
-#, fuzzy
 msgid "Login token expired."
-msgstr "Logga in på webbplatsen"
+msgstr "Inloggnings-token förfallen."
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Utkorg för %1$s - sida %2$d"
 
 #: actions/outbox.php:61
 #, php-format
@@ -2141,7 +2453,7 @@ msgstr "Kan inte spara nytt lösenord."
 msgid "Password saved."
 msgstr "Lösenord sparat."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Sökvägar"
 
@@ -2149,133 +2461,149 @@ msgstr "Sökvägar"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Sökvägs- och serverinställningar för denna StatusNet-webbplats."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Katalog med teman är inte läsbar: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Katalog med avatarer är inte skrivbar: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Katalog med bakgrunder är inte skrivbar: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Katalog med lokaliseringfiler (locales) är inte läsbar. %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Ogiltigt SSL-servernamn. Den maximala längden är 255 tecken."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Webbplats"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Server"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Värdnamn för webbplatsens server."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Sökväg"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Sökväg till webbplats"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Sökväg till lokaliseringfiler (locales)"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Katalogsökväg till lokaliseringfiler (locales)"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Utsmyckade URL:er"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+"Skall utsmyckade URL:er användas (mer läsbara och lättare att komma ihåg)?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Teman"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Server med teman"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Sökväg till teman"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Katalog med teman"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Avatarer"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Server med avatarer"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Sökväg till avatarer"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Katalog med avatarer"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Bakgrunder"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Server med bakgrunder"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Sökväg till bakgrunder"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Katalog med bakgrunder"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Aldrig"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Ibland"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Alltid"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Använd SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "När SSL skall användas"
 
-#: actions/pathsadminpanel.php:308
-#, fuzzy
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-server"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
-msgstr "Server att dirigera SSL-förfrågningar till"
+msgstr "Server att dirigera SSL-begäran till"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Spara sökvägar"
 
@@ -2298,18 +2626,18 @@ msgid "Not a valid people tag: %s"
 msgstr "Inte en giltig persontagg: %s"
 
 #: actions/peopletag.php:144
-#, fuzzy, php-format
+#, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
-msgstr "Användare som taggat sig själv med %s - sida %d"
+msgstr "Användare som taggat sig själv med %1$s - sida %2$d"
 
 #: actions/postnotice.php:84
 msgid "Invalid notice content"
 msgstr "Ogiltigt notisinnehåll"
 
 #: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
-msgstr "Licensen för notiser ‘%s’ är inte förenlig webbplatslicensen ‘%s’."
+msgstr "Licensen för notiser ‘%1$s’ är inte förenlig webbplatslicensen ‘%2$s’."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2319,8 +2647,8 @@ msgstr "Profilinställningar"
 msgid ""
 "You can update your personal profile info here so people know more about you."
 msgstr ""
-"Du kan uppdatera din personliga profilinformation här så personer får veta "
-"mer om dig."
+"Du kan uppdatera din personliga profilinformation här så att folk vet mer om "
+"dig."
 
 #: actions/profilesettings.php:99
 msgid "Profile information"
@@ -2337,7 +2665,7 @@ msgid "Full name"
 msgstr "Fullständigt namn"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Hemsida"
 
@@ -2360,7 +2688,7 @@ msgstr "Biografi"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Plats"
@@ -2386,7 +2714,7 @@ msgstr ""
 "Taggar för dig själv (bokstäver, nummer, -, ., och _), separerade med "
 "kommatecken eller mellanslag"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Språk"
 
@@ -2406,14 +2734,15 @@ msgstr "I vilken tidszon befinner du dig normalt?"
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
-"Prenumerera automatiskt på den prenumererar på mig (bäst för icke-människa) "
+"Prenumerera automatiskt på den som prenumererar på mig (bäst för icke-"
+"människa) "
 
 #: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Biografin är för lång (max %d tecken)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Tidszon inte valt."
 
@@ -2426,23 +2755,23 @@ msgstr "Språknamn är för långt (max 50 tecken)."
 msgid "Invalid tag: \"%s\""
 msgstr "Ogiltig tagg: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Kunde inte uppdatera användaren för automatisk prenumeration."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Kunde inte spara platsinställningar."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Kunde inte spara profil."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Kunde inte spara taggar."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Inställningar sparade."
 
@@ -2464,19 +2793,19 @@ msgstr "Publik tidslinje, sida %d"
 msgid "Public timeline"
 msgstr "Publik tidslinje"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Publikt flöde av ström (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Publikt flöde av ström (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Publikt flöde av ström (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2485,11 +2814,11 @@ msgstr ""
 "Detta är den publika tidslinjen för %%site.name%% men ingen har postat något "
 "än."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Bli först att posta!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2497,7 +2826,7 @@ msgstr ""
 "Varför inte [registrera ett konto](%%action.register%%) och bli först att "
 "posta!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2505,20 +2834,20 @@ msgid ""
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
-"Detta är %%site.name%%, en [mikroblogg](http://en.wikipedia.org/wiki/Micro-"
-"blogging)-tjänst baserad på den fria programvaran [StatusNet](http://status."
+"Detta är %%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 dela notiser om dig själv "
 "med vänner, familj och kollegor! ([Läs mer](%%doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
 "blogging) service based on the Free Software [StatusNet](http://status.net/) "
 "tool."
 msgstr ""
-"Detta är %%site.name%%, en [mikroblogg](http://en.wikipedia.org/wiki/Micro-"
-"blogging)-tjänst baserad på den fria programvaran [StatusNet](http://status."
+"Detta är %%site.name%%, en [mikroblogg](http://sv.wikipedia.org/wiki/"
+"Mikroblogg)tjänst baserad på den fria programvaran [StatusNet](http://status."
 "net/)."
 
 #: actions/publictagcloud.php:57
@@ -2548,7 +2877,7 @@ msgstr ""
 "Varför inte [registrera ett konto](%%action.register%%) och bli först att "
 "posta en!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Taggmoln"
 
@@ -2679,17 +3008,17 @@ msgstr "Nya lösenordet sparat. Du är nu inloggad."
 
 #: actions/register.php:85 actions/register.php:189 actions/register.php:405
 msgid "Sorry, only invited people can register."
-msgstr "Ledsen, bara inbjudna personer kan registrera sig."
+msgstr "Tyvärr, bara inbjudna personer kan registrera sig."
 
 #: actions/register.php:92
 msgid "Sorry, invalid invitation code."
-msgstr "Ledsen, ogiltig inbjudningskod."
+msgstr "Tyvärr, ogiltig inbjudningskod."
 
 #: actions/register.php:112
 msgid "Registration successful"
 msgstr "Registreringen genomförd"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrera"
@@ -2733,7 +3062,7 @@ msgid "Same as password above. Required."
 msgstr "Samma som lösenordet ovan. Måste fyllas i."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "E-post"
 
@@ -2781,6 +3110,20 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
+"Grattis, %1$s! Och välkommen till %%%%site.name%%%%. Härifrån kan du...\n"
+"\n"
+"* Gå till [din profil](%2$s) och skicka ditt första meddelande.\n"
+"* Lägg till en [Jabber/GTalk-adress](%%%%action.imsettings%%%%) så att du "
+"kan skicka notiser via snabbmeddelanden.\n"
+"* [Söka efter personer](%%%%action.peoplesearch%%%%) som du kanske känner "
+"eller som delar dina intressen.  \n"
+"* Uppdatera dina [profilinställningar](%%%%action.profilesettings%%%%) för "
+"att berätta mer om dig.  \n"
+"* Läs igenom [online-dokumentationen](%%%%doc.help%%%%) för funktioner du "
+"kan ha missat.  \n"
+"\n"
+"Tack för att du anmält dig och vi hoppas att du kommer tycka om att använda "
+"denna tjänst."
 
 #: actions/register.php:562
 msgid ""
@@ -2827,7 +3170,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL till din profil på en annan kompatibel mikrobloggtjänst"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Prenumerera"
 
@@ -2847,7 +3190,7 @@ msgstr "Det där är en lokal profil! Logga in för att prenumerera."
 
 #: actions/remotesubscribe.php:183
 msgid "Couldn’t get a request token."
-msgstr "Kunde inte få en förfrågnings-token."
+msgstr "Kunde inte få en token för begäran."
 
 #: actions/repeat.php:57
 msgid "Only logged-in users can repeat notices."
@@ -2865,7 +3208,7 @@ msgstr "Du kan inte upprepa din egna notis."
 msgid "You already repeated that notice."
 msgstr "Du har redan upprepat denna notis."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Upprepad"
 
@@ -2879,6 +3222,11 @@ msgstr "Upprepad!"
 msgid "Replies to %s"
 msgstr "Svarat till %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Svar till %1$s, sida %2$s"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2895,12 +3243,12 @@ msgid "Replies feed for %s (Atom)"
 msgstr "Flöde med svar för %s (Atom)"
 
 #: actions/replies.php:198
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "This is the timeline showing replies to %1$s but %2$s hasn't received a "
 "notice to his attention yet."
 msgstr ""
-"Detta är tidslinjen som visar svar till %s men %s har inte tagit emot en "
+"Detta är tidslinjen som visar svar till %s1$ men %2$s har inte tagit emot en "
 "notis för dennes uppmärksamhet än."
 
 #: actions/replies.php:203
@@ -2913,19 +3261,23 @@ msgstr ""
 "personer eller [gå med i grupper](%%action.groups%%)."
 
 #: actions/replies.php:205
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "You can try to [nudge %1$s](../%2$s) or [post something to his or her "
 "attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
-"Du kan prova att [knuffa %s](../%s) eller [posta någonting för hans eller "
-"hennes uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%s)."
+"Du kan prova att [knuffa %1$s](../%2$s) eller [posta någonting för hans "
+"eller hennes uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 
 #: actions/repliesrss.php:72
 #, php-format
 msgid "Replies to %1$s on %2$s!"
 msgstr "Svar till %1$s på %2$s"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Du kan inte flytta användare till sandlådan på denna webbplats."
@@ -2934,6 +3286,122 @@ msgstr "Du kan inte flytta användare till sandlådan på denna webbplats."
 msgid "User is already sandboxed."
 msgstr "Användare är redan flyttad till sandlådan."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Sessioner"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Sessionsinställningar för denna StatusNet-webbplats."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Hantera sessioner"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Hurvida sessioner skall hanteras av oss själva."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Sessionsfelsökning"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Sätt på felsökningsutdata för sessioner."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Spara webbplatsinställningar"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Du måste vara inloggad för att se en applikation."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Applikationsprofil"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Ikon"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Namn"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Organisation"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Beskrivning"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Statistik"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Skapad av %1$s - %2$s standardåtkomst - %3$d användare"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Åtgärder för applikation"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Återställ nyckel & hemlighet"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Information om applikation"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Nyckel för konsument"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Hemlighet för konsument"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL för begäran-token"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL för åtkomst-token"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Tillåt URL"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"Notera: Vi stöjder HMAC-SHA1-signaturer. Vi stödjer inte metoden med "
+"klartextsignatur."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+"Är du säker på att du vill återställa din konsumentnyckel och -hemlighet?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%1$ss favoritnotiser, sida %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Kunde inte hämta favoritnotiser."
@@ -2958,6 +3426,9 @@ msgid ""
 "You haven't chosen any favorite notices yet. Click the fave button on "
 "notices you like to bookmark them for later or shed a spotlight on them."
 msgstr ""
+"Du har inte valt några favoritnotiser ännu. Klicka på favorit-knappen "
+"bredvid någon notis du skulle vilja bokmärka för senare tillfälle eller för "
+"att sätta strålkastarljuset på."
 
 #: actions/showfavorites.php:207
 #, php-format
@@ -2965,6 +3436,8 @@ msgid ""
 "%s hasn't added any notices to his favorites yet. Post something interesting "
 "they would add to their favorites :)"
 msgstr ""
+"%s har inte lagt till några notiser till sina favoriter ännu. Posta något "
+"intressant de skulle lägga till sina favoriter :)"
 
 #: actions/showfavorites.php:211
 #, php-format
@@ -2973,27 +3446,35 @@ msgid ""
 "account](%%%%action.register%%%%) and then post something interesting they "
 "would add to their favorites :)"
 msgstr ""
+"%s har inte lagt till några notiser till sina favoriter ännu. Varför inte "
+"[registrera ett konto](%%%%action.register%%%%) och posta något intressant "
+"de skulle lägga till sina favoriter :)"
 
 #: actions/showfavorites.php:242
 msgid "This is a way to share what you like."
-msgstr "Detta är ett sätt att dela vad du gillar."
+msgstr "Detta är ett sätt att dela med av det du gillar."
 
 #: actions/showgroup.php:82 lib/groupnav.php:86
 #, php-format
 msgid "%s group"
 msgstr "%s grupp"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s grupp, sida %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Grupprofil"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Notis"
 
@@ -3003,7 +3484,7 @@ msgstr "Alias"
 
 #: actions/showgroup.php:293
 msgid "Group actions"
-msgstr "Gruppåtgärder"
+msgstr "Åtgärder för grupp"
 
 #: actions/showgroup.php:328
 #, php-format
@@ -3039,10 +3520,6 @@ msgstr "(Ingen)"
 msgid "All members"
 msgstr "Alla medlemmar"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Statistik"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Skapad"
@@ -3056,8 +3533,8 @@ msgid ""
 "their life and interests. [Join now](%%%%action.register%%%%) to become part "
 "of this group and many more! ([Read more](%%%%doc.help%%%%))"
 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. [Gå med nu](%%%%action.register%%%%) för att bli en "
 "del av denna grupp och många fler! ([Läs mer](%%%%doc.help%%%%))"
@@ -3070,8 +3547,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. "
 
@@ -3106,10 +3583,15 @@ msgstr "Notis borttagen."
 msgid " tagged %s"
 msgstr "taggade %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, sida %2$d"
+
 #: actions/showstream.php:122
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
-msgstr "Flöde av notiser för %s taggade %s (RSS 1.0)"
+msgstr "Flöde av notiser för %1$s taggade %2$s (RSS 1.0)"
 
 #: actions/showstream.php:129
 #, php-format
@@ -3131,12 +3613,12 @@ msgstr "Flöde av notiser för %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF för %s"
 
-#: actions/showstream.php:191
-#, fuzzy, php-format
+#: actions/showstream.php:200
+#, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
-msgstr "Detta är tidslinjen för %s men %s har inte postat något än."
+msgstr "Detta är tidslinjen för %1$s men %2$s har inte postat något än."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3144,16 +3626,16 @@ msgstr ""
 "Sett något intressant nyligen? Du har inte postat några notiser än. Varför "
 "inte börja nu?"
 
-#: actions/showstream.php:198
-#, fuzzy, php-format
+#: actions/showstream.php:207
+#, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
-"Du kan prova att knuffa %s eller [posta något för hans eller hennes "
-"uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%s)."
+"Du kan prova att knuffa %1$s eller [posta något för hans eller hennes "
+"uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3161,23 +3643,23 @@ 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%%%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
 "wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
-"**%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:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Upprepning av %s"
@@ -3194,208 +3676,152 @@ msgstr "Användaren är redan nedtystad."
 msgid "Basic settings for this StatusNet site."
 msgstr "Grundinställningar för din StatusNet-webbplats"
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Webbplatsnamnet måste vara minst ett tecken långt."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
-msgstr "Du måste ha en giltig kontakte-postadress"
+msgstr "Du måste ha en giltig e-postadress."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "Okänt språk \"%s\""
+msgstr "Okänt språk \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Ogiltig rapport-URL för ögonblicksbild"
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Ogiltigt körvärde för ögonblicksbild."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Frekvens för ögonblicksbilder måste vara ett nummer."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Minsta textbegränsning är 140 tecken."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr "Begränsning av duplikat måste vara en eller fler sekuner."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Allmänt"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Webbplatsnamn"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Namnet på din webbplats, t.ex.  \"Företagsnamn mikroblogg\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Tillhandahållen av"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Text som används för tillskrivningslänkar i sidfoten på varje sida."
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "Tillhandahållen av URL"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL som används för tillskrivningslänkar i sidfoten på varje sida"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Kontakte-postadress för din webbplats"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Lokal"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Standardtidszon"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Standardtidzon för denna webbplats; vanligtvis UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Webbplatsens standardspråk"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL:er"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Server"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Värdnamn för webbplatsens server."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Utsmyckade URL:er"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-"Skall utsmyckade URL:er användas (mer läsbara och lättare att komma ihåg)?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Åtkomst"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Privat"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Skall anonyma användare (inte inloggade) förhindras från att se webbplatsen?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Endast inbjudan"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Gör så att registrering endast sker genom inbjudan."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Stängd"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Inaktivera nya registreringar."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Ögonblicksbild"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Slumpmässigt vid webbförfrågningar"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "I ett schemalagt jobb"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Ögonblicksbild av data"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "När statistikdata skall skickas till status.net-servrar"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Frekvens"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Ögonblicksbild kommer skickas var N:te webbträff"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
-msgstr "Rapport-URL"
+msgstr "URL för rapport"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Ögonblicksbild kommer skickat till denna URL"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Begränsningar"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Textbegränsning"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Maximala antalet tecken för notiser."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Duplikatbegränsning"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Hur länge användare måste vänta (i sekunder) för att posta samma sak igen."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Spara webbplatsinställningar"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
-msgstr "SMS-inställningar"
+msgstr "Inställningar för SMS"
 
 #: actions/smssettings.php:69
 #, php-format
 msgid "You can receive SMS messages through email from %%site.name%%."
-msgstr "Du kan ta emot SMS-meddelande genom e-post från %%site.name%%."
+msgstr "Du kan ta emot SMS-meddelanden genom e-post från %%site.name%%."
 
 #: actions/smssettings.php:91
 msgid "SMS is not available."
@@ -3418,7 +3844,6 @@ msgid "Enter the code you received on your phone."
 msgstr "Fyll i koden du mottog i din telefon."
 
 #: actions/smssettings.php:138
-#, fuzzy
 msgid "SMS phone number"
 msgstr "Telefonnummer för SMS"
 
@@ -3492,15 +3917,26 @@ msgstr "Ingen kod ifylld"
 msgid "You are not subscribed to that profile."
 msgstr "Du är inte prenumerat hos den profilen."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Kunde inte spara prenumeration."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Inte en lokal användare."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Ingen sådan fil."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Du är inte prenumerat hos den profilen."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Prenumerant"
 
@@ -3510,9 +3946,9 @@ msgid "%s subscribers"
 msgstr "%s prenumeranter"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "%s prenumeranter, sida %d"
+msgstr "%1$s prenumeranter, sida %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3551,20 +3987,20 @@ msgid "%s subscriptions"
 msgstr "%s prenumerationer"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "%s prenumerationer, sida %d"
+msgstr "%1$s prenumerationer, sida %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
-msgstr "Dessa är de personer vars notiser du lyssnar på."
+msgstr "Det är dessa personer vars meddelanden du lyssnar på."
 
 #: actions/subscriptions.php:69
 #, php-format
 msgid "These are the people whose notices %s listens to."
-msgstr "Dessa är de personer vars notiser %s lyssnar på."
+msgstr "Det är dessa personer vars notiser %s lyssnar på."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3573,20 +4009,31 @@ msgid ""
 "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
 "automatically subscribe to people you already follow there."
 msgstr ""
+"Du lyssnar inte på någons notiser just nu. Prova att prenumerera på personer "
+"du känner. Prova [personsökning] (%%action.peoplesearch%%), leta bland "
+"medlemmar i grupper som intresserad dig och bland våra [profilerade "
+"användare] (%%action.featured%%). Om du är en [Twitter-användare] (%%action."
+"twittersettings%%) kan du prenumerera automatiskt på personer som du redan "
+"följer där."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s lyssnar inte på någon."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Notiser taggade med %1$s, sida %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3615,7 +4062,8 @@ msgstr "Tagg %s"
 msgid "User profile"
 msgstr "Användarprofil"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Foto"
 
@@ -3675,13 +4123,13 @@ msgstr "Ingen profil-ID i begäran."
 msgid "Unsubscribed"
 msgstr "Prenumeration avslutad"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
-#, fuzzy, php-format
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
+#, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
-"Licensen för lyssnarströmmen '%s' är inte förenlig med webbplatslicensen '%"
-"s'."
+"Licensen för lyssnarströmmen '%1$s' är inte förenlig med webbplatslicensen '%"
+"2$s'."
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
 #: lib/personalgroupnav.php:115
@@ -3692,86 +4140,66 @@ msgstr "Användare"
 msgid "User settings for this StatusNet site."
 msgstr "Användarinställningar för denna StatusNet-webbplats"
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Ogiltig begränsning av biografi. Måste vara numerisk."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Ogiltig välkomsttext. Maximal längd är 255 tecken."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Ogiltig standardprenumeration: '%1$s' är inte användare."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Begränsning av biografi"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Maximal teckenlängd av profilbiografi."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Nya användare"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Välkomnande av ny användare"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Välkomsttext för nya användare (max 255 tecken)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Standardprenumerationer"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 "Lägg automatiskt till en prenumeration på denna användare för alla nya "
 "användare."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Inbjudningar"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Inbjudningar aktiverade"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "Hurvida användare skall tillåtas bjuda in nya användare."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Sessioner"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Hantera sessioner"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Hurvida sessioner skall hanteras av oss själva."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Sessionsfelsökning"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Sätt på felsökningsutdata för sessioner."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Godkänn prenumeration"
@@ -3786,50 +4214,50 @@ msgstr ""
 "prenumerera på den här användarens notiser. Om du inte bett att prenumerera "
 "på någons meddelanden, klicka på \"Avvisa\"."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Licens"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Acceptera"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Prenumerera på denna användare"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Avvisa"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Avvisa denna prenumeration"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
-msgstr "Ingen auktoriseringsförfrågan!"
+msgstr "Ingen begäran om godkännande!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Prenumeration godkänd"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
-"Prenumerationen har blivit bekräftad, men ingen URL har gått igenom. Kolla "
+"Prenumerationen har godkänts, men ingen anrops-URL har gått igenom. Kolla "
 "med webbplatsens instruktioner hur du bekräftar en prenumeration. Din "
 "prenumerations-token är:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Prenumeration avvisad"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3839,37 +4267,37 @@ msgstr ""
 "webbplatsens instruktioner för detaljer om hur du fullständingt avvisar "
 "prenumerationen."
 
-#: actions/userauthorization.php:296
-#, fuzzy, php-format
+#: actions/userauthorization.php:303
+#, php-format
 msgid "Listener URI ‘%s’ not found here."
-msgstr "Lyssnar-URI '%s' hittades inte här"
+msgstr "URI för lyssnare '%s' hittades inte här."
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "Lyssnar-URI '%s' är för lång."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "Lyssnar-URI '%s' är en lokal användare."
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "Profil-URL ‘%s’ är för en lokal användare."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "Avatar-URL ‘%s’ är inte giltig."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Kan inte läsa avatar-URL '%s'."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Fel bildtyp för avatar-URL '%s'."
@@ -3889,6 +4317,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Smaklig måltid!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s grupper, sida %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Sök efter fler grupper"
@@ -3905,9 +4338,9 @@ msgstr ""
 "Prova att [söka efter grupper](%%action.groupsearch%%) och gå med i dem."
 
 #: actions/version.php:73
-#, fuzzy, php-format
+#, php-format
 msgid "StatusNet %s"
-msgstr "Statistik"
+msgstr "StatusNet %s"
 
 #: actions/version.php:153
 #, php-format
@@ -3915,15 +4348,12 @@ msgid ""
 "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
 "Inc. and contributors."
 msgstr ""
-
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status borttagen."
+"Denna webbplats drivs med %1$s version %2$s, Copyright 2008-2010 StatusNet, "
+"Inc. och medarbetare."
 
 #: actions/version.php:161
 msgid "Contributors"
-msgstr ""
+msgstr "Medarbetare"
 
 #: actions/version.php:168
 msgid ""
@@ -3932,6 +4362,10 @@ msgid ""
 "Software Foundation, either version 3 of the License, or (at your option) "
 "any later version. "
 msgstr ""
+"StatusNet är fri programvara: du kan distribuera det och/eller modifiera den "
+"under GNU Affero General Public License såsom publicerad av Free Software "
+"Foundation, antingen version 3 av licensen, eller (utifrån ditt val) någon "
+"senare version. "
 
 #: actions/version.php:174
 msgid ""
@@ -3940,6 +4374,10 @@ msgid ""
 "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License "
 "for more details. "
 msgstr ""
+"Detta program distribueras i hopp om att det kommer att vara användbart, men "
+"UTAN NÅGRA GARANTIER; även utan underförstådda garantier om SÄLJBARHET eller "
+"LÄMPLIGHET FÖR ETT SÄRSKILT ÄNDAMÅL. Se GNU Affero General Public License "
+"för mer information. "
 
 #: actions/version.php:180
 #, php-format
@@ -3947,30 +4385,21 @@ msgid ""
 "You should have received a copy of the GNU Affero General Public License "
 "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."
 
 #: actions/version.php:189
 msgid "Plugins"
-msgstr ""
-
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Smeknamn"
+msgstr "Insticksmoduler"
 
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "Sessioner"
+msgstr "Version"
 
 #: actions/version.php:197
-#, fuzzy
 msgid "Author(s)"
 msgstr "Författare"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Beskrivning"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3991,19 +4420,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "En sådan här stor fil skulle överskrida din månatliga kvot på %d byte."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Grupprofil"
+msgstr "Gruppanslutning misslyckades."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Kunde inte uppdatera grupp."
+msgstr "Inte med i grupp."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Grupprofil"
+msgstr "Grupputträde misslyckades."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4022,27 +4448,27 @@ msgstr "Kunde inte infoga meddelande."
 msgid "Could not update message with new URI."
 msgstr "Kunde inte uppdatera meddelande med ny URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Databasfel vid infogning av hashtag: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Problem vid sparande av notis. För långt."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Problem vid sparande av notis. Okänd användare."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "För många notiser för snabbt; ta en vilopaus och posta igen om ett par "
 "minuter."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4050,34 +4476,57 @@ msgstr ""
 "För många duplicerade meddelanden för snabbt; ta en vilopaus och posta igen "
 "om ett par minuter."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Du är utestängd från att posta notiser på denna webbplats."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Problem med att spara notis."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Databasfel vid infogning av svar: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Problem med att spara gruppinkorg."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Du har blivit utestängd från att prenumerera."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Redan prenumerant!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Användaren har blockerat dig."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Inte prenumerant!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Kunde inte ta bort själv-prenumeration."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Kunde inte ta bort prenumeration."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Välkommen till %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Kunde inte skapa grupp."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Kunde inte ställa in gruppmedlemskap."
 
@@ -4110,196 +4559,214 @@ msgid "Other options"
 msgstr "Övriga alternativ"
 
 #: 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"
 msgstr "Namnlös sida"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Primär webbplatsnavigation"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Hem"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Personlig profil och vänners tidslinje"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Konto"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Ändra din e-post, avatar, lösenord, profil"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Anslut"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "Anslut till tjänster"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Ändra webbplatskonfiguration"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Bjud in"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Bjud in vänner och kollegor att gå med dig på %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Logga ut"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Logga ut från webbplatsen"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Skapa ett konto"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Logga in på webbplatsen"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hjälp"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Hjälp mig!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Sök"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Sök efter personer eller text"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Webbplatsnotis"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Lokala vyer"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Sidnotis"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Sekundär webbplatsnavigation"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "Frågor & svar"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Användarvillkor"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Sekretess"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Källa"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Emblem"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Programvarulicens för StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 "**%%site.name%%** är en mikrobloggtjänst tillhandahållen av [%%site.broughtby"
-"%%](%%site.broughtbyurl%%)"
+"%%](%%site.broughtbyurl%%)"
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
-msgstr "**%%site.name%%** är en mikrobloggtjänst."
+msgstr "**%%site.name%%** är en mikrobloggtjänst. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
 "s, available under the [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
-"Den drivs med mikroblogg-programvaran [StatusNet](http://status.net/), "
+"Den drivs med mikrobloggprogramvaran [StatusNet](http://status.net/), "
 "version %s, tillgänglig under [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Licens för webbplatsinnehåll"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Innehåll och data av %1$s är privat och konfidensiell."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr "Innehåll och data copyright av %1$s. Alla rättigheter reserverade."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Innehåll och data copyright av medarbetare. Alla rättigheter reserverade."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Alla "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "licens."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Numrering av sidor"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Senare"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Tidigare"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Det var ett problem med din sessions-token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
 msgstr "Du kan inte göra förändringar av denna webbplats."
 
 #: lib/adminpanelaction.php:107
-#, fuzzy
 msgid "Changes to that panel are not allowed."
-msgstr "Registrering inte tillåten."
+msgstr "Ändringar av den panelen tillåts inte."
 
 #: lib/adminpanelaction.php:206
 msgid "showForm() not implemented."
@@ -4321,10 +4788,100 @@ msgstr "Grundläggande webbplatskonfiguration"
 msgid "Design configuration"
 msgstr "Konfiguration av utseende"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Konfiguration av användare"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Konfiguration av åtkomst"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Konfiguration av sökvägar"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Konfiguration av sessioner"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"API-resursen kräver läs- och skrivrättigheter, men du har bara läsrättighet."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"Misslyckat försök till API-autentisering, smeknamn =%1$s, proxy =%2$s, ip =%3"
+"$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Redigera applikation"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Ikon för denna applikation"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Beskriv din applikation med högst %d tecken"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Beskriv din applikation"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL för källa"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL till hemsidan för denna applikation"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Organisation som ansvarar för denna applikation"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL till organisationens hemsidan"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL att omdirigera till efter autentisering"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Webbläsare"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Skrivbord"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Typ av applikation, webbläsare eller skrivbord"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Skrivskyddad"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Läs och skriv"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Standardåtkomst för denna applikation: skrivskyddad, eller läs och skriv"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Återkalla"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Bilagor"
@@ -4345,11 +4902,11 @@ msgstr "Notiser där denna bilaga förekommer"
 msgid "Tags for this attachment"
 msgstr "Taggar för denna billaga"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Byte av lösenord misslyckades"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Byte av lösenord är inte tillåtet"
 
@@ -4367,7 +4924,7 @@ msgstr "Kommando misslyckades"
 
 #: lib/command.php:44
 msgid "Sorry, this command is not yet implemented."
-msgstr "Ledsen, detta kommando är inte implementerat än."
+msgstr "Tyvärr, detta kommando är inte implementerat än."
 
 #: lib/command.php:88
 #, php-format
@@ -4500,81 +5057,91 @@ msgstr "Fel vid sparande av notis."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Ange namnet på användaren att prenumerara på"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Ingen sådan användare."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Prenumerar på %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Ange namnet på användaren att avsluta prenumeration på"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Prenumeration hos %s avslutad"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Kommando inte implementerat än."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Notifikation av."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Kan inte sätta på notifikation."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Notifikation på."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Kan inte stänga av notifikation."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Inloggningskommando är inaktiverat"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Denna länk är endast användbar en gång, och gäller bara i 2 minuter: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Prenumeration hos %s avslutad"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Du prenumererar inte på någon."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Du prenumererar på denna person:"
 msgstr[1] "Du prenumererar på dessa personer:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "Ingen prenumerar på dig."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Denna person prenumererar på dig:"
 msgstr[1] "Dessa personer prenumererar på dig:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Du är inte medlem i några grupper."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Du är en medlem i denna grupp:"
 msgstr[1] "Du är en medlem i dessa grupper:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4588,6 +5155,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4614,26 +5182,63 @@ msgid ""
 "tracks - not yet implemented.\n"
 "tracking - not yet implemented.\n"
 msgstr ""
-
-#: lib/common.php:131
+"Kommandon:\n"
+"on - sätt på notifikationer\n"
+"off - stäng av notifikationer\n"
+"help - visa denna hjälp\n"
+"follow <smeknamn> - prenumerera på användare\n"
+"groups - lista grupperna du tillhör\n"
+"subscriptions - lista personerna du följer\n"
+"subscribers - lista personerna som följer dig\n"
+"leave <smeknamn> - avsluta prenumeration på användare\n"
+"d <smeknamn> <text> - direktmeddelande till användare\n"
+"get <smeknamn> - hämta senaste notis från användare\n"
+"whois <smeknamn> - hämta profilinformation om användare\n"
+"fav <smeknamn> - lägg till användarens senaste notis som favorit\n"
+"fav #<notisid> - lägg till notis med given id som favorit\n"
+"repeat #<notisid> - upprepa en notis med en given id\n"
+"repeat <smeknamn> - upprepa den senaste notisen från användare\n"
+"reply #<notisid> - svara på notis med en given id\n"
+"reply <smeknamn> - svara på den senaste notisen från användare\n"
+"join <grupp> - gå med i grupp\n"
+"login - hämta en länk till webbgränssnittets inloggningssida\n"
+"drop <grupp> - lämna grupp\n"
+"stats - hämta din statistik\n"
+"stop - samma som 'off'\n"
+"quit - samma som 'off'\n"
+"sub <smeknamn> - samma som 'follow'\n"
+"unsub <smeknamn> - samma som 'leave'\n"
+"last <smeknamn> - samma som 'get'\n"
+"on <smeknamn> - inte implementerat än.\n"
+"off <smeknamn> - inte implementerat än.\n"
+"nudge <smeknamn> - påminn en användare om att uppdatera\n"
+"invite <telefonnummer> - inte implementerat än.\n"
+"track <ord> - inte implementerat än.\n"
+"untrack <ord> - inte implementerat än.\n"
+"track off - inte implementerat än.\n"
+"untrack all - inte implementerat än.\n"
+"tracks - inte implementerat än.\n"
+"tracking - inte implementerat än.\n"
+
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Ingen konfigurationsfil hittades. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Jag letade efter konfigurationsfiler på följande platser: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Du kanske vill köra installeraren för att åtgärda detta."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Gå till installeraren."
 
 #: lib/connectsettingsaction.php:110
 msgid "IM"
-msgstr "IM"
+msgstr "Snabbmeddelande"
 
 #: lib/connectsettingsaction.php:111
 msgid "Updates by instant messenger (IM)"
@@ -4643,6 +5248,14 @@ msgstr "Uppdateringar via snabbmeddelande (IM)"
 msgid "Updates by SMS"
 msgstr "Uppdateringar via SMS"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Anslutningar"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Tillåt anslutna applikationer"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Databasfel"
@@ -4827,15 +5440,15 @@ msgstr "MB"
 msgid "kB"
 msgstr "kB"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Okänt språk \"%s\""
+msgstr "Okänd källa för inkorg %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4873,6 +5486,18 @@ msgid ""
 "Thanks for your time, \n"
 "%s\n"
 msgstr ""
+"Hej %s!\n"
+"\n"
+"Någon la precis till den här e-postadressen på %s.\n"
+"\n"
+"Om det var du och du vill bekräfta det, använd webbadressen nedan:\n"
+"\n"
+"%s\n"
+"\n"
+"Om inte, ignorera bara det här meddelandet.\n"
+"\n"
+"Tack för din tid,  \n"
+"%s\n"
 
 #: lib/mail.php:236
 #, php-format
@@ -4893,13 +5518,21 @@ msgid ""
 "----\n"
 "Change your email address or notification options at %8$s\n"
 msgstr ""
+"%1$s lyssnar nu på dina notiser på %2$s.\n"
+"\n"
+"%3$s\n"
+"\n"
+"%4$s%5$s%6$s\n"
+"Med vänliga hälsningar,\n"
+"%7$s.\n"
+"\n"
+"----\n"
+"Ändra din e-postadress eller notiferingsinställningar på %8$s\n"
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr ""
-"Biografi: %s\n"
-"\n"
+msgstr "Biografi: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -4956,6 +5589,17 @@ msgid ""
 "With kind regards,\n"
 "%4$s\n"
 msgstr ""
+"%1$s (%2$s) undrar vad du håller på med nuförtiden och inbjuder dig att "
+"lägga upp några nyheter.\n"
+"\n"
+"Så låt oss höra av dig :)\n"
+"\n"
+"%3$s\n"
+"\n"
+"Svara inte på det här e-postmeddelandet; det kommer inte komma fram.\n"
+"\n"
+"Med vänliga hälsningar,\n"
+"%4$s\n"
 
 #: lib/mail.php:510
 #, php-format
@@ -4980,6 +5624,20 @@ msgid ""
 "With kind regards,\n"
 "%5$s\n"
 msgstr ""
+"%1$s (%2$s) skickade ett privat meddelande till dig:\n"
+"\n"
+"------------------------------------------------------\n"
+"%3$s\n"
+"------------------------------------------------------\n"
+"\n"
+"Du kan svara på meddelandet här:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Svara inte på detta e-postmeddelande; det kommer inte komma fram.\n"
+"\n"
+"Med vänliga hälsningar,\n"
+"%5$s\n"
 
 #: lib/mail.php:559
 #, php-format
@@ -5006,6 +5664,22 @@ msgid ""
 "Faithfully yours,\n"
 "%6$s\n"
 msgstr ""
+"%1$s (@%7$s) la precis till din notis från %2$s som en av sina favoriter.\n"
+"\n"
+"Webbadressen för din notis är:\n"
+"\n"
+"%3$s\n"
+"\n"
+"Texten i din notis är:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Du kan se listan med %1$ss favoriter här:\n"
+"\n"
+"%5$s\n"
+"\n"
+"Med vänliga hälsningar,\n"
+"%6$s\n"
 
 #: lib/mail.php:624
 #, php-format
@@ -5026,6 +5700,17 @@ msgid ""
 "\t%4$s\n"
 "\n"
 msgstr ""
+"%1$s (@%9$s) skickade precis en notis för din uppmärksamhet (ett '@-svar') "
+"på %2$s.\n"
+"\n"
+"Notisen är här:\n"
+"\n"
+"%3$s\n"
+"\n"
+"Den lyder:\n"
+"\n"
+"%4$s\n"
+"\n"
 
 #: lib/mailbox.php:89
 msgid "Only the user can read their own mailboxes."
@@ -5040,7 +5725,7 @@ msgstr ""
 "engagera andra användare i konversationen. Folk kan skicka meddelanden till "
 "dig som bara du ser."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "från"
 
@@ -5054,16 +5739,16 @@ msgstr "Inte en registrerad användare."
 
 #: lib/mailhandler.php:46
 msgid "Sorry, that is not your incoming email address."
-msgstr "Ledsen, det är inte din inkommande e-postadress."
+msgstr "Tyvärr, det är inte din inkommande e-postadress."
 
 #: lib/mailhandler.php:50
 msgid "Sorry, no incoming email allowed."
-msgstr "Ledsen, ingen inkommande e-post tillåts."
+msgstr "Tyvärr, ingen inkommande e-post tillåts."
 
 #: lib/mailhandler.php:228
-#, fuzzy, php-format
+#, php-format
 msgid "Unsupported message type: %s"
-msgstr "Bildfilens format stödjs inte."
+msgstr "Formatet %s för meddelande stödjs inte."
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
@@ -5100,18 +5785,16 @@ msgid "File upload stopped by extension."
 msgstr "Filuppladdningen stoppad pga filändelse"
 
 #: lib/mediafile.php:179 lib/mediafile.php:216
-#, fuzzy
 msgid "File exceeds user's quota."
-msgstr "Fil överstiger användaren kvot!"
+msgstr "Fil överstiger användaren kvot."
 
 #: lib/mediafile.php:196 lib/mediafile.php:233
 msgid "File could not be moved to destination directory."
 msgstr "Fil kunde inte flyttas till destinationskatalog."
 
 #: lib/mediafile.php:201 lib/mediafile.php:237
-#, fuzzy
 msgid "Could not determine file's MIME type."
-msgstr "Kunde inte fastställa filens MIME-typ!"
+msgstr "Kunde inte fastställa filens MIME-typ."
 
 #: lib/mediafile.php:270
 #, php-format
@@ -5119,13 +5802,13 @@ msgid " Try using another %s format."
 msgstr "Försök använda ett annat %s-format."
 
 #: lib/mediafile.php:275
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a supported file type on this server."
 msgstr "%s är en filtyp som saknar stöd på denna server."
 
 #: lib/messageform.php:120
 msgid "Send a direct notice"
-msgstr "Skicka ett direktinlägg"
+msgstr "Skicka en direktnotis"
 
 #: lib/messageform.php:146
 msgid "To"
@@ -5137,7 +5820,7 @@ msgstr "Tillgängliga tecken"
 
 #: lib/noticeform.php:160
 msgid "Send a notice"
-msgstr "Skicka ett inlägg"
+msgstr "Skicka en notis"
 
 #: lib/noticeform.php:173
 #, php-format
@@ -5153,67 +5836,63 @@ msgid "Attach a file"
 msgstr "Bifoga en fil"
 
 #: lib/noticeform.php:212
-#, fuzzy
 msgid "Share my location"
-msgstr "Dela din plats"
+msgstr "Dela min plats"
 
 #: lib/noticeform.php:215
-#, fuzzy
 msgid "Do not share my location"
-msgstr "Dela din plats"
+msgstr "Dela inte min plats"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"Tyvärr, hämtning av din geografiska plats tar längre tid än förväntat, var "
+"god försök igen senare"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "Ö"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "V"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "på"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "i sammanhang"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Upprepad av"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
-msgstr "Svara på detta inlägg"
+msgstr "Svara på denna notis"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Svara"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Notis upprepad"
 
@@ -5227,7 +5906,7 @@ msgstr "Knuffa"
 
 #: lib/nudgeform.php:128
 msgid "Send a nudge to this user"
-msgstr "Skicka en knuff till den användaren."
+msgstr "Skicka en knuff till denna användare"
 
 #: lib/oauthstore.php:283
 msgid "Error inserting new profile"
@@ -5243,19 +5922,15 @@ msgstr "Fel vid infogning av fjärrprofilen"
 
 #: lib/oauthstore.php:345
 msgid "Duplicate notice"
-msgstr "Duplicera notis"
-
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Du har blivit utestängd från att prenumerera."
+msgstr "Duplicerad notis"
 
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Kunde inte infoga ny prenumeration."
 
 #: lib/personalgroupnav.php:99
 msgid "Personal"
-msgstr "Personlig"
+msgstr "Personligt"
 
 #: lib/personalgroupnav.php:104
 msgid "Replies"
@@ -5265,19 +5940,19 @@ msgstr "Svar"
 msgid "Favorites"
 msgstr "Favoriter"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Inkorg"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Dina inkommande meddelanden"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Utkorg"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Dina skickade meddelanden"
 
@@ -5287,9 +5962,8 @@ msgid "Tags in %s's notices"
 msgstr "Taggar i %ss notiser"
 
 #: lib/plugin.php:114
-#, fuzzy
 msgid "Unknown"
-msgstr "Okänd funktion"
+msgstr "Okänd"
 
 #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
 msgid "Subscriptions"
@@ -5329,7 +6003,7 @@ msgstr "Inte implementerad metod."
 
 #: lib/publicgroupnav.php:78
 msgid "Public"
-msgstr "Publik"
+msgstr "Publikt"
 
 #: lib/publicgroupnav.php:82
 msgid "User groups"
@@ -5353,7 +6027,11 @@ msgstr "Upprepa denna notis?"
 
 #: lib/repeatform.php:132
 msgid "Repeat this notice"
-msgstr "Upprepa detta inlägg"
+msgstr "Upprepa denna notis"
+
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Ingen enskild användare definierad för enanvändarläge."
 
 #: lib/sandboxform.php:67
 msgid "Sandbox"
@@ -5422,43 +6100,15 @@ msgstr "Personer som prenumererar på %s"
 msgid "Groups %s is a member of"
 msgstr "Grupper %s är en medlem i"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Redan prenumerant!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Användaren har blockerat dig."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Kunde inte prenumerera."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Kunde inte göra andra till prenumeranter hos dig."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Inte prenumerant!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Kunde inte ta bort själv-prenumeration."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Kunde inte ta bort prenumeration."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
-msgstr ""
+msgstr "Taggmoln för person, såsom taggat själv"
 
 #: lib/subscriberspeopletagcloudsection.php:48
 #: lib/subscriptionspeopletagcloudsection.php:48
 msgid "People Tagcloud as tagged"
-msgstr ""
+msgstr "Taggmoln för person, såsom taggats"
 
 #: lib/tagcloudsection.php:56
 msgid "None"
@@ -5498,69 +6148,69 @@ msgstr "Redigera avatar"
 
 #: lib/userprofile.php:236
 msgid "User actions"
-msgstr "Användaråtgärd"
+msgstr "Åtgärder för användare"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Redigera profilinställningar"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Redigera"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Skicka ett direktmeddelande till denna användare"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Meddelande"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Moderera"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "ett par sekunder sedan"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "för nån minut sedan"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "för %d minuter sedan"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "för en timma sedan"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "för %d timmar sedan"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "för en dag sedan"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "för %d dagar sedan"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "för en månad sedan"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "för %d månader sedan"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "för ett år sedan"
 
@@ -5574,7 +6224,7 @@ msgstr "%s är inte en giltig färg!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s är inte en giltig färg! Använd 3 eller 6 hexadecimala tecken."
 
-#: scripts/xmppdaemon.php:301
-#, fuzzy, php-format
+#: lib/xmppmanager.php:402
+#, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
-msgstr "Meddelande för långt - maximum är %d tecken, du skickade %d"
+msgstr "Meddelande för långt - maximum är %1$d tecken, du skickade %2$d."
index 72ed8daafd52e18e36d2341b4a06f554ccdf164b..37a2582b3056126ffbd568da64956b4ef4e8fbe7 100644 (file)
@@ -8,17 +8,72 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:12+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:47+0000\n"
 "Language-Team: Telugu\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "అంగీకరించు"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "సైటు అందుబాటు అమరికలు"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "నమోదు"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "అంతరంగికం"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "అజ్ఞాత (ప్రవేశించని) వాడుకరులని సైటుని చూడకుండా నిషేధించాలా?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "ఆహ్వానితులకు మాత్రమే"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "ఆహ్వానితులు మాత్రమే నమోదు అవ్వగలిగేలా చెయ్యి."
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "అటువంటి వాడుకరి లేరు."
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "కొత్త నమోదులను అచేతనంచేయి."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "భద్రపరచు"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "సైటు అమరికలను భద్రపరచు"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -33,25 +88,29 @@ msgstr "అటువంటి పేజీ లేదు"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "అటువంటి వాడుకరి లేరు."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s మరియు మిత్రులు, పేజీ %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +151,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -103,8 +162,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "మీరు మరియు మీ స్నేహితులు"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -114,23 +173,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "నిర్ధారణ సంకేతం కనబడలేదు."
@@ -145,7 +204,7 @@ msgstr "నిర్ధారణ సంకేతం కనబడలేదు."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -176,8 +235,9 @@ msgstr "ప్రొఫైలుని భద్రపరచలేకున్
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -244,7 +304,7 @@ msgstr "చాలా పొడవుంది. గరిష్ఠ సందే
 
 #: actions/apidirectmessagenew.php:146
 msgid "Recipient user not found."
-msgstr ""
+msgstr "అందుకోవాల్సిన వాడుకరి కనబడలేదు."
 
 #: actions/apidirectmessagenew.php:150
 msgid "Can't send direct messages to users who aren't your friend."
@@ -256,18 +316,16 @@ msgid "No status found with that ID."
 msgstr ""
 
 #: actions/apifavoritecreate.php:119
-#, fuzzy
 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."
 msgstr "ఇష్టాంశాన్ని సృష్టించలేకపోయాం."
 
 #: actions/apifavoritedestroy.php:122
-#, fuzzy
 msgid "That status is not a favorite."
-msgstr "ఆ నోటీసు ఇష్టాంశం కాదు!"
+msgstr "ఆ నోటీసు ఇష్టాంశం కాదు."
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -275,12 +333,12 @@ msgstr "ఇష్టాంశాన్ని తొలగించలేకప
 
 #: actions/apifriendshipscreate.php:109
 msgid "Could not follow user: User not found."
-msgstr ""
+msgstr "వాడుకరిని అనుసరించలేకపోయాం: వాడుకరి కనబడలేదు."
 
 #: actions/apifriendshipscreate.php:118
 #, php-format
 msgid "Could not follow user: %s is already on your list."
-msgstr ""
+msgstr "వాడుకరిని అనుసరించలేకపోయాం: %s ఇప్పటికే మీ జాబితాలో ఉన్నారు."
 
 #: actions/apifriendshipsdestroy.php:109
 #, fuzzy
@@ -296,12 +354,12 @@ msgstr "మిమ్మల్ని మీరే నిరోధించుక
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "వాడుకరిని తాజాకరించలేకున్నాం."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "లక్ష్యిత వాడుకరిని కనుగొనలేకపోయాం."
 
@@ -323,7 +381,8 @@ msgstr "ఆ పేరుని ఇప్పటికే వాడుతున్
 msgid "Not a valid nickname."
 msgstr "సరైన పేరు కాదు."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -335,7 +394,8 @@ msgstr "హోమ్ పేజీ URL సరైనది కాదు."
 msgid "Full name is too long (max 255 chars)."
 msgstr "పూర్తి పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "వివరణ చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
@@ -371,7 +431,7 @@ msgstr "మారుపేరు పేరుతో సమానంగా ఉం
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "గుంపు దొరకలేదు!"
 
@@ -412,6 +472,113 @@ msgstr "%s గుంపులు"
 msgid "groups on %s"
 msgstr "%s పై గుంపులు"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "తప్పుడు పరిమాణం."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "తప్పుడు పేరు / సంకేతపదం!"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "అవతారాన్ని పెట్టడంలో పొరపాటు"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "అవతారాన్ని పెట్టడంలో పొరపాటు"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "ఖాతా"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "పేరు"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "సంకేతపదం"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "తిరస్కరించు"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "అనుమతించు"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -426,14 +593,12 @@ msgid "No such notice."
 msgstr "అటువంటి సందేశమేమీ లేదు."
 
 #: actions/apistatusesretweet.php:83
-#, fuzzy
 msgid "Cannot repeat your own notice."
-msgstr "à°\88 à°²à±\88à°¸à±\86à°¨à±\8dà°¸à±\81à°\95à°¿ à°\85à°\82à°\97à±\80à°\95à°°à°¿à°\82à°\9aà°\95à°ªà±\8bà°¤à±\87 à°®à±\80à°°à±\81 à°¨à°®à±\8bà°¦à±\81à°\9aà±\87à°¸à±\81à°\95à±\8bలేరు."
+msgstr "à°®à±\80 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°®à±\80à°°à±\87 à°ªà±\81నరావà±\83తిà°\82à°\9aలేరు."
 
 #: actions/apistatusesretweet.php:91
-#, fuzzy
 msgid "Already repeated that notice."
-msgstr "à°\88 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà±\81"
+msgstr "à°\87à°ªà±\8dà°ªà°\9fà°¿à°\95à±\87 à°\86 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°ªà±\81నరావà±\83తిà°\82à°\9aారà±\81."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
@@ -443,17 +608,17 @@ msgstr "స్థితిని తొలగించాం."
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "అది చాలా పొడవుంది. గరిష్ఠ నోటీసు పరిమాణం %d అక్షరాలు."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "దొరకలేదు"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "గరిష్ఠ నోటీసు పొడవు %d అక్షరాలు, జోడింపు URLని కలుపుకుని."
@@ -467,7 +632,7 @@ msgstr ""
 msgid "%1$s / Favorites from %2$s"
 msgstr ""
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s యొక్క మైక్రోబ్లాగు"
@@ -478,7 +643,7 @@ msgstr "%s యొక్క మైక్రోబ్లాగు"
 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!"
@@ -494,37 +659,32 @@ 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 ""
-
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
+msgstr "అందరి నుండి %s తాజాకరణలు!"
 
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "%sకి స్పందనలు"
 
-#: actions/apitimelineretweetsofme.php:112
-#, fuzzy, php-format
+#: actions/apitimelineretweetsofme.php:114
+#, php-format
 msgid "Repeats of %s"
-msgstr "%sకి స్పందనలు"
+msgstr "%s యొక్క పునరావృతాలు"
 
 #: actions/apitimelinetag.php:102 actions/tag.php:66
 #, php-format
 msgid "Notices tagged with %s"
 msgstr ""
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "%s యొక్క మైక్రోబ్లాగు"
@@ -585,8 +745,8 @@ msgstr "అసలు"
 msgid "Preview"
 msgstr "మునుజూపు"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "తొలగించు"
 
@@ -598,29 +758,6 @@ msgstr "ఎగుమతించు"
 msgid "Crop"
 msgstr "కత్తిరించు"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "మీ అవతారానికి గానూ ఈ చిత్రం నుండి ఒక చతురస్రపు ప్రదేశాన్ని ఎంచుకోండి"
@@ -656,8 +793,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "కాదు"
 
@@ -665,13 +803,13 @@ msgstr "కాదు"
 msgid "Do not block this user"
 msgstr "ఈ వాడుకరిని నిరోధించకు"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "ఈ వాడుకరిని నిరోధించు"
 
@@ -756,7 +894,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "ఈమెయిల్ నిర్ధారణని తొలగించలేకున్నాం."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "చిరునామాని నిర్ధారించు"
 
 #: actions/confirmaddress.php:159
@@ -773,10 +911,50 @@ msgstr "సంభాషణ"
 msgid "Notices"
 msgstr "సందేశాలు"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "ఉపకరణాలని తొలగించడానికి మీరు ప్రవేశించి ఉండాలి."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "ఉపకరణం కనబడలేదు."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "మీరు ఈ ఉపకరణం యొక్క యజమాని కాదు."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "ఉపకరణ తొలగింపు"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"మీరు నిజంగానే ఈ ఉపకరణాన్ని తొలగించాలనుకుంటున్నారా? ఇది ఆ ఉపకరణం గురించి భోగట్టాని, ప్రస్తుత "
+"వాడుకరుల అనుసంధానాలతో సహా, డాటాబేసు నుండి తొలగిస్తుంది."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "ఈ ఉపకరణాన్ని తొలగించకు"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "ఈ ఉపకరణాన్ని తొలగించు"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -805,7 +983,7 @@ msgstr "మీరు నిజంగానే ఈ నోటీసుని త
 msgid "Do not delete this notice"
 msgstr "ఈ నోటీసుని తొలగించకు"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "ఈ నోటీసుని తొలగించు"
 
@@ -840,7 +1018,7 @@ msgstr "రూపురేఖలు"
 
 #: actions/designadminpanel.php:73
 msgid "Design settings for this StatusNet site."
-msgstr ""
+msgstr "ఈ స్టేటస్&zwnj;నెట్ సైటుకి రూపురేఖల అమరికలు."
 
 #: actions/designadminpanel.php:275
 msgid "Invalid logo URL."
@@ -935,16 +1113,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "భద్రపరచు"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "రూపురేఖలని భద్రపరచు"
@@ -957,10 +1125,80 @@ msgstr "ఈ నోటీసు ఇష్టాంశం కాదు!"
 msgid "Add to favorites"
 msgstr "ఇష్టాంశాలకు చేర్చు"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "అటువంటి పత్రమేమీ లేదు."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "ఉపకరణాన్ని మార్చు"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "ఉపకరణాలని మార్చడానికి మీరు ప్రవేశించి ఉండాలి."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "అటువంటి ఉపకరణం లేదు."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "మీ ఉపకరణాన్ని మార్చడానికి ఈ ఫారాన్ని ఉపయోగించండి."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "పేరు తప్పనిసరి."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "ఆ పేరుని ఇప్పటికే వాడుతున్నారు. మరోటి ప్రయత్నించండి."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "వివరణ తప్పనిసరి."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "హోమ్ పేజీ URL సరైనది కాదు."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "సంస్థ తప్పనిసరి."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "సంస్థ పేరు మరీ పెద్దగా ఉంది (255 అక్షరాలు గరిష్ఠం)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "గుంపుని తాజాకరించలేకున్నాం."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -988,7 +1226,7 @@ msgstr "వివరణ చాలా పెద్దదిగా ఉంది (1
 msgid "Could not update group."
 msgstr "గుంపుని తాజాకరించలేకున్నాం."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 msgid "Could not create aliases."
 msgstr "మారుపేర్లని సృష్టించలేకపోయాం."
 
@@ -1027,7 +1265,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "రద్దుచేయి"
 
@@ -1107,7 +1346,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "సరైన ఈమెయిల్ చిరునామా కాదు:"
 
@@ -1119,7 +1358,7 @@ msgstr "అది ఇప్పటికే మీ ఈమెయిల్ చి
 msgid "That email address already belongs to another user."
 msgstr "ఆ ఈమెయిల్ చిరునామా ఇప్పటేకే ఇతర వాడుకరికి సంబంధించినది."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "నిర్ధారణ సంకేతాన్ని చేర్చలేకపోయాం."
@@ -1178,7 +1417,7 @@ msgstr "ఈ నోటీసు ఇప్పటికే మీ ఇష్టా
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "ప్రాచుర్య నోటీసులు"
@@ -1233,7 +1472,7 @@ msgstr "విశేష వాడుకరులు, పేజీ %d"
 #: actions/featured.php:99
 #, php-format
 msgid "A selection of some great users on %s"
-msgstr ""
+msgstr "%sలో కొందరు గొప్ప వాడుకరుల యొక్క ఎంపిక"
 
 #: actions/file.php:34
 #, fuzzy
@@ -1270,7 +1509,7 @@ msgstr "ఆ వాడుకరి మిమ్మల్ని చందాచే
 
 #: actions/finishremotesubscribe.php:110
 msgid "You are not authorized."
-msgstr ""
+msgstr "మీకు అధీకరణ లేదు."
 
 #: actions/finishremotesubscribe.php:113
 msgid "Could not convert request token to access token."
@@ -1321,7 +1560,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 "వాడుకరిని గుంపు నుండి నిరోధించు"
 
@@ -1332,6 +1571,8 @@ msgid ""
 "will be removed from the group, unable to post, and unable to subscribe to "
 "the group in the future."
 msgstr ""
+"నిజంగానే వాడుకరి \"%1$s\"ని \"%2$s\" గుంపు నుండి నిరోధించాలనుకుంటున్నారా? వారిని గుంపు నుండి "
+"తొలగిస్తాం, ఇక భవిష్యత్తులో వారు గుంపులో ప్రచురించలేరు, మరియు గుంపుకి చందాచేరలేరు."
 
 #: actions/groupblock.php:178
 msgid "Do not block this user from this group"
@@ -1407,31 +1648,31 @@ msgid "%s group members"
 msgstr "%s గుంపు సభ్యులు"
 
 #: actions/groupmembers.php:96
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s group members, page %2$d"
-msgstr "%s గుంపు సభ్యులు, పేజీ %d"
+msgstr "%1$s గుంపు సభ్యులు, పేజీ %2$d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
 msgstr "ఈ గుంపులో వాడుకరులు జాబితా."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "ఈ వాడుకరిని నిర్వాహకున్ని చేయి"
 
@@ -1459,6 +1700,10 @@ msgid ""
 "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
 "%%%%)"
 msgstr ""
+"ఒకే రకమైన ఆసక్తులు ఉన్న వ్యక్తులు కలుసుకోడానికి మరియు మాట్లాడుకోడానికి %%%%site.name%%%% "
+"గుంపులు వీలుకల్పిస్తాయి. ఒక గుంపులో చేరిన తర్వాత మీరు \"!groupname\" అన్న సంకేతం ద్వారా ఆ "
+"గుంపు లోని సభ్యులందరికీ సందేశాలని పంపించవచ్చు. మీకు నచ్చిన గుంపు కనబడలేదా? [దాని కోసం వెతకండి](%%"
+"%%action.groupsearch%%%%) లేదా [మీరే కొత్తది సృష్టించండి!](%%%%action.newgroup%%%%)"
 
 #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
 msgid "Create a new group"
@@ -1496,6 +1741,8 @@ msgid ""
 "Why not [register an account](%%action.register%%) and [create the group](%%"
 "action.newgroup%%) yourself!"
 msgstr ""
+"[ఒక ఖాతాని నమోదుచేసుకుని](%%action.register%%) మీరే ఎందుకు [ఆ గుంపుని సృష్టించ](%%"
+"action.newgroup%%)కూడదు!"
 
 #: actions/groupunblock.php:91
 msgid "Only an admin can unblock group members."
@@ -1593,6 +1840,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "ఇది మీ Jabber ID కాదు"
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "%sకి వచ్చినవి"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1651,7 +1903,7 @@ msgstr ""
 #: actions/invite.php:162
 msgid ""
 "Use this form to invite your friends and colleagues to use this service."
-msgstr ""
+msgstr "ఈ ఫారాన్ని ఉపయోగించి మీ స్నేహితులను మరియు సహోద్యోగులను ఈ సేవను వినియోగించుకోమని ఆహ్వానించండి."
 
 #: actions/invite.php:187
 msgid "Email addresses"
@@ -1669,7 +1921,7 @@ msgstr "వ్యక్తిగత సందేశం"
 msgid "Optionally add a personal message to the invitation."
 msgstr "ఐచ్ఛికంగా ఆహ్వానానికి వ్యక్తిగత సందేశం చేర్చండి."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "పంపించు"
 
@@ -1743,7 +1995,7 @@ msgstr "వాడుకరిపేరు లేదా సంకేతపదం
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ప్రవేశించండి"
@@ -1752,17 +2004,6 @@ msgstr "ప్రవేశించండి"
 msgid "Login to site"
 msgstr "సైటు లోనికి ప్రవేశించు"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "పేరు"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "సంకేతపదం"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "నన్ను గుర్తుంచుకో"
@@ -1791,21 +2032,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\" గుంపు యొక్క ఒక నిర్వాకులు."
@@ -1814,6 +2055,27 @@ msgstr "%s ఇప్పటికే \"%s\" గుంపు యొక్క ఒ
 msgid "No current status"
 msgstr "ప్రస్తుత స్థితి ఏమీ లేదు"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "కొత్త ఉపకరణం"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "ఉపకరణాలని నమోదుచేసుకోడానికి మీరు లోనికి ప్రవేశించి ఉండాలి."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "కొత్త ఉపకరణాన్ని నమోదుచేసుకోడానికి ఈ ఫారాన్ని ఉపయోగించండి."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "మారుపేర్లని సృష్టించలేకపోయాం."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "కొత్త గుంపు"
@@ -1897,6 +2159,8 @@ msgid ""
 "Why not [register an account](%%%%action.register%%%%) and be the first to "
 "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
 msgstr ""
+"మీరు [ఒక ఖాతా నమోదు చేసుకుని](%%%%action.register%%%%) [ఈ విషయంపై వ్రాసే](%%%%action."
+"newnotice%%%%?status_textarea=%s) మొదటివారు ఎందుకుకాకూడదు!"
 
 #: actions/noticesearchrss.php:96
 #, fuzzy, php-format
@@ -1921,6 +2185,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "మీ ఉపకరణాలను చూడడానికి మీరు ప్రవేశించి ఉండాలి."
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "ఇతర ఎంపికలు"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "మీరు నమోదు చేసివున్న ఉపకరణాలు"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "సంధానిత ఉపకరణాలు"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "మీరు ఆ ఉపకరణం యొక్క వాడుకరి కాదు."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1938,8 +2245,8 @@ msgstr "విషయ రకం "
 msgid "Only "
 msgstr "మాత్రమే "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -1952,7 +2259,7 @@ msgid "Notice Search"
 msgstr "నోటీసుల అన్వేషణ"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "ఇతర అమరికలు"
 
 #: actions/othersettings.php:71
@@ -2008,6 +2315,11 @@ msgstr "సందేశపు విషయం సరైనది కాదు"
 msgid "Login token expired."
 msgstr "సైటు లోనికి ప్రవేశించు"
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2078,7 +2390,7 @@ msgstr "కొత్త సంకేతపదాన్ని భద్రపర
 msgid "Password saved."
 msgstr "సంకేతపదం భద్రమయ్యింది."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2086,137 +2398,153 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "హోమ్ పేజీ URL సరైనది కాదు."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "సైటు"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "సేవకి"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "కొత్త సందేశం"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "అలంకారం"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "అలంకారాల సేవకి"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "అలంకార సంచయం"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "అవతారాలు"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "అవతారాల సేవకి"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "అవతారాన్ని తాజాకరించాం."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "అవతారాల సంచయం"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "నేపథ్యాలు"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "నేపథ్యాల సేవకి"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 #, fuzzy
 msgid "Background path"
 msgstr "నేపథ్యం"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "నేపథ్యాల సంచయం"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "వైదొలగు"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "కొన్నిసార్లు"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "ఎల్లప్పుడూ"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "వైదొలగు"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "కొత్త సందేశం"
@@ -2279,7 +2607,7 @@ msgid "Full name"
 msgstr "పూర్తి పేరు"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "హోమ్ పేజీ"
 
@@ -2302,7 +2630,7 @@ msgstr "స్వపరిచయం"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "ప్రాంతం"
@@ -2326,7 +2654,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "భాష"
 
@@ -2352,7 +2680,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "స్వపరిచయం చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "కాలమండలాన్ని ఎంచుకోలేదు."
 
@@ -2365,24 +2693,24 @@ msgstr "భాష మరీ పెద్దగా ఉంది (50 అక్ష
 msgid "Invalid tag: \"%s\""
 msgstr "'%s' అనే హోమ్ పేజీ సరైనదికాదు"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "ట్యాగులని భద్రపరచలేకున్నాం."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "ప్రొఫైలుని భద్రపరచలేకున్నాం."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "ట్యాగులని భద్రపరచలేకున్నాం."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "అమరికలు భద్రమయ్యాయి."
 
@@ -2404,39 +2732,39 @@ msgstr "ప్రజా కాలరేఖ, పేజీ %d"
 msgid "Public timeline"
 msgstr "ప్రజా కాలరేఖ"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "ప్రజా వాహిని ఫీడు"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "ప్రజా వాహిని ఫీడు"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "ప్రజా వాహిని ఫీడు"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2445,13 +2773,15 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
 "blogging) service based on the Free Software [StatusNet](http://status.net/) "
 "tool."
 msgstr ""
+"ఇది %%site.name%%, స్వేచ్ఛా మృదూపకరమైన [స్టేటస్‌నెట్](http://status.net/) అనే పనిముట్టుపై "
+"ఆధారపడిన ఒక [మైక్రో-బ్లాగింగు](http://en.wikipedia.org/wiki/Micro-blogging) సేవ."
 
 #: actions/publictagcloud.php:57
 #, fuzzy
@@ -2477,9 +2807,9 @@ msgstr ""
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post "
 "one!"
-msgstr ""
+msgstr "[ఒక ఖాతాని నమోదుచేసుకుని](%%action.register%%) మీరే మొదట వ్రాసేవారు ఎందుకు కాకూడదు!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "ట్యాగు మేఘం"
 
@@ -2552,7 +2882,7 @@ msgstr ""
 
 #: actions/recoverpassword.php:213
 msgid "Unknown action"
-msgstr ""
+msgstr "తెలియని చర్య"
 
 #: actions/recoverpassword.php:236
 msgid "6 or more characters, and don't forget it!"
@@ -2616,7 +2946,7 @@ msgstr "క్షమించండి, తప్పు ఆహ్వాన స
 msgid "Registration successful"
 msgstr "నమోదు విజయవంతం"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "నమోదు"
@@ -2656,7 +2986,7 @@ msgid "Same as password above. Required."
 msgstr "పై సంకేతపదం మరోసారి. తప్పనిసరి."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "ఈమెయిల్"
 
@@ -2700,6 +3030,18 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
+"%1$s, అభినందనలు! %%%%site.name%%%%కి స్వాగతం. ఇక్కడ నుండి, మీరు...\n"
+"\n"
+"* [మీ ప్రొఫైలు](%2$s)కి వెళ్ళి మీ మొదటి సందేశాన్ని వ్రాయండి.\n"
+"* [జాబర్/జీటాక్ చిరునామాని](%%%%action.imsettings%%%%) చేర్చుకోండి అప్పుడు తక్షణ సందేశాల ద్వారా "
+"మీరు నోటీసులని పంపగలుగుతారు.\n"
+"* మీకు తెలిసిన లేదా మీ ఆసక్తులను పంచుకునే [వ్యక్తుల కోసం వెతకండి](%%%%action.peoplesearch%%"
+"%%).\n"
+"* మీ గురించి ఇతరులకు మరింత చెప్పడానికి మీ [ప్రొఫైలు అమరికలని](%%%%action.profilesettings%%%"
+"%) తాజాకరించుకోండి.  \n"
+"* సౌలభ్యాలను తెలుసుకోడానికి [ఆన్&zwnj;లైన్ పత్రావళి](%%%%doc.help%%%%)ని చూడండి.  \n"
+"\n"
+"నమోదుచేసుకున్నందుకు కృతజ్ఞతలు మరియు ఈ సేవని ఉపయోగిస్తూ మీరు ఆనందిస్తారని మేం ఆశిస్తున్నాం."
 
 #: actions/register.php:562
 msgid ""
@@ -2741,7 +3083,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "చందాచేరు"
 
@@ -2780,7 +3122,7 @@ msgstr "ఈ లైసెన్సుకి అంగీకరించకపో
 msgid "You already repeated that notice."
 msgstr "మీరు ఇప్పటికే ఆ వాడుకరిని నిరోధించారు."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "సృష్టితం"
@@ -2796,6 +3138,11 @@ msgstr "సృష్టితం"
 msgid "Replies to %s"
 msgstr "%sకి స్పందనలు"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "%sకి స్పందనలు"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2824,6 +3171,8 @@ msgid ""
 "You can engage other users in a conversation, subscribe to more people or "
 "[join groups](%%action.groups%%)."
 msgstr ""
+"మీరు ఇతర వాడుకరులతో సంభాషించవచ్చు, మరింత మంది వ్యక్తులకు చందాచేరవచ్చు లేదా [గుంపులలో చేరవచ్చు]"
+"(%%action.groups%%)."
 
 #: actions/replies.php:205
 #, php-format
@@ -2837,6 +3186,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "%sకి స్పందనలు"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "స్టేటస్‌నెట్"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2847,14 +3200,131 @@ msgstr "మీరు ఇప్పటికే లోనికి ప్రవే
 msgid "User is already sandboxed."
 msgstr "వాడుకరిని ఇప్పటికే గుంపునుండి నిరోధించారు."
 
-#: actions/showfavorites.php:132
-msgid "Could not retrieve favorite notices."
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
 msgstr ""
 
-#: actions/showfavorites.php:170
-#, fuzzy, php-format
-msgid "Feed for favorites of %s (RSS 1.0)"
-msgstr "%s యొక్క మిత్రుల ఫీడు"
+#: actions/sessionsadminpanel.php:65
+#, fuzzy
+msgid "Session settings for this StatusNet site."
+msgstr "ఈ స్టేటస్&zwnj;నెట్ సైటుకి రూపురేఖల అమరికలు."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "సైటు అమరికలను భద్రపరచు"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "గుంపుని వదిలివెళ్ళడానికి మీరు ప్రవేశించి ఉండాలి."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "ప్రతీకం"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "పేరు"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "సంస్ధ"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "వివరణ"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "గణాంకాలు"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "ఉపకరణ చర్యలు"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "ఉపకరణ సమాచారం"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+#, fuzzy
+msgid "Authorize URL"
+msgstr "రచయిత"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "మీరు నిజంగానే ఈ నోటీసుని తొలగించాలనుకుంటున్నారా?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%1$sకి ఇష్టమైన నోటీసులు, పేజీ %2$d"
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr ""
+
+#: actions/showfavorites.php:170
+#, fuzzy, php-format
+msgid "Feed for favorites of %s (RSS 1.0)"
+msgstr "%s యొక్క మిత్రుల ఫీడు"
 
 #: actions/showfavorites.php:177
 #, fuzzy, php-format
@@ -2896,17 +3366,22 @@ msgstr "మీకు నచ్చినవి పంచుకోడానిక
 msgid "%s group"
 msgstr "%s గుంపు"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%1$s గుంపు సభ్యులు, పేజీ %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "గుంపు ప్రొఫైలు"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "గమనిక"
 
@@ -2952,10 +3427,6 @@ msgstr "(ఏమీలేదు)"
 msgid "All members"
 msgstr "అందరు సభ్యులూ"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "గణాంకాలు"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "సృష్టితం"
@@ -3010,6 +3481,11 @@ msgstr "నోటీసుని తొలగించాం."
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s మరియు మిత్రులు, పేజీ %2$d"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3035,25 +3511,26 @@ msgstr "%s యొక్క సందేశముల ఫీడు"
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "ఇది %s మరియు మిత్రుల కాలరేఖ కానీ ఇంకా ఎవరూ ఏమీ రాయలేదు."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
+"ఈమధ్యే ఏదైనా ఆసక్తికరమైనది చూసారా? మీరు ఇంకా నోటీసులేమీ వ్రాయలేదు, మొదలుపెట్టడానికి ఇదే మంచి సమయం :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3062,7 +3539,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3070,10 +3547,10 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
-#, fuzzy, php-format
+#: actions/showstream.php:305
+#, php-format
 msgid "Repeat of %s"
-msgstr "%sకి స్పందనలు"
+msgstr "%s యొక్క పునరావృతం"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 msgid "You cannot silence users on this site."
@@ -3086,206 +3563,147 @@ msgstr "వాడుకరిని ఇప్పటికే గుంపున
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
-msgstr ""
+msgstr "ఈ స్టేటస్&zwnj;నెట్ సైటుకి ప్రాధమిక అమరికలు."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
-msgstr ""
+msgstr "సైటు పేరు తప్పనిసరిగా సున్నా కంటే ఎక్కువ పొడవుండాలి."
 
-#: actions/siteadminpanel.php:154
-#, fuzzy
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
-msgstr "మీకు సరైన సంప్రదింపు ఈమెయిలు చిరునామా ఉండాలి"
+msgstr "మీకు సరైన సంప్రదింపు ఈమెయిలు చిరునామా ఉండాలి."
 
-#: actions/siteadminpanel.php:172
-#, fuzzy, php-format
+#: actions/siteadminpanel.php:158
+#, php-format
 msgid "Unknown language \"%s\"."
-msgstr "గుర్తు తెలియని భాష \"%s\""
+msgstr "గుర్తు తెలియని భాష \"%s\"."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "కనిష్ఠ పాఠ్య పరిమితి 140 అక్షరాలు."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "సాధారణ"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "సైటు పేరు"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "మీ సైటు యొక్క పేరు, ఇలా \"మీకంపెనీ మైక్రోబ్లాగు\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "ఈ వాడుకరికై నమోదైన ఈమెయిల్ చిరునామాలు ఏమీ లేవు."
 
-#: actions/siteadminpanel.php:277
-#, fuzzy
+#: actions/siteadminpanel.php:263
 msgid "Local"
-msgstr "à°ªà±\8dà°°à°¾à°\82à°¤à°\82"
+msgstr "à°¸à±\8dథానిà°\95"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
-msgstr ""
+msgstr "అప్రమేయ కాలమండలం"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
-#, fuzzy
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
-msgstr "ప్రాథాన్యతా భాష"
-
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "వైదొలగు"
+msgstr "అప్రమేయ సైటు భాష"
 
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "అంగీకరించు"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "అంతరంగికం"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "అజ్ఞాత (ప్రవేశించని) వాడుకరులని సైటుని చూడకుండా నిషేధించాలా?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "ఆహ్వానితులకు మాత్రమే"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "ఆహ్వానితులు మాత్రమే నమోదు అవ్వగలిగేలా చెయ్యి."
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "అటువంటి వాడుకరి లేరు."
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "కొత్త నమోదులను అచేతనంచేయి."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "తరచుదనం"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "పరిమితులు"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "పాఠ్యపు పరిమితి"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "సందేశాలలోని అక్షరాల గరిష్ఠ సంఖ్య."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "సైటు అమరికలను భద్రపరచు"
-
 #: actions/smssettings.php:58
-#, fuzzy
 msgid "SMS settings"
 msgstr "SMS అమరికలు"
 
@@ -3343,7 +3761,7 @@ msgstr "ఇది ఇప్పటికే మీ ఫోను నెంబర
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
-msgstr ""
+msgstr "ఆ ఫోను నంబరు ఇప్పటికే వేరే వాడుకరికి చెందినది."
 
 #: actions/smssettings.php:347
 #, fuzzy
@@ -3383,16 +3801,26 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "చందాని సృష్టించలేకపోయాం."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "స్థానిక వాడుకరి కాదు."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "అటువంటి ఫైలు లేదు."
+
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "చందాదార్లు"
@@ -3403,29 +3831,30 @@ msgid "%s subscribers"
 msgstr "%s చందాదార్లు"
 
 #: actions/subscribers.php:52
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscribers, page %2$d"
-msgstr "%s చందాదార్లు, పేజీ %d"
+msgstr "%1$s చందాదార్లు, పేజీ %2$d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
-msgstr ""
+msgstr "వీళ్ళు మీ నోటీసులని వినే ప్రజలు."
 
 #: actions/subscribers.php:67
 #, php-format
 msgid "These are the people who listen to %s's notices."
-msgstr ""
+msgstr "వీళ్ళు %s యొక్క నోటీసులని వినే ప్రజలు."
 
 #: actions/subscribers.php:108
 msgid ""
 "You have no subscribers. Try subscribing to people you know and they might "
 "return the favor"
 msgstr ""
+"మీకు చందాదార్లు ఎవరూ లేరు. మీకు తెలిసినవారికి చందాచేర ప్రయత్నించండి వాళ్ళు ప్రత్యుపకారం చేయవచ్చు."
 
 #: actions/subscribers.php:110
 #, php-format
 msgid "%s has no subscribers. Want to be the first?"
-msgstr ""
+msgstr "%sకి చందాదార్లు ఎవరూ లేరు. మీరే మొదటివారు కావాలనుకుంటున్నారా?"
 
 #: actions/subscribers.php:114
 #, php-format
@@ -3440,9 +3869,9 @@ msgid "%s subscriptions"
 msgstr "%s చందాలు"
 
 #: actions/subscriptions.php:54
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s subscriptions, page %2$d"
-msgstr "%s చందాలు, పేజీ %d"
+msgstr "%1$s చందాలు, పేజీ %2$d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3453,7 +3882,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3463,19 +3892,24 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr ""
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "జాబర్"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "%s యొక్క మైక్రోబ్లాగు"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3505,7 +3939,8 @@ msgstr ""
 msgid "User profile"
 msgstr "వాడుకరి ప్రొఫైలు"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "ఫొటో"
 
@@ -3563,7 +3998,7 @@ msgstr ""
 msgid "Unsubscribed"
 msgstr "చందాదార్లు"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3578,90 +4013,68 @@ msgstr "వాడుకరి"
 msgid "User settings for this StatusNet site."
 msgstr "ఈ స్టేటస్&zwnj;నెట్ సైటుకి వాడుకరి అమరికలు."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "ప్రొఫైలు"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "స్వపరిచయ పరిమితి"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "స్వపరిచయం యొక్క గరిష్ఠ పొడవు, అక్షరాలలో."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "కొత్త వాడుకరులు"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "కొత్త వాడుకరి స్వాగతం"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "కొత్త వాడుకరులకై స్వాగత సందేశం (255 అక్షరాలు గరిష్ఠం)."
 
-#: actions/useradminpanel.php:241
-#, fuzzy
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
-msgstr "à°\85à°¨à±\8dని à°\9aà°\82దాలà±\81"
+msgstr "à°\85à°ªà±\8dà°°à°®à±\87à°¯ à°\9aà°\82దా"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "ఉపయోగించాల్సిన యాంత్రిక కుదింపు సేవ."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "ఆహ్వానాలు"
 
-#: actions/useradminpanel.php:256
-#, fuzzy
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
-msgstr "à°\86à°¹à±\8dవానమà±\81(à°²)ని à°ªà°\82పిà°\82à°\9aాం"
+msgstr "à°\86à°¹à±\8dవానాలని à°\9aà±\87తనà°\82à°\9aà±\87à°¸ాం"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr "వాడుకరులను కొత్త వారిని ఆహ్వానించడానికి అనుమతించాలా వద్దా."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
-msgstr ""
+msgstr "చందాని అధీకరించండి"
 
 #: actions/userauthorization.php:110
 msgid ""
@@ -3670,84 +4083,84 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "లైసెన్సు"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "అంగీకరించు"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "ఈ వాడుకరికి చందాచేరు"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "తిరస్కరించు"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "ఈ చందాని తిరస్కరించు"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr ""
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "చందాని తిరస్కరించారు."
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "'%s' అనే అవతారపు URL తప్పు"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "'%s' కొరకు తప్పుడు బొమ్మ రకం"
@@ -3766,6 +4179,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%1$s గుంపు సభ్యులు, పేజీ %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "మరిన్ని గుంపులకై వెతుకు"
@@ -3781,9 +4199,9 @@ msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
 msgstr "[గుంపులని వెతికి](%%action.groupsearch%%) వాటిలో చేరడానికి ప్రయత్నించండి."
 
 #: actions/version.php:73
-#, fuzzy, php-format
+#, php-format
 msgid "StatusNet %s"
-msgstr "à°\97ణాà°\82à°\95ాలà±\81"
+msgstr "à°¸à±\8dà°\9fà±\87à°\9fà°¸à±\8dâ\80\8cà°¨à±\86à°\9fà±\8d %s"
 
 #: actions/version.php:153
 #, php-format
@@ -3792,11 +4210,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "స్థితిని తొలగించాం."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3828,23 +4241,14 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "పేరు"
-
-#: actions/version.php:196 lib/action.php:741
-#, fuzzy
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
-msgstr "à°µà±\8dà°¯à°\95à±\8dతిà°\97à°¤"
+msgstr "à°¸à°\82à°\9aà°¿à°\95"
 
 #: actions/version.php:197
 msgid "Author(s)"
 msgstr "రచయిత(లు)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "వివరణ"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3863,19 +4267,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr ""
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "గుంపు ప్రొఫైలు"
+msgstr "గుంపులో చేరడం విఫలమైంది."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "à°\97à±\81à°\82à°ªà±\81ని à°¤à°¾à°\9cà°¾à°\95à°°à°¿à°\82à°\9aà°²à±\87à°\95à±\81à°¨à±\8dనాà°\82."
+msgstr "à°\97à±\81à°\82à°ªà±\81à°²à±\8b à°­à°¾à°\97à°\82 à°\95ాదà±\81."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "à°\97à±\81à°\82à°ªà±\81 à°ªà±\8dà°°à±\8aà°«à±\88à°²à±\81"
+msgstr "à°\97à±\81à°\82à°ªà±\81 à°¨à±\81à°\82à°¡à°¿ à°µà±\88à°¦à±\8aà°²à°\97à°¡à°\82 à°µà°¿à°«à°²à°®à±\88à°\82ది."
 
 #: classes/Login_token.php:76
 #, fuzzy, php-format
@@ -3894,63 +4295,88 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "ఈ సైటులో నోటీసులు రాయడం నుండి మిమ్మల్ని నిషేధించారు."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr ""
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "చందాచేరడం నుండి మిమ్మల్ని నిషేధించారు."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "ఇప్పటికే చందాచేరారు!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "వాడుకరి మిమ్మల్ని నిరోధించారు."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "చందాదార్లు"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "చందాని తొలగించలేకపోయాం."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "చందాని తొలగించలేకపోయాం."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "@%2$s, %1$sకి స్వాగతం!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "గుంపుని సృష్టించలేకపోయాం."
 
-#: classes/User_group.php:409
-#, fuzzy
+#: classes/User_group.php:452
 msgid "Could not set group membership."
-msgstr "à°\9aà°\82దాని à°¸à±\83à°·à±\8dà°\9fà°¿à°\82చలేకపోయాం."
+msgstr "à°\97à±\81à°\82à°ªà±\81 à°¸à°­à±\8dయతà±\8dవానà±\8dని à°\85మరà±\8dచలేకపోయాం."
 
 #: lib/accountsettingsaction.php:108
 msgid "Change your profile settings"
@@ -3990,132 +4416,126 @@ msgstr "%1$s - %2$s"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "ముంగిలి"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "ఖాతా"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "మీ ఈమెయిలు, అవతారం, సంకేతపదం మరియు ప్రౌఫైళ్ళను మార్చుకోండి"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "అనుసంధానించు"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "చందాలు"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ఆహ్వానించు"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "నిష్క్రమించు"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "సైటు నుండి నిష్క్రమించు"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "కొత్త ఖాతా సృష్టించు"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "సైటులోని ప్రవేశించు"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "సహాయం"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "సహాయం కావాలి!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "వెతుకు"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
-#, fuzzy
+#: lib/action.php:493
 msgid "Site notice"
-msgstr "à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°¦à±\87à°¶à°\82"
+msgstr "à°¸à±\88à°\9fà±\81 à°\97మనిà°\95"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "స్థానిక వీక్షణలు"
 
-#: lib/action.php:619
-#, fuzzy
+#: lib/action.php:625
 msgid "Page notice"
-msgstr "à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°¦à±\87à°¶à°\82"
+msgstr "à°ªà±\87à°\9cà±\80 à°\97మనిà°\95"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "చందాలు"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "గురించి"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "ప్రశ్నలు"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "సేవా నియమాలు"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "అంతరంగికత"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "మూలము"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "సంప్రదించు"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "బాడ్జి"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "స్టేటస్‌నెట్ మృదూపకరణ లైసెన్సు"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4124,12 +4544,12 @@ msgstr ""
 "**%%site.name%%** అనేది [%%site.broughtby%%](%%site.broughtbyurl%%) వారు "
 "అందిస్తున్న మైక్రో బ్లాగింగు సదుపాయం. "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** అనేది మైక్రో బ్లాగింగు సదుపాయం."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4140,33 +4560,55 @@ msgstr ""
 "html) కింద లభ్యమయ్యే [స్టేటస్&zwnj;నెట్](http://status.net/) మైక్రోబ్లాగింగ్ ఉపకరణం సంచిక %s "
 "పై నడుస్తుంది."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "కొత్త సందేశం"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "అన్నీ "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "పేజీకరణ"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "తర్వాత"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "ఇంతక్రితం"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4194,15 +4636,105 @@ msgid "Basic site configuration"
 msgstr "ప్రాథమిక సైటు స్వరూపణం"
 
 #: lib/adminpanelaction.php:317
-#, fuzzy
 msgid "Design configuration"
+msgstr "రూపకల్పన స్వరూపణం"
+
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "వాడుకరి స్వరూపణం"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
 msgstr "SMS నిర్ధారణ"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS నిర్ధారణ"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "రూపకల్పన స్వరూపణం"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "ఉపకరణాన్ని మార్చు"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "ఈ ఉపకరణానికి ప్రతీకం"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "మీ ఉపకరణం గురించి %d అక్షరాల్లో వివరించండి"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "మీ ఉపకరణాన్ని వివరించండి"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "మూలము"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "ఈ ఉపకరణం యొక్క హోమ్&zwnj;పేజీ చిరునామా"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "ఈ ఉపకరణానికి బాధ్యతాయుతమైన సంస్థ"
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "మీ హోమ్ పేజీ, బ్లాగు, లేదా వేరే సేటులోని మీ ప్రొఫైలు యొక్క చిరునామా"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "విహారిణి"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "తొలగించు"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "జోడింపులు"
@@ -4224,12 +4756,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "సంకేతపదం మార్పు"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "సంకేతపదం మార్పు"
@@ -4349,14 +4881,12 @@ msgid "Error sending direct message."
 msgstr ""
 
 #: lib/command.php:413
-#, fuzzy
 msgid "Cannot repeat your own notice"
-msgstr "à°\88 à°²à±\88à°¸à±\86à°¨à±\8dà°¸à±\81à°\95à°¿ à°\85à°\82à°\97à±\80à°\95à°°à°¿à°\82à°\9aà°\95à°ªà±\8bà°¤à±\87 à°®à±\80à°°à±\81 à°¨à°®à±\8bà°¦à±\81à°\9aà±\87à°¸à±\81à°\95à±\8bà°²à±\87à°°à±\81."
+msgstr "à°®à±\80 à°¨à±\8bà°\9fà°¿à°¸à±\81ని à°®à±\80à°°à±\87 à°ªà±\81నరావà±\83తిà°\82à°\9aà°²à±\87à°°à±\81"
 
 #: lib/command.php:418
-#, fuzzy
 msgid "Already repeated that notice"
-msgstr "à°\88 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aు"
+msgstr "à°\87à°ªà±\8dà°ªà°\9fà°¿à°\95à±\87 à°\88 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°ªà±\81నరావà±\83తిà°\82à°\9aారు"
 
 #: lib/command.php:426
 #, fuzzy, php-format
@@ -4385,82 +4915,91 @@ msgstr "సందేశాన్ని భద్రపరచడంలో పొ
 
 #: lib/command.php:547
 msgid "Specify the name of the user to subscribe to"
-msgstr ""
+msgstr "ఏవరికి చందా చేరాలనుకుంటున్నారో ఆ వాడుకరి పేరు తెలియజేయండి"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "అటువంటి వాడుకరి లేరు"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "%sకి చందా చేరారు"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
-msgstr ""
+msgstr "ఎవరి నుండి చందా విరమించాలనుకుంటున్నారో ఆ వాడుకరి పేరు తెలియజేయండి"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
-msgstr ""
+msgstr "%s నుండి చందా విరమించారు"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr "ఈ లంకెని ఒకే సారి ఉపయోగించగలరు, మరియు అది పనిచేసేది 2 నిమిషాలు మాత్రమే: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "%s నుండి చందా విరమించారు"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "మీరు ఎవరికీ చందాచేరలేదు."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "%sకి స్పందనలు"
 msgstr[1] "%sకి స్పందనలు"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "మీకు చందాదార్లు ఎవరూ లేరు."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "%sకి స్పందనలు"
 msgstr[1] "%sకి స్పందనలు"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "మీరు ఏ గుంపులోనూ సభ్యులు కాదు."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!"
 msgstr[1] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4474,6 +5013,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4501,20 +5041,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "నిర్ధారణ సంకేతం లేదు."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4530,6 +5070,14 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "అనుసంధానాలు"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4539,10 +5087,9 @@ msgid "Upload file"
 msgstr "ఫైలుని ఎక్కించు"
 
 #: lib/designsettings.php:109
-#, fuzzy
 msgid ""
 "You can upload your personal background image. The maximum file size is 2MB."
-msgstr "à°®à±\80 à°¸à±\8dà°µà°\82త నేపథ్యపు చిత్రాన్ని మీరు ఎక్కించవచ్చు. గరిష్ఠ ఫైలు పరిమాణం 2మెబై."
+msgstr "à°®à±\80 à°µà±\8dà°¯à°\95à±\8dతిà°\97త నేపథ్యపు చిత్రాన్ని మీరు ఎక్కించవచ్చు. గరిష్ఠ ఫైలు పరిమాణం 2మెబై."
 
 #: lib/designsettings.php:418
 msgid "Design defaults restored."
@@ -4616,15 +5163,14 @@ msgid "Describe the group or topic"
 msgstr "మీ గురించి మరియు మీ ఆసక్తుల గురించి 140 అక్షరాల్లో చెప్పండి"
 
 #: lib/groupeditform.php:170
-#, fuzzy, php-format
+#, php-format
 msgid "Describe the group or topic in %d characters"
-msgstr "à°®à±\80 à°\97à±\81à°°à°¿à°\82à°\9aà°¿ à°®à°°à°¿à°¯à±\81 à°®à±\80 à°\86à°¸à°\95à±\8dà°¤à±\81à°² à°\97à±\81à°°à°¿à°\82à°\9aà°¿ 140 à°\85à°\95à±\8dషరాలà±\8dà°²à±\8b à°\9aà±\86à°ªà±\8dà°ªండి"
+msgstr "à°\97à±\81à°\82à°ªà±\81 à°²à±\87దా à°µà°¿à°·à°¯à°¾à°¨à±\8dని à°\97à±\81à°°à°¿à°\82à°\9aà°¿ %d à°\85à°\95à±\8dషరాలà±\8dà°²à±\8b à°µà°¿à°µà°°à°¿à°\82à°\9aండి"
 
 #: lib/groupeditform.php:179
-#, fuzzy
 msgid ""
 "Location for the group, if any, like \"City, State (or Region), Country\""
-msgstr "à°®à±\80à°°à±\81 à°\8eà°\95à±\8dà°\95à°¡ à°¨à±\81à°\82à°¡à°¿, \"నగరం, రాష్ట్రం (లేదా ప్రాంతం), దేశం\""
+msgstr "à°\97à±\81à°\82à°ªà±\81 à°¯à±\8aà°\95à±\8dà°\95 à°ªà±\8dà°°à°¾à°\82à°¤à°\82, à°\89à°\82à°\9fà±\87, \"నగరం, రాష్ట్రం (లేదా ప్రాంతం), దేశం\""
 
 #: lib/groupeditform.php:187
 #, php-format
@@ -4719,12 +5265,12 @@ msgstr "మెబై"
 msgid "kB"
 msgstr "కిబై"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, fuzzy, php-format
 msgid "Unknown inbox source %d."
 msgstr "గుర్తు తెలియని భాష \"%s\""
@@ -4770,7 +5316,7 @@ msgstr ""
 #: lib/mail.php:236
 #, php-format
 msgid "%1$s is now listening to your notices on %2$s."
-msgstr ""
+msgstr "%1$s ఇప్పుడు %2$sలో మీ నోటీసులని వింటున్నారు."
 
 #: lib/mail.php:241
 #, php-format
@@ -4786,13 +5332,21 @@ msgid ""
 "----\n"
 "Change your email address or notification options at %8$s\n"
 msgstr ""
+"%1$s ఇప్పుడు %2$sలో మీ నోటీసులని వింటున్నారు.\n"
+"\n"
+"%3$s\n"
+"\n"
+"%4$s%5$s%6$s\n"
+"మీ విధేయులు,\n"
+"%7$s.\n"
+"\n"
+"----\n"
+"మీ ఈమెయిలు చిరునామాని లేదా గమనింపుల ఎంపికలను %8$s వద్ద మార్చుకోండి"
 
 #: lib/mail.php:258
-#, fuzzy, php-format
+#, php-format
 msgid "Bio: %s"
-msgstr ""
-"స్వపరిచయం: %s\n"
-"\n"
+msgstr "స్వపరిచయం: %s"
 
 #: lib/mail.php:286
 #, php-format
@@ -4895,7 +5449,7 @@ msgstr ""
 #: lib/mail.php:624
 #, php-format
 msgid "%s (@%s) sent a notice to your attention"
-msgstr ""
+msgstr "%s (@%s) మీకు ఒక నోటీసుని పంపించారు"
 
 #: lib/mail.php:626
 #, php-format
@@ -4911,6 +5465,16 @@ msgid ""
 "\t%4$s\n"
 "\n"
 msgstr ""
+"%1$s (@%9$s) %2$sలో మీకు ('@-స్పందన') ఒక నోటీసుని పంపించారు .\n"
+"\n"
+"ఆ నోటీసు ఇక్కడ:\n"
+"\n"
+"%3$s\n"
+"\n"
+"ఇదీ పాఠ్యం:\n"
+"\n"
+"%4$s\n"
+"\n"
 
 #: lib/mailbox.php:89
 msgid "Only the user can read their own mailboxes."
@@ -4922,7 +5486,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "నుండి"
 
@@ -5041,58 +5605,54 @@ msgid "Do not share my location"
 msgstr "ట్యాగులని భద్రపరచలేకున్నాం."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "ఉ"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "ద"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "తూ"
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "ప"
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "సందర్భంలో"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "సృష్టితం"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "ఈ నోటీసుపై స్పందించండి"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "స్పందించండి"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "నోటీసుని తొలగించాం."
@@ -5127,11 +5687,7 @@ msgstr "దూరపు ప్రొపైలుని చేర్చటంల
 msgid "Duplicate notice"
 msgstr "కొత్త సందేశం"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "చందాచేరడం నుండి మిమ్మల్ని నిషేధించారు."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr ""
 
@@ -5147,19 +5703,19 @@ msgstr "స్పందనలు"
 msgid "Favorites"
 msgstr "ఇష్టాంశాలు"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "వచ్చినవి"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "మీకు వచ్చిన సందేశాలు"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "పంపినవి"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "మీరు పంపిన సందేశాలు"
 
@@ -5239,6 +5795,10 @@ msgstr "ఈ నోటీసుపై స్పందించండి"
 msgid "Repeat this notice"
 msgstr "ఈ నోటీసుపై స్పందించండి"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5297,48 +5857,18 @@ msgstr "ఈ వాడుకరిని నిరోధించు"
 #: lib/subgroupnav.php:83
 #, php-format
 msgid "People %s subscribes to"
-msgstr ""
+msgstr "%s చందాచేరిన వ్యక్తులు"
 
 #: lib/subgroupnav.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "People subscribed to %s"
-msgstr "%sà°\95à°¿ à°¸à±\8dà°ªà°\82దనలు"
+msgstr "%sà°\95à°¿ à°\9aà°\82దాà°\9aà±\87à°°à°¿à°¨ à°µà±\8dà°¯à°\95à±\8dà°¤à±\81లు"
 
 #: lib/subgroupnav.php:99
 #, php-format
 msgid "Groups %s is a member of"
 msgstr "%s సభ్యులుగా ఉన్న గుంపులు"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "ఇప్పటికే చందాచేరారు!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "వాడుకరి మిమ్మల్ని నిరోధించారు."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "చందా చేర్చలేకపోయాం."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "చందాదార్లు"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "చందాని తొలగించలేకపోయాం."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "చందాని తొలగించలేకపోయాం."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5391,68 +5921,68 @@ msgstr "అవతారాన్ని మార్చు"
 msgid "User actions"
 msgstr "వాడుకరి చర్యలు"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "ఫ్రొఫైలు అమరికలు"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "మార్చు"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
-msgstr ""
+msgstr "ఈ వాడుకరికి ఒక నేరు సందేశాన్ని పంపించండి"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "సందేశం"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "కొన్ని క్షణాల క్రితం"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "ఓ నిమిషం క్రితం"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "%d నిమిషాల క్రితం"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "ఒక గంట క్రితం"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "%d గంటల క్రితం"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "ఓ రోజు క్రితం"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "%d రోజుల క్రితం"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "ఓ నెల క్రితం"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "%d నెలల క్రితం"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "ఒక సంవత్సరం క్రితం"
 
@@ -5466,7 +5996,7 @@ msgstr "%s అనేది సరైన రంగు కాదు!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s అనేది సరైన రంగు కాదు! 3 లేదా 6 హెక్స్ అక్షరాలను వాడండి."
 
-#: scripts/xmppdaemon.php:301
-#, fuzzy, php-format
+#: lib/xmppmanager.php:402
+#, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
-msgstr "నోటిసు చాలా పొడవుగా ఉంది - %d అక్షరాలు గరిష్ఠం, మీరు %d పంపించారు"
+msgstr "నోటిసు చాలా పొడవుగా ఉంది - %1$d అక్షరాలు గరిష్ఠం, మీరు %2$d పంపించారు."
index c456120306475374e7f36af204a5c968fcd672a3..149b21292d6fc7a70cd61f3b5e6a3dd425523eaf 100644 (file)
@@ -1,5 +1,6 @@
 # Translation of StatusNet to Turkish
 #
+# Author@translatewiki.net: Joseph
 # Author@translatewiki.net: McDutchie
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -8,17 +9,75 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:15+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:50+0000\n"
 "Language-Team: Turkish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Kabul et"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Ayarlar"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Kayıt"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Gizlilik"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Böyle bir kullanıcı yok."
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Kaydet"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Ayarlar"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -34,25 +93,29 @@ msgstr "Böyle bir durum mesajı yok."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Böyle bir kullanıcı yok."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s ve arkadaşları"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -93,7 +156,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -105,8 +168,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s ve arkadaşları"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -116,23 +179,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Onay kodu bulunamadı."
@@ -147,7 +210,7 @@ msgstr "Onay kodu bulunamadı."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -178,8 +241,9 @@ msgstr "Profil kaydedilemedi."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -299,12 +363,12 @@ msgstr "Kullanıcı güncellenemedi."
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Kullanıcı güncellenemedi."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Kullanıcı güncellenemedi."
@@ -329,7 +393,8 @@ msgstr "Takma ad kullanımda. Başka bir tane deneyin."
 msgid "Not a valid nickname."
 msgstr "Geçersiz bir takma ad."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -341,7 +406,8 @@ msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tam isim çok uzun (azm: 255 karakter)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
@@ -377,7 +443,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "İstek bulunamadı!"
@@ -421,6 +487,115 @@ msgstr ""
 msgid "groups on %s"
 msgstr ""
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Geçersiz büyüklük."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Geçersiz kullanıcı adı veya parola."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Kullanıcı ayarlamada hata oluştu."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Cevap eklenirken veritabanı hatası: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Beklenmeğen form girdisi."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "Hakkında"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Takma ad"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Parola"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -453,18 +628,18 @@ msgstr "Avatar güncellendi."
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 "Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?"
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -479,7 +654,7 @@ msgstr "Desteklenmeyen görüntü dosyası biçemi."
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s'in %2$s'deki durum mesajları "
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s adli kullanicinin durum mesajlari"
@@ -490,7 +665,7 @@ msgstr "%s adli kullanicinin durum mesajlari"
 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!"
@@ -506,27 +681,22 @@ msgstr "%1$s'in %2$s'deki durum mesajları "
 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "%s için cevaplar"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "%s için cevaplar"
@@ -536,7 +706,7 @@ msgstr "%s için cevaplar"
 msgid "Notices tagged with %s"
 msgstr ""
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "%s adli kullanicinin durum mesajlari"
@@ -599,8 +769,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr ""
 
@@ -612,29 +782,6 @@ msgstr "Yükle"
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Beklenmeğen form girdisi."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -673,8 +820,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr ""
 
@@ -683,13 +831,13 @@ msgstr ""
 msgid "Do not block this user"
 msgstr "Böyle bir kullanıcı yok."
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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."
@@ -776,7 +924,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Eposta onayı silinemedi."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Adresi Onayla"
 
 #: actions/confirmaddress.php:159
@@ -794,10 +943,54 @@ msgstr "Yer"
 msgid "Notices"
 msgstr "Durum mesajları"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Kullanıcı güncellenemedi."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Bize o profili yollamadınız"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatı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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -827,7 +1020,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "Böyle bir durum mesajı yok."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr ""
 
@@ -968,16 +1161,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Kaydet"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -990,10 +1173,84 @@ msgstr ""
 msgid "Add to favorites"
 msgstr ""
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Böyle bir belge yok."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Tam isim çok uzun (azm: 255 karakter)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Takma ad kullanımda. Başka bir tane deneyin."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Abonelikler"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Yer bilgisi çok uzun (azm: 255 karakter)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Kullanıcı güncellenemedi."
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1022,7 +1279,7 @@ msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
 msgid "Could not update group."
 msgstr "Kullanıcı güncellenemedi."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Avatar bilgisi kaydedilemedi"
@@ -1064,7 +1321,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "İptal et"
 
@@ -1145,7 +1403,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Geçersiz bir eposta adresi."
 
@@ -1157,7 +1415,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Onay kodu eklenemedi."
@@ -1216,7 +1474,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1369,7 +1627,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."
@@ -1469,23 +1727,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1664,6 +1922,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Bu sizin Jabber ID'niz değil."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1740,7 +2003,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Gönder"
 
@@ -1816,7 +2079,7 @@ msgstr "Yanlış kullanıcı adı veya parola."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Yetkilendirilmemiş."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Giriş"
@@ -1825,17 +2088,6 @@ msgstr "Giriş"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Takma ad"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Parola"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Beni hatırla"
@@ -1867,21 +2119,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."
@@ -1890,6 +2142,28 @@ msgstr "Kullanıcının profili yok."
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Avatar bilgisi kaydedilemedi"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1997,6 +2271,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Bize o profili yollamadınız"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
@@ -2015,8 +2332,8 @@ msgstr "Bağlan"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -2030,7 +2347,7 @@ msgstr ""
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Ayarlar"
 
 #: actions/othersettings.php:71
@@ -2087,6 +2404,11 @@ msgstr "Geçersiz durum mesajı"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2159,7 +2481,7 @@ msgstr "Yeni parola kaydedilemedi."
 msgid "Password saved."
 msgstr "Parola kaydedildi."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2167,140 +2489,156 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Bu sayfa kabul ettiğiniz ortam türünde kullanılabilir değil"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Sunucu"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Yeni durum mesajı"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Avatar"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Ayarlar"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Avatar güncellendi."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Avatar güncellendi."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Geri al"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Durum mesajları"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Geri al"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Yeni durum mesajı"
@@ -2367,7 +2705,7 @@ msgid "Full name"
 msgstr "Tam İsim"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Başlangıç Sayfası"
 
@@ -2392,7 +2730,7 @@ msgstr "Hakkında"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Yer"
@@ -2416,7 +2754,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr ""
 
@@ -2442,7 +2780,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2455,25 +2793,25 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "%s Geçersiz başlangıç sayfası"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Profil kaydedilemedi."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Profil kaydedilemedi."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Profil kaydedilemedi."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Ayarlar kaydedildi."
 
@@ -2495,39 +2833,39 @@ msgstr "Genel zaman çizgisi"
 msgid "Public timeline"
 msgstr "Genel zaman çizgisi"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2536,7 +2874,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2570,7 +2908,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2709,7 +3047,7 @@ msgstr "Onay kodu hatası."
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Kayıt"
@@ -2749,7 +3087,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Eposta"
 
@@ -2838,7 +3176,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Abone ol"
 
@@ -2878,7 +3216,7 @@ msgstr "Eğer lisansı kabul etmezseniz kayıt olamazsınız."
 msgid "You already repeated that notice."
 msgstr "Zaten giriş yapmış durumdasıznız!"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Yarat"
@@ -2894,6 +3232,11 @@ msgstr "Yarat"
 msgid "Replies to %s"
 msgstr "%s için cevaplar"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "%s için cevaplar"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2935,6 +3278,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "%s için cevaplar"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Avatar güncellendi."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2945,6 +3293,124 @@ msgstr "Bize o profili yollamadınız"
 msgid "User is already sandboxed."
 msgstr "Kullanıcının profili yok."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Ayarlar"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Takma ad"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Yer"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "Abonelikler"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "İstatistikler"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s ve arkadaşları"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2994,18 +3460,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Bütün abonelikler"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Böyle bir durum mesajı yok."
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 #, fuzzy
 msgid "Note"
 msgstr "Durum mesajları"
@@ -3053,10 +3524,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "İstatistikler"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3113,6 +3580,11 @@ msgstr "Durum mesajları"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s ve arkadaşları"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3138,25 +3610,25 @@ msgstr "%s için durum RSS beslemesi"
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3165,7 +3637,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3173,7 +3645,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "%s için cevaplar"
@@ -3191,204 +3663,147 @@ msgstr "Kullanıcının profili yok."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Geçersiz bir eposta adresi."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Yeni durum mesajı"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Kullanıcı için kaydedilmiş eposta adresi yok."
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Yer"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Geri al"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Kabul et"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Gizlilik"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Böyle bir kullanıcı yok."
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Ayarlar"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3489,17 +3904,27 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr "Bize o profili yollamadınız"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Abonelik oluşturulamadı."
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "Böyle bir kullanıcı yok."
+msgid "No such profile."
+msgstr "Böyle bir durum mesajı yok."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Bize o profili yollamadınız"
+
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "Abone ol"
@@ -3560,7 +3985,7 @@ msgstr "Sizin durumlarını takip ettiğiniz kullanıcılar"
 msgid "These are the people whose notices %s listens to."
 msgstr "%s adlı kullanıcının durumlarını takip ettiği kullanıcılar"
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3570,20 +3995,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s %2$s'da durumunuzu takip ediyor"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "JabberID yok."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "%s adli kullanicinin durum mesajlari"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3614,7 +4044,8 @@ msgstr ""
 msgid "User profile"
 msgstr "Kullanıcının profili yok."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3676,7 +4107,7 @@ msgstr "Yetkilendirme isteği yok!"
 msgid "Unsubscribed"
 msgstr "Aboneliği sonlandır"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3691,87 +4122,67 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Profil"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr ""
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Bütün abonelikler"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "Takip talebine izin verildi"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Yer"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Takip isteğini onayla"
@@ -3787,86 +4198,86 @@ msgstr ""
 "detayları gözden geçirin. Kimsenin durumunu taki etme isteğinde "
 "bulunmadıysanız \"İptal\" tuşuna basın. "
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Kabul et"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "Takip talebine izin verildi"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Reddet"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Bütün abonelikler"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Yetkilendirme isteği yok!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Takip talebine izin verildi"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Abonelik reddedildi."
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Avatar URLi '%s' okunamıyor"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "%s için yanlış resim türü"
@@ -3886,6 +4297,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Bütün abonelikler"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3912,11 +4328,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Avatar güncellendi."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3948,12 +4359,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Takma ad"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Kişisel"
@@ -3962,11 +4368,6 @@ msgstr "Kişisel"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "Abonelikler"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4016,61 +4417,88 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Durum mesajını kaydederken hata oluştu."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "Durum mesajını kaydederken hata oluştu."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Durum mesajını kaydederken hata oluştu."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Cevap eklenirken veritabanı hatası: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Durum mesajını kaydederken hata oluştu."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+#, fuzzy
+msgid "User has blocked you."
+msgstr "Kullanıcının profili yok."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Abonelik silinemedi."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Abonelik silinemedi."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "Avatar bilgisi kaydedilemedi"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Abonelik oluşturulamadı."
@@ -4114,136 +4542,131 @@ msgstr "%1$s'in %2$s'deki durum mesajları "
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Başlangıç"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "Hakkında"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Bağlan"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Sunucuya yönlendirme yapılamadı: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Abonelikler"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Çıkış"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "Yeni hesap oluştur"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Yardım"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "Yardım"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Ara"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Abonelikler"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Hakkında"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "SSS"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Gizlilik"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Kaynak"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "İletişim"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4252,12 +4675,12 @@ msgstr ""
 "**%%site.name%%** [%%site.broughtby%%](%%site.broughtbyurl%%)\" tarafından "
 "hazırlanan anında mesajlaşma ağıdır. "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** bir aninda mesajlaşma sosyal ağıdır."
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4268,35 +4691,57 @@ msgstr ""
 "licenses/agpl-3.0.html) lisansı ile korunan [StatusNet](http://status.net/) "
 "microbloglama yazılımının %s. versiyonunu kullanmaktadır."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "« Sonra"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "Önce »"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4329,11 +4774,107 @@ msgstr "Eposta adresi onayı"
 msgid "Design configuration"
 msgstr "Eposta adresi onayı"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Eposta adresi onayı"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Eposta adresi onayı"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "Eposta adresi onayı"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Eposta adresi onayı"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Kaynak"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr ""
+"Web Sitenizin, blogunuzun ya da varsa başka bir sitedeki profilinizin adresi"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr ""
+"Web Sitenizin, blogunuzun ya da varsa başka bir sitedeki profilinizin adresi"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Kaldır"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4355,12 +4896,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Parola kaydedildi."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Parola kaydedildi."
@@ -4515,80 +5056,90 @@ msgstr "Durum mesajını kaydederken hata oluştu."
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Böyle bir kullanıcı yok."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Aboneliği sonlandır"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Bize o profili yollamadınız"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Bize o profili yollamadınız"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Uzaktan abonelik"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Uzaktan abonelik"
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Bize o profili yollamadınız"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Bize o profili yollamadınız"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4602,6 +5153,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4629,20 +5181,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Onay kodu yok."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4658,6 +5210,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Bağlan"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4852,12 +5413,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5062,7 +5623,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr ""
 
@@ -5182,60 +5743,56 @@ msgid "Do not share my location"
 msgstr "Profil kaydedilemedi."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "İçerik yok!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Yarat"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "cevapla"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Durum mesajları"
@@ -5269,11 +5826,7 @@ msgstr "Uzak profil eklemede hata oluştu"
 msgid "Duplicate notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Yeni abonelik eklenemedi."
 
@@ -5289,19 +5842,19 @@ msgstr "Cevaplar"
 msgid "Favorites"
 msgstr ""
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5383,6 +5936,10 @@ msgstr "Böyle bir durum mesajı yok."
 msgid "Repeat this notice"
 msgstr "Böyle bir durum mesajı yok."
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5455,37 +6012,6 @@ msgstr "Uzaktan abonelik"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-#, fuzzy
-msgid "User has blocked you."
-msgstr "Kullanıcının profili yok."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Abonelik silinemedi."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Abonelik silinemedi."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5539,68 +6065,68 @@ msgstr "Avatar"
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Profil ayarları"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr ""
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "birkaç saniye önce"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "yaklaşık bir dakika önce"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "yaklaşık %d dakika önce"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "yaklaşık bir saat önce"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "yaklaşık %d saat önce"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "yaklaşık bir gün önce"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "yaklaşık %d gün önce"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "yaklaşık bir ay önce"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "yaklaşık %d ay önce"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "yaklaşık bir yıl önce"
 
@@ -5614,7 +6140,7 @@ msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 49e8ae30939a228c38db59a830f164423b956437..c261c310da684250d26a7532dcb4688095020392 100644 (file)
@@ -10,18 +10,72 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:18+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:53+0000\n"
 "Language-Team: Ukrainian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10< =4 && (n%100<10 or n%100>=20) ? 1 : 2);\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+msgid "Access"
+msgstr "Погодитись"
+
+#: actions/accessadminpanel.php:65
+msgid "Site access settings"
+msgstr "Параметри доступу на сайт"
+
+#: actions/accessadminpanel.php:158
+msgid "Registration"
+msgstr "Реєстрація"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr "Приватно"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+"Заборонити анонімним відвідувачам (ті, що не увійшли до системи) переглядати "
+"сайт?"
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr "Лише за запрошеннями"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr "Зробити регістрацію лише за запрошеннями."
+
+#: actions/accessadminpanel.php:173
+msgid "Closed"
+msgstr "Закрито"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr "Скасувати подальшу регістрацію."
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Зберегти"
+
+#: actions/accessadminpanel.php:189
+msgid "Save access settings"
+msgstr "Зберегти параметри доступу"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -36,25 +90,29 @@ msgstr "Немає такої сторінки"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Такого користувача немає."
 
+#: actions/all.php:84
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s та друзі, сторінка %2$d"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -99,7 +157,7 @@ msgstr ""
 "Ви можете [«розштовхати» %1$s](../%2$s) зі сторінки його профілю або [щось "
 "йому написати](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -112,8 +170,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "Ви з друзями"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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!"
@@ -123,23 +181,23 @@ msgstr "Оновлення від %1$s та друзів на %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 msgid "API method not found."
 msgstr "API метод не знайдено."
 
@@ -153,7 +211,7 @@ msgstr "API метод не знайдено."
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Цей метод потребує POST."
 
@@ -183,8 +241,9 @@ msgstr "Не вдалося зберегти профіль."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -301,11 +360,11 @@ msgstr "Ви не можете відписатись від самого себ
 msgid "Two user ids or screen_names must be supplied."
 msgstr "Два ID або імені_у_мережі повинні підтримуватись."
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 msgid "Could not determine source user."
 msgstr "Не вдалось встановити джерело користувача."
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 msgid "Could not find target user."
 msgstr "Не вдалося знайти цільового користувача."
 
@@ -329,7 +388,8 @@ msgstr "Це ім’я вже використовується. Спробуйт
 msgid "Not a valid nickname."
 msgstr "Це недійсне ім’я користувача."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -341,7 +401,8 @@ msgstr "Веб-сторінка має недійсну URL-адресу."
 msgid "Full name is too long (max 255 chars)."
 msgstr "Повне ім’я задовге (255 знаків максимум)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Опис надто довгий (%d знаків максимум)."
@@ -377,7 +438,7 @@ msgstr "Додаткове ім’я не може бути таким сами
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 msgid "Group not found!"
 msgstr "Групу не знайдено!"
 
@@ -418,6 +479,117 @@ msgstr "%s групи"
 msgid "groups on %s"
 msgstr "групи на %s"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Жодного параметру oauth_token не забезпечено."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Невірний токен."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+"Виникли певні проблеми з токеном поточної сесії. Спробуйте знов, будь ласка."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Недійсне ім’я / пароль!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Помилка бази даних при видаленні користувача OAuth-додатку."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Помилка бази даних при додаванні користувача OAuth-додатку."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Токен запиту %s було авторизовано. Будь ласка, обміняйте його на токен "
+"доступу."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Токен запиту %s було скасовано і відхилено."
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Несподіване представлення форми."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "Запит на дозвіл під’єднатися до Вашого облікового запису"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Дозволити або заборонити доступ"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Додаток <strong>%1$s</strong>  від <strong>%2$s</strong> запитує дозвіл на "
+"<strong>%3$s</strong> дані Вашого акаунту %4$s. Ви повинні надавати дозвіл "
+"на доступ до Вашого акаунту %4$s лише тим стороннім додаткам, яким Ви "
+"довіряєте."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "Акаунт"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Ім’я користувача"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Пароль"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Відхилити"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Дозволити"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Дозволити або заборонити доступ до Вашого облікового запису."
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Цей метод потребує або НАПИСАТИ, або ВИДАЛИТИ."
@@ -447,17 +619,17 @@ msgstr "Статус видалено."
 msgid "No status with that ID found."
 msgstr "Не знайдено жодних статусів з таким ID."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Надто довго. Максимальний розмір допису — %d знаків."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Не знайдено"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -473,7 +645,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."
@@ -484,7 +656,7 @@ msgstr "%1$s оновлення обраних від %2$s / %2$s."
 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!"
@@ -500,27 +672,22 @@ 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 оновлення від усіх!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr "Вторування %s"
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr "Вторування за %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr "Вторування %s"
@@ -530,7 +697,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!"
@@ -590,8 +757,8 @@ msgstr "Оригінал"
 msgid "Preview"
 msgstr "Перегляд"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr "Видалити"
 
@@ -603,30 +770,6 @@ msgstr "Завантажити"
 msgid "Crop"
 msgstr "Втяти"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-"Виникли певні проблеми з токеном поточної сесії. Спробуйте знов, будь ласка."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Несподіване представлення форми."
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "Оберіть квадратну ділянку зображення, яка й буде Вашою автарою."
@@ -665,8 +808,9 @@ msgstr ""
 "відписано від Вас, він не зможе підписитасть до Вас у майбутньому і Ви "
 "більше не отримуватимете жодних дописів від нього."
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Ні"
 
@@ -674,13 +818,13 @@ msgstr "Ні"
 msgid "Do not block this user"
 msgstr "Не блокувати цього користувача"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "Блокувати користувача"
 
@@ -763,7 +907,7 @@ msgid "Couldn't delete email confirmation."
 msgstr "Не вдалося видалити підтвердження поштової адреси."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+msgid "Confirm address"
 msgstr "Підтвердити адресу"
 
 #: actions/confirmaddress.php:159
@@ -780,10 +924,51 @@ msgstr "Розмова"
 msgid "Notices"
 msgstr "Дописи"
 
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Ви маєте спочатку увійти, аби мати змогу видалити додаток."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Додаток не виявлено."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Ви не є власником цього додатку."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr "Виникли певні проблеми з токеном поточної сесії."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Видалити додаток"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Впевнені, що бажаєте видалити цей додаток? У базі даних буде знищено всю "
+"інформацію стосовно нього, включно із даними про під’єднаних до цього "
+"додатку користувачів."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не видаляти додаток"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Видалити додаток"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -812,7 +997,7 @@ msgstr "Ви впевненні, що бажаєте видалити цей д
 msgid "Do not delete this notice"
 msgstr "Не видаляти цей допис"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr "Видалити допис"
 
@@ -944,16 +1129,6 @@ msgstr "Оновити налаштування за замовчуванням"
 msgid "Reset back to default"
 msgstr "Повернутись до початкових налаштувань"
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Зберегти"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr "Зберегти дизайн"
@@ -966,9 +1141,75 @@ msgstr "Цей допис не є обраним!"
 msgid "Add to favorites"
 msgstr "Додати до обраних"
 
-#: actions/doc.php:69
-msgid "No such document."
-msgstr "Такого документа немає."
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Немає такого документа «%s»"
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Керувати додатками"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Ви маєте спочатку увійти, аби мати змогу керувати додатком."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Такого додатку немає."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Скористайтесь цією формою, щоб відредагувати додаток."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Потрібне ім’я."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Ім’я задовге (255 знаків максимум)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Це ім’я вже використовується. Спробуйте інше."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Потрібен опис."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "URL-адреса надто довга."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "URL-адреса не є дійсною."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Потрібна організація."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Назва організації надто довга (255 знаків максимум)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Потрібна домашня сторінка організації."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Форма зворотнього дзвінка надто довга."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "URL-адреса для зворотнього дзвінка не є дійсною."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Не вдалося оновити додаток."
 
 #: actions/editgroup.php:56
 #, php-format
@@ -997,7 +1238,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:433
 msgid "Could not create aliases."
 msgstr "Неможна призначити додаткові імена."
 
@@ -1038,7 +1279,8 @@ msgstr ""
 "спамом також!), там має бути повідомлення з подальшими інструкціями."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Скасувати"
 
@@ -1118,7 +1360,7 @@ msgid "Cannot normalize that email address"
 msgstr "Не можна полагодити цю поштову адресу"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Це недійсна електронна адреса."
 
@@ -1130,7 +1372,7 @@ msgstr "Це і є Вашою адресою."
 msgid "That email address already belongs to another user."
 msgstr "Ця електронна адреса належить іншому користувачу."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Не вдалося додати код підтвердження."
@@ -1192,7 +1434,7 @@ msgstr "Цей допис вже є обраним!"
 msgid "Disfavor favorite"
 msgstr "Видалити з обраних"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 msgid "Popular notices"
 msgstr "Популярні дописи"
@@ -1338,7 +1580,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 "Блокувати користувача в групі"
 
@@ -1436,23 +1678,23 @@ msgstr "Учасники групи %1$s, сторінка %2$d"
 msgid "A list of the users in this group."
 msgstr "Список учасників цієї групи."
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 "Надати цьому користувачеві права адміністратора"
 
@@ -1635,6 +1877,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Це не Ваш Jabber ID."
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Вхідні для %1$s — сторінка %2$d"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1717,7 +1964,7 @@ msgstr "Особисті повідомлення"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Можна додати персональне повідомлення до запрошення (опціонально)."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Так!"
 
@@ -1818,7 +2065,7 @@ msgstr "Неточне ім’я або пароль."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Помилка. Можливо, Ви не авторизовані."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Увійти"
@@ -1827,17 +2074,6 @@ msgstr "Увійти"
 msgid "Login to site"
 msgstr "Вхід на сайт"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Ім’я користувача"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Пароль"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Пам’ятати мене"
@@ -1869,22 +2105,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."
@@ -1893,6 +2129,26 @@ msgstr "Не можна надати %1$s права адміна в групі
 msgid "No current status"
 msgstr "Ніякого поточного статусу"
 
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr "Новий додаток"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr "Ви маєте спочатку увійти, аби мати змогу зареєструвати додаток."
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr "Скористайтесь цією формою, щоб зареєструвати новий додаток."
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr "Потрібна URL-адреса."
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr "Не вдалося створити додаток."
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "Нова група"
@@ -2006,6 +2262,49 @@ msgstr "Спробу «розштовхати» зараховано"
 msgid "Nudge sent!"
 msgstr "Спробу «розштовхати» зараховано!"
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr "Ви повинні увійти, аби переглянути список Ваших додатків."
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr "Додатки OAuth"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr "Додатки, які Ви зареєстрували"
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr "Поки що Ви не зареєстрували жодних додатків."
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr "Під’єднані додатки"
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+"Ви маєте дозволити наступним додаткам доступ до Вашого облікового запису."
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr "Ви не є користувачем даного додатку."
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr "Не вдалося скасувати доступ для додатку: "
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr "Ви не дозволили жодним додаткам використовувати Ваш акаунт."
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr "Розробники можуть змінити налаштування реєстрації для їхніх додатків "
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Допис не має профілю"
@@ -2023,8 +2322,8 @@ msgstr "тип змісту "
 msgid "Only "
 msgstr "Лише "
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Такий формат даних не підтримується."
 
@@ -2037,7 +2336,7 @@ msgid "Notice Search"
 msgstr "Пошук дописів"
 
 #: actions/othersettings.php:60
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Інші опції"
 
 #: actions/othersettings.php:71
@@ -2088,6 +2387,11 @@ msgstr "Токен для входу визначено як неправиль
 msgid "Login token expired."
 msgstr "Токен для входу втратив чинність."
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Вихідні для %1$s — сторінка %2$d"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2160,7 +2464,7 @@ msgstr "Неможна зберегти новий пароль."
 msgid "Password saved."
 msgstr "Пароль збережено."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr "Шлях"
 
@@ -2168,132 +2472,148 @@ msgstr "Шлях"
 msgid "Path and server settings for this StatusNet site."
 msgstr "Шлях та налаштування серверу для цього сайту StatusNet."
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Дирикторію теми неможна прочитати: %s"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr "Щось не так із написанням директорії аватари: %s"
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr "Щось не так із написанням директорії фону: %s"
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr "Не можу прочитати директорію локалі: %s"
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr "Помилковий SSL-сервер. Максимальна довжина 255 знаків."
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr "Сайт"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr "Сервер"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr "Ім’я хосту сервера на якому знаходиться сайт."
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr "Шлях"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 msgid "Site path"
 msgstr "Шлях до сайту"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr "Шлях до локалей"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr "Директорія шляху до локалей"
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr "Надзвичайні URL-адреси"
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr "Використовувати надзвичайні (найбільш пам’ятні і визначні) URL-адреси?"
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr "Тема"
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr "Сервер теми"
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr "Шлях до теми"
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr "Директорія теми"
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 msgid "Avatars"
 msgstr "Аватари"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 msgid "Avatar server"
 msgstr "Сервер аватари"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 msgid "Avatar path"
 msgstr "Шлях до аватари"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 msgid "Avatar directory"
 msgstr "Директорія аватари"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr "Фони"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr "Сервер фонів"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr "Шлях до фонів"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr "Директорія фонів"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr "SSL-шифрування"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr "Ніколи"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr "Іноді"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr "Завжди"
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr "Використовувати SSL"
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr "Тоді використовувати SSL"
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 msgid "SSL server"
 msgstr "SSL-сервер"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr "Сервер на який направляти SSL-запити"
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 msgid "Save paths"
 msgstr "Зберегти шляхи"
 
@@ -2356,7 +2676,7 @@ msgid "Full name"
 msgstr "Повне ім’я"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Веб-сторінка"
 
@@ -2379,10 +2699,10 @@ msgstr "Про себе"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
-msgstr "Ð\9bокаÑ\86Ñ\96я"
+msgstr "РозÑ\82аÑ\88Ñ\83вання"
 
 #: actions/profilesettings.php:134 actions/register.php:473
 msgid "Where you are, like \"City, State (or Region), Country\""
@@ -2405,7 +2725,7 @@ msgstr ""
 "Позначте себе теґами (літери, цифри, -, . та _), відокремлюючи кожен комою "
 "або пробілом"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Мова"
 
@@ -2432,7 +2752,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "Ви перевищили ліміт (%d знаків максимум)."
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "Часовий пояс не обрано."
 
@@ -2445,23 +2765,23 @@ msgstr "Мова задовга (50 знаків максимум)."
 msgid "Invalid tag: \"%s\""
 msgstr "Недійсний теґ: \"%s\""
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "Не вдалося оновити користувача для автопідписки."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 msgid "Couldn't save location prefs."
 msgstr "Не вдалося зберегти налаштування розташування."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Не вдалося зберегти профіль."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 msgid "Couldn't save tags."
 msgstr "Не вдалося зберегти теґи."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Налаштування збережено."
 
@@ -2483,19 +2803,19 @@ msgstr "Загальний стрічка, сторінка %d"
 msgid "Public timeline"
 msgstr "Загальна стрічка"
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Стрічка публічних дописів (RSS 1.0)"
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Стрічка публічних дописів (RSS 2.0)"
 
-#: actions/public.php:159
+#: actions/public.php:167
 msgid "Public Stream Feed (Atom)"
 msgstr "Стрічка публічних дописів (Atom)"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2503,11 +2823,11 @@ msgid ""
 msgstr ""
 "Це публічна стрічка дописів сайту %%site.name%%, але вона поки що порожня."
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr "Станьте першим! Напишіть щось!"
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2515,7 +2835,7 @@ msgstr ""
 "Чому б не [зареєструватись](%%action.register%%) і не зробити свій перший "
 "допис!"
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2529,7 +2849,7 @@ msgstr ""
 "розділити своє життя з друзями, родиною і колегами! ([Дізнатися більше](%%"
 "doc.help%%))"
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2567,7 +2887,7 @@ msgstr ""
 "Чому б не [зареєструватись](%%%%action.register%%%%) і не написати щось "
 "цікаве!"
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "Хмарка теґів"
 
@@ -2709,7 +3029,7 @@ msgstr "Даруйте, помилка у коді запрошення."
 msgid "Registration successful"
 msgstr "Реєстрація успішна"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Реєстрація"
@@ -2753,7 +3073,7 @@ msgid "Same as password above. Required."
 msgstr "Такий само, як і пароль вище. Неодмінно."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Пошта"
 
@@ -2858,7 +3178,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL-адреса Вашого профілю на іншому сумісному сервісі"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Підписатись"
 
@@ -2895,7 +3215,7 @@ msgstr "Ви не можете вторувати своїм власним до
 msgid "You already repeated that notice."
 msgstr "Ви вже вторували цьому допису."
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 msgid "Repeated"
 msgstr "Вторування"
 
@@ -2909,6 +3229,11 @@ msgstr "Вторувати!"
 msgid "Replies to %s"
 msgstr "Відповіді до %s"
 
+#: actions/replies.php:127
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "Відповіді до %1$s, сторінка %2$d"
+
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2956,6 +3281,10 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "Відповіді до %1$s на %2$s!"
 
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 msgid "You cannot sandbox users on this site."
 msgstr "Ви не можете нікого ізолювати на цьому сайті."
@@ -2964,6 +3293,121 @@ msgstr "Ви не можете нікого ізолювати на цьому 
 msgid "User is already sandboxed."
 msgstr "Користувача ізольовано доки набереться уму-розуму."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr "Сесії"
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr "Налаштування сесії для цього сайту StatusNet."
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr "Сесії обробки даних"
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr "Обробка даних сесій самостійно."
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr "Сесія наладки"
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr "Виводити дані сесії наладки."
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+msgid "Save site settings"
+msgstr "Зберегти налаштування сайту"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr "Ви повинні спочатку увійти, аби переглянути додаток."
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr "Профіль додатку"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr "Іконка"
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+msgid "Name"
+msgstr "Ім’я"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+msgid "Organization"
+msgstr "Організація"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Опис"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Статистика"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Створено %1$s — %2$s доступ за замовч. — %3$d користувачів"
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr "Можливості додатку"
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr "Призначити новий ключ і таємне слово"
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr "Інфо додатку"
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr "Ключ споживача"
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr "Таємно слово споживача"
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr "URL-адреса токена запиту"
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr "URL-адреса токена дозволу"
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr "Авторизувати URL-адресу"
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+"До уваги: Всі підписи шифруються за методом HMAC-SHA1. Ми не підтримуємо "
+"шифрування підписів відкритим текстом."
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ви впевнені, що бажаєте скинути Ваш ключ споживача і таємну фразу?"
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Обрані дописи %1$s, сторінка %2$d"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Не можна відновити обрані дописи."
@@ -3021,17 +3465,22 @@ msgstr "Це спосіб поділитись з усіма тим, що вам
 msgid "%s group"
 msgstr "Група %s"
 
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Група %1$s, сторінка %2$d"
+
 #: actions/showgroup.php:218
 msgid "Group profile"
 msgstr "Профіль групи"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr "Зауваження"
 
@@ -3077,10 +3526,6 @@ msgstr "(Пусто)"
 msgid "All members"
 msgstr "Всі учасники"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Статистика"
-
 #: actions/showgroup.php:432
 msgid "Created"
 msgstr "Створено"
@@ -3144,6 +3589,11 @@ msgstr "Допис видалено."
 msgid " tagged %s"
 msgstr " позначено з %s"
 
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr "%1$s, сторінка %2$d"
+
 #: actions/showstream.php:122
 #, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3169,12 +3619,12 @@ msgstr "Стрічка дописів для %s (Atom)"
 msgid "FOAF for %s"
 msgstr "FOAF для %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "Це стрічка дописів %1$s, але %2$s ще нічого не написав."
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
@@ -3182,7 +3632,7 @@ msgstr ""
 "Побачили щось цікаве нещодавно? Ви ще нічого не написали і це слушна нагода "
 "аби розпочати! :)"
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3191,7 +3641,7 @@ msgstr ""
 "Ви можете «розштовхати» %1$s або [щось йому написати](%%%%action.newnotice%%%"
 "%?status_textarea=%2$s)."
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3205,7 +3655,7 @@ msgstr ""
 "register%%) зараз і слідкуйте за дописами **%s**, також на Вас чекає багато "
 "іншого! ([Дізнатися більше](%%doc.help%%))"
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3216,7 +3666,7 @@ msgstr ""
 "(http://uk.wikipedia.org/wiki/Мікроблоґ), який працює на вільному "
 "програмному забезпеченні [StatusNet](http://status.net/). "
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr "Вторування %s"
@@ -3233,201 +3683,147 @@ msgstr "Користувачу наразі заклеїли рота скотч
 msgid "Basic settings for this StatusNet site."
 msgstr "Загальні налаштування цього сайту StatusNet."
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr "Ім’я сайту не може бути порожнім."
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 msgid "You must have a valid contact email address."
 msgstr "Електронна адреса має бути чинною."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr "Невідома мова «%s»."
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr "Помилковий снепшот URL."
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr "Помилкове значення снепшоту."
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr "Частота повторення снепшотів має містити цифру."
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr "Ліміт текстових повідомлень становить 140 знаків."
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 "Часове обмеження при надсиланні дублікату повідомлення має становити від 1 і "
 "більше секунд."
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr "Основні"
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 msgid "Site name"
 msgstr "Назва сайту"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr "Назва Вашого сайту, штибу \"Мікроблоґи компанії ...\""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr "Надано"
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr "Текст використаний для посілань кредитів унизу кожної сторінки"
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr "Наданий URL"
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr "URL використаний для посілань кредитів унизу кожної сторінки"
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 msgid "Contact email address for your site"
 msgstr "Контактна електронна адреса для Вашого сайту"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 msgid "Local"
 msgstr "Локаль"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr "Часовий пояс за замовчуванням"
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr "Часовий пояс за замовчуванням для сайту; зазвичай UTC."
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr "Мова сайту за замовчуванням"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr "URL-адреси"
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr "Сервер"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr "Ім’я хосту сервера на якому знаходиться сайт."
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr "Надзвичайні URL-адреси"
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Використовувати надзвичайні (найбільш пам’ятні і визначні) URL-адреси?"
-
-#: actions/siteadminpanel.php:318
-msgid "Access"
-msgstr "Погодитись"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr "Приватно"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-"Заборонити анонімним відвідувачам (ті, що не увійшли до системи) переглядати "
-"сайт?"
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr "Лише за запрошеннями"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr "Зробити регістрацію лише за запрошеннями."
-
-#: actions/siteadminpanel.php:333
-msgid "Closed"
-msgstr "Закрито"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr "Скасувати подальшу регістрацію."
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr "Снепшоти"
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr "Випадково під час веб-хіта"
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr "Згідно плану робіт"
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr "Снепшоти даних"
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr "Коли надсилати статистичні дані до серверів status.net"
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr "Частота"
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr "Снепшоти надсилатимуться раз на N веб-хітів"
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr "Звітня URL-адреса"
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr "Снепшоти надсилатимуться на цю URL-адресу"
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr "Обмеження"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr "Текстові обмеження"
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr "Максимальна кількість знаків у дописі."
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr "Часове обмеження"
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 "Як довго користувачі мають зачекати (в секундах) аби надіслати той самий "
 "допис ще раз."
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-msgid "Save site settings"
-msgstr "Зберегти налаштування сайту"
-
 #: actions/smssettings.php:58
 msgid "SMS settings"
 msgstr "Налаштування СМС"
@@ -3531,15 +3927,26 @@ msgstr "Код не введено"
 msgid "You are not subscribed to that profile."
 msgstr "Ви не підписані до цього профілю."
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 msgid "Could not save subscription."
 msgstr "Не вдалося зберегти підписку."
 
-#: actions/subscribe.php:55
-msgid "Not a local user."
-msgstr "Такого користувача немає."
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+#, fuzzy
+msgid "No such profile."
+msgstr "Такого файлу немає."
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Ви не підписані до цього профілю."
+
+#: actions/subscribe.php:145
 msgid "Subscribed"
 msgstr "Підписані"
 
@@ -3603,7 +4010,7 @@ msgstr "Тут представлені ті, за чиїми дописами 
 msgid "These are the people whose notices %s listens to."
 msgstr "Тут представлені ті, за чиїми дописами слідкує %s."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3619,19 +4026,24 @@ msgstr ""
 "action.twittersettings%%), то можете автоматично підписатись до людей, за "
 "якими слідкуєте там."
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, php-format
 msgid "%s is not listening to anyone."
 msgstr "%s не відслідковує нічого"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 msgid "Jabber"
 msgstr "Jabber"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "СМС"
 
+#: actions/tag.php:68
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Дописи з теґом %1$s, сторінка %2$d"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3660,7 +4072,8 @@ msgstr "Позначити %s"
 msgid "User profile"
 msgstr "Профіль користувача."
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "Фото"
 
@@ -3719,7 +4132,7 @@ msgstr "У запиті відсутній ID профілю."
 msgid "Unsubscribed"
 msgstr "Відписано"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3734,85 +4147,65 @@ msgstr "Користувач"
 msgid "User settings for this StatusNet site."
 msgstr "Власні налаштування користувача для цього сайту StatusNet."
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr "Помилкове обмеження біо. Це мають бути цифри."
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr "Помилковий текст привітання. Максимальна довжина 255 знаків."
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr "Помилкова підписка за замовчуванням: '%1$s' не є користувачем."
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Профіль"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr "Обмеження біо"
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr "Максимальна довжина біо користувача в знаках."
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr "Нові користувачі"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr "Привітання нового користувача"
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr "Текст привітання нових користувачів (255 знаків)."
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 msgid "Default subscription"
 msgstr "Підписка за замовчуванням"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr "Автоматично підписувати нових користувачів до цього користувача."
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 msgid "Invitations"
 msgstr "Запрошення"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr "Запрошення скасовано"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 "В той чи інший спосіб дозволити користувачам вітати нових користувачів."
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr "Сесії"
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr "Сесії обробки даних"
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr "Обробка даних сесій самостійно."
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr "Сесія наладки"
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr "Виводити дані сесії наладки."
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Авторизувати підписку"
@@ -3827,36 +4220,36 @@ msgstr ""
 "підписатись на дописи цього користувача. Якщо Ви не збирались підписуватись "
 "ні на чиї дописи, просто натисніть «Відмінити»."
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr "Ліцензія"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Погодитись"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr "Підписатись до цього користувача"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Забраковано"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 msgid "Reject this subscription"
 msgstr "Відмінити цю підписку"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Немає запиту на авторизацію!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Підписку авторизовано"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
@@ -3866,11 +4259,11 @@ msgstr ""
 "Звіртесь з інструкціями на сайті для більш конкретної інформації про те, як "
 "авторизувати підписку. Ваш підписний токен:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Підписку скинуто"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
@@ -3880,37 +4273,37 @@ msgstr ""
 "з інструкціями на сайті для більш конкретної інформації про те, як скинути "
 "підписку."
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr "URI слухача «%s» тут не знайдено"
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr "URI слухача ‘%s’ задовге."
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr "URI слухача ‘%s’ це локальний користувач"
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr "URL-адреса профілю ‘%s’ для локального користувача."
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr "URL-адреса автари ‘%s’ помилкова."
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Не можна прочитати URL аватари ‘%s’."
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Неправильний тип зображення для URL-адреси аватари ‘%s’."
@@ -3931,6 +4324,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr "Поласуйте бутербродом!"
 
+#: actions/usergroups.php:64
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Групи %1$s, сторінка %2$d"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr "Шукати групи ще"
@@ -3960,10 +4358,6 @@ msgstr ""
 "Цей сайт працює на %1$s, версія %2$s. Авторські права 2008-2010 StatusNet, "
 "Inc. і розробники."
 
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr "Розробники"
@@ -4005,11 +4399,7 @@ msgstr ""
 msgid "Plugins"
 msgstr "Додатки"
 
-#: actions/version.php:195
-msgid "Name"
-msgstr "Ім’я"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 msgid "Version"
 msgstr "Версія"
 
@@ -4017,10 +4407,6 @@ msgstr "Версія"
 msgid "Author(s)"
 msgstr "Автор(и)"
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Опис"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4041,19 +4427,16 @@ msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr "Розміри цього файлу перевищують Вашу місячну квоту на %d байтів."
 
 #: classes/Group_member.php:41
-#, fuzzy
 msgid "Group join failed."
-msgstr "Ð\9fÑ\80оÑ\84Ñ\96лÑ\8c Ð³Ñ\80Ñ\83пи"
+msgstr "Ð\9dе Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð¿Ñ\80иÑ\94днаÑ\82иÑ\81Ñ\8c Ð´Ð¾ Ð³Ñ\80Ñ\83пи."
 
 #: classes/Group_member.php:53
-#, fuzzy
 msgid "Not part of group."
-msgstr "Не вдалося оновити групу."
+msgstr "Не є частиною групи."
 
 #: classes/Group_member.php:60
-#, fuzzy
 msgid "Group leave failed."
-msgstr "Ð\9fÑ\80оÑ\84Ñ\96лÑ\8c Ð³Ñ\80Ñ\83пи"
+msgstr "Ð\9dе Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð·Ð°Ð»Ð¸Ñ\88иÑ\82и Ð³Ñ\80Ñ\83пÑ\83."
 
 #: classes/Login_token.php:76
 #, php-format
@@ -4072,27 +4455,27 @@ msgstr "Не можна долучити повідомлення."
 msgid "Could not update message with new URI."
 msgstr "Не можна оновити повідомлення з новим URI."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Помилка бази даних при додаванні теґу: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 msgid "Problem saving notice. Too long."
 msgstr "Проблема при збереженні допису. Надто довге."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 msgid "Problem saving notice. Unknown user."
 msgstr "Проблема при збереженні допису. Невідомий користувач."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 "Дуже багато дописів за короткий термін; ходіть подихайте повітрям і "
 "повертайтесь за кілька хвилин."
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
@@ -4100,34 +4483,57 @@ msgstr ""
 "Дуже багато повідомлень за короткий термін; ходіть подихайте повітрям і "
 "повертайтесь за кілька хвилин."
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "Вам заборонено надсилати дописи до цього сайту."
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Проблема при збереженні допису."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Помилка бази даних при додаванні відповіді: %s"
+#: classes/Notice.php:882
+msgid "Problem saving group inbox."
+msgstr "Проблема при збереженні вхідних дописів для групи."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr "Вас позбавлено можливості підписатись."
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr "Вже підписаний!"
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr "Користувач заблокував Вас."
+
+#: classes/Subscription.php:157
+msgid "Not subscribed!"
+msgstr "Не підписано!"
+
+#: classes/Subscription.php:163
+msgid "Couldn't delete self-subscription."
+msgstr "Не можу видалити самопідписку."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Не вдалося видалити підписку."
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "Вітаємо на %1$s, @%2$s!"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "Не вдалося створити нову групу."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 msgid "Could not set group membership."
 msgstr "Не вдалося встановити членство."
 
@@ -4168,128 +4574,124 @@ msgstr "%1$s — %2$s"
 msgid "Untitled page"
 msgstr "Сторінка без заголовку"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "Відправна навігація по сайту"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Дім"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "Персональний профіль і стрічка друзів"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "Акаунт"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr "Змінити електронну адресу, аватару, пароль, профіль"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "З’єднання"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect to services"
 msgstr "З’єднання з сервісами"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr "Змінити конфігурацію сайту"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Запросити"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Запросіть друзів та колег приєднатись до Вас на %s"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Вийти"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "Вийти з сайту"
 
-#: lib/action.php:457
+#: lib/action.php:463
 msgid "Create an account"
 msgstr "Створити новий акаунт"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "Увійти на сайт"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Допомога"
 
-#: lib/action.php:463
+#: lib/action.php:469
 msgid "Help me!"
 msgstr "Допоможіть!"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Пошук"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "Пошук людей або текстів"
 
-#: lib/action.php:487
+#: lib/action.php:493
 msgid "Site notice"
 msgstr "Зауваження сайту"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "Огляд"
 
-#: lib/action.php:619
+#: lib/action.php:625
 msgid "Page notice"
 msgstr "Зауваження сторінки"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr "Другорядна навігація по сайту"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Про"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "ЧаПи"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr "Умови"
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Конфіденційність"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Джерело"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr "Бедж"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "Ліцензія програмного забезпечення StatusNet"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4298,12 +4700,12 @@ msgstr ""
 "**%%site.name%%** — це сервіс мікроблоґів наданий вам [%%site.broughtby%%](%%"
 "site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** — це сервіс мікроблоґів. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4314,33 +4716,56 @@ msgstr ""
 "для мікроблоґів, версія %s, доступному під [GNU Affero General Public "
 "License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 msgid "Site content license"
 msgstr "Ліцензія змісту сайту"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr "Зміст і дані %1$s є приватними і конфіденційними."
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr "Авторські права на зміст і дані належать %1$s. Всі права захищено."
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+"Авторські права на зміст і дані належать розробникам. Всі права захищено."
+
+#: lib/action.php:827
 msgid "All "
 msgstr "Всі "
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "ліцензія."
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "Нумерація сторінок"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr "Вперед"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 msgid "Before"
 msgstr "Назад"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
-msgstr "Виникли певні проблеми з токеном поточної сесії."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
@@ -4370,10 +4795,100 @@ msgstr "Основна конфігурація сайту"
 msgid "Design configuration"
 msgstr "Конфігурація дизайну"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+msgid "User configuration"
+msgstr "Конфігурація користувача"
+
+#: lib/adminpanelaction.php:327
+msgid "Access configuration"
+msgstr "Прийняти конфігурацію"
+
+#: lib/adminpanelaction.php:332
 msgid "Paths configuration"
 msgstr "Конфігурація шляху"
 
+#: lib/adminpanelaction.php:337
+msgid "Sessions configuration"
+msgstr "Конфігурація сесій"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+"API-ресурс вимагає дозвіл типу «читання-запис», але у вас є лише доступ для "
+"читання."
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+"Невдала спроба авторизації API, nickname = %1$s, proxy = %2$s, ip = %3$s"
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr "Керувати додатками"
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr "Іконка для цього додатку"
+
+#: lib/applicationeditform.php:204
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr "Опишіть додаток, вкладаючись у %d знаків"
+
+#: lib/applicationeditform.php:207
+msgid "Describe your application"
+msgstr "Опишіть Ваш додаток"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr "URL-адреса"
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr "URL-адреса веб-сторінки цього додатку"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr "Організація, відповідальна за цей додаток"
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr "URL-адреса веб-сторінки організації"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr "URL-адреса, на яку перенаправляти після автентифікації"
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr "Браузер"
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr "Десктоп"
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr "Тип додатку, браузер або десктоп"
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr "Лише читання"
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr "Читати-писати"
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+"Дозвіл за замовчуванням для цього додатку: лише читання або читати-писати"
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr "Відкликати"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr "Вкладення"
@@ -4394,11 +4909,11 @@ msgstr "Дописи, до яких прикріплено це вкладенн
 msgid "Tags for this attachment"
 msgstr "Теґи для цього вкладення"
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr "Не вдалося змінити пароль"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr "Змінювати пароль не дозволено"
 
@@ -4549,84 +5064,94 @@ msgstr "Проблема при збереженні допису."
 msgid "Specify the name of the user to subscribe to"
 msgstr "Зазначте ім’я користувача, до якого бажаєте підписатись"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "Такого користувача немає."
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "Підписано до %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "Зазначте ім’я користувача, від якого бажаєте відписатись"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "Відписано від %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "Виконання команди ще не завершено."
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "Сповіщення вимкнуто."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "Не можна вимкнути сповіщення."
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "Сповіщення увімкнуто."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "Не можна увімкнути сповіщення."
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr "Команду входу відключено"
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 "Це посилання можна використати лише раз, воно дійсне протягом 2 хвилин: %s"
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Відписано від %s"
+
+#: lib/command.php:709
 msgid "You are not subscribed to anyone."
 msgstr "Ви не маєте жодних підписок."
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Ви підписані до цієї особи:"
 msgstr[1] "Ви підписані до цих людей:"
 msgstr[2] "Ви підписані до цих людей:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 msgid "No one is subscribed to you."
 msgstr "До Вас ніхто не підписаний."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Ця особа є підписаною до Вас:"
 msgstr[1] "Ці люди підписані до Вас:"
 msgstr[2] "Ці люди підписані до Вас:"
 
-#: lib/command.php:712
+#: lib/command.php:753
 msgid "You are not a member of any groups."
 msgstr "Ви не є учасником жодної групи."
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Ви є учасником групи:"
 msgstr[1] "Ви є учасником таких груп:"
 msgstr[2] "Ви є учасником таких груп:"
 
-#: lib/command.php:728
+#: lib/command.php:769
+#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4640,6 +5165,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4702,19 +5228,19 @@ msgstr ""
 "tracks — наразі не виконується\n"
 "tracking — наразі не виконується\n"
 
-#: lib/common.php:131
+#: lib/common.php:136
 msgid "No configuration file found. "
 msgstr "Файлу конфігурації не знайдено. "
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr "Шукав файли конфігурації в цих місцях: "
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr "Запустіть файл інсталяції, аби полагодити це."
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr "Іти до файлу інсталяції."
 
@@ -4730,6 +5256,14 @@ msgstr "Оновлення за допомогою служби миттєвих
 msgid "Updates by SMS"
 msgstr "Оновлення через СМС"
 
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "З’єднання"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Авторизовані під’єднані додатки"
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr "Помилка бази даних"
@@ -4915,15 +5449,15 @@ msgstr "Мб"
 msgid "kB"
 msgstr "кб"
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr "[%s]"
 
-#: lib/jabber.php:385
-#, fuzzy, php-format
+#: lib/jabber.php:400
+#, php-format
 msgid "Unknown inbox source %d."
-msgstr "Ð\9dевÑ\96дома Ð¼Ð¾Ð²Ð° Â«%s»."
+msgstr "Ð\9dевÑ\96доме Ð´Ð¶ÐµÑ\80ело Ð²Ñ\85Ñ\96дного Ð¿Ð¾Ð²Ñ\96домленнÑ\8f %d."
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -5201,7 +5735,7 @@ msgstr ""
 "повідомлення аби долучити користувачів до розмови. Такі повідомлення бачите "
 "лише Ви."
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr "від"
 
@@ -5319,57 +5853,55 @@ msgid "Do not share my location"
 msgstr "Приховувати мою локацію"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr "Сховати інформацію"
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
+"На жаль, отримання інформації щодо Вашого місцезнаходження займе більше "
+"часу, ніж очікувалось; будь ласка, спробуйте пізніше"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr "Півн."
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr "Півд."
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr "Сх."
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr "Зах."
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr "в"
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 msgid "in context"
 msgstr "в контексті"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 msgid "Repeated by"
 msgstr "Вторуванні"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr "Відповісти на цей допис"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Відповісти"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 msgid "Notice repeated"
 msgstr "Допис вторували"
 
@@ -5401,11 +5933,7 @@ msgstr "Помилка при додаванні віддаленого проф
 msgid "Duplicate notice"
 msgstr "Дублікат допису"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr "Вас позбавлено можливості підписатись."
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Не вдалося додати нову підписку."
 
@@ -5421,19 +5949,19 @@ msgstr "Відповіді"
 msgid "Favorites"
 msgstr "Обрані"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Вхідні"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Ваші вхідні повідомлення"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Вихідні"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Надіслані вами повідомлення"
 
@@ -5510,6 +6038,10 @@ msgstr "Повторити цей допис?"
 msgid "Repeat this notice"
 msgstr "Вторувати цьому допису"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Користувача для однокористувацького режиму не визначено."
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr "Пісочниця"
@@ -5577,34 +6109,6 @@ msgstr "Люди підписані до %s"
 msgid "Groups %s is a member of"
 msgstr "%s бере участь в цих групах"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr "Вже підписаний!"
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr "Користувач заблокував Вас."
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "Невдала підписка."
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "Не вдалося підписати інших до Вас."
-
-#: lib/subs.php:137
-msgid "Not subscribed!"
-msgstr "Не підписано!"
-
-#: lib/subs.php:142
-msgid "Couldn't delete self-subscription."
-msgstr "Не можу видалити самопідписку."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Не вдалося видалити підписку."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5655,67 +6159,67 @@ msgstr "Аватара"
 msgid "User actions"
 msgstr "Діяльність користувача"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 msgid "Edit profile settings"
 msgstr "Налаштування профілю"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr "Правка"
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr "Надіслати пряме повідомлення цьому користувачеві"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr "Повідомлення"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr "Модерувати"
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "мить тому"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "хвилину тому"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "близько %d хвилин тому"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "годину тому"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "близько %d годин тому"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "день тому"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "близько %d днів тому"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "місяць тому"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "близько %d місяців тому"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "рік тому"
 
@@ -5729,7 +6233,7 @@ msgstr "%s є неприпустимим кольором!"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr "%s неприпустимий колір! Використайте 3 або 6 знаків (HEX-формат)"
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 82d4d2037a52c8c3b71e7ba8ed1e02517b099342..4dcc584883339d2971423dbc30478ef919a3827c 100644 (file)
@@ -7,17 +7,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:21+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:51:57+0000\n"
 "Language-Team: Vietnamese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "Chấp nhận"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "Thay đổi hình đại diện"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "Đăng ký"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "Riêng tư"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "Thư mời"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "Ban user"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "Lưu"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "Thay đổi hình đại diện"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -33,25 +92,29 @@ msgstr "Không có tin nhắn nào."
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "Không có user nào."
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s và bạn bè"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +155,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +167,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s và bạn bè"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -115,23 +178,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "Phương thức API không tìm thấy!"
@@ -146,7 +209,7 @@ msgstr "Phương thức API không tìm thấy!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "Phương thức này yêu cầu là POST."
 
@@ -177,8 +240,9 @@ msgstr "Không thể lưu hồ sơ cá nhân."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -303,12 +367,12 @@ msgstr "Không thể cập nhật thành viên."
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "Không thể lấy lại các tin nhắn ưa thích"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "Không tìm thấy bất kỳ trạng thái nào."
@@ -331,7 +395,8 @@ msgstr "Biệt hiệu này đã dùng rồi. Hãy nhập biệt hiệu khác."
 msgid "Not a valid nickname."
 msgstr "Biệt hiệu không hợp lệ."
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -343,7 +408,8 @@ msgstr "Trang chủ không phải là URL"
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tên đầy đủ quá dài (tối đa là 255 ký tự)."
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "Lý lịch quá dài (không quá 140 ký tự)"
@@ -379,7 +445,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "Phương thức API không tìm thấy!"
@@ -423,6 +489,115 @@ msgstr "%s và nhóm"
 msgid "groups on %s"
 msgstr "Mã nhóm"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Kích thước không hợp lệ."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ."
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "Lỗi xảy ra khi tạo thành viên."
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "Lỗi cơ sở dữ liệu khi chèn trả lời: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Bất ngờ gửi mẫu thông tin. "
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "Giới thiệu"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "Biệt danh"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "Mật khẩu"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "Phương thức này yêu cầu là POST hoặc DELETE"
@@ -455,17 +630,17 @@ msgstr "Hình đại diện đã được cập nhật."
 msgid "No status with that ID found."
 msgstr "Không tìm thấy trạng thái nào tương ứng với ID đó."
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "Quá dài. Tối đa là 140 ký tự."
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "Không tìm thấy"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -480,7 +655,7 @@ msgstr "Không hỗ trợ kiểu file ảnh này."
 msgid "%1$s / Favorites from %2$s"
 msgstr "Tìm kiếm các tin nhắn ưa thích của %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "Tất cả các cập nhật của %s"
@@ -491,7 +666,7 @@ msgstr "Tất cả các cập nhật của %s"
 msgid "%s timeline"
 msgstr "Dòng tin nhắn của %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!"
@@ -507,27 +682,22 @@ msgstr "%1$s / Các cập nhật đang trả lời tới %2$s"
 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
 #, fuzzy, php-format
 msgid "%s public timeline"
 msgstr "Dòng tin công cộng"
 
-#: 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 cập nhật từ tất cả mọi người!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "Trả lời cho %s"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "Trả lời cho %s"
@@ -537,7 +707,7 @@ msgstr "Trả lời cho %s"
 msgid "Notices tagged with %s"
 msgstr "Thông báo được gắn thẻ %s"
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Dòng tin nhắn cho %s"
@@ -602,8 +772,8 @@ msgstr ""
 msgid "Preview"
 msgstr "Xem trước"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete"
 msgstr "Xóa tin nhắn"
@@ -617,29 +787,6 @@ msgstr "Tải file"
 msgid "Crop"
 msgstr "Nhóm"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "Bất ngờ gửi mẫu thông tin. "
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -678,8 +825,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "Không"
 
@@ -688,13 +836,13 @@ msgstr "Không"
 msgid "Do not block this user"
 msgstr "Bỏ chặn người dùng này"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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"
@@ -780,7 +928,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "Không thể xóa email xác nhận."
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "Xác nhận địa chỉ"
 
 #: actions/confirmaddress.php:159
@@ -798,10 +947,55 @@ msgstr "Không có mã số xác nhận."
 msgid "Notices"
 msgstr "Tin nhắn"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Tin nhắn không có hồ sơ cá nhân"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Bạn chưa cập nhật thông tin riêng"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Không có tin nhắn nào."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Không thể xóa tin nhắn này."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Xóa tin nhắ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
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -832,7 +1026,7 @@ msgstr "Bạn có chắc chắn là muốn xóa tin nhắn này không?"
 msgid "Do not delete this notice"
 msgstr "Không thể xóa tin nhắn này."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete this notice"
 msgstr "Xóa tin nhắn"
@@ -979,16 +1173,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "Lưu"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 #, fuzzy
 msgid "Save design"
@@ -1004,10 +1188,86 @@ msgstr "Tin nhắn này đã có trong danh sách tin nhắn ưa thích của b
 msgid "Add to favorites"
 msgstr "Tìm kiếm các tin nhắn ưa thích của %s"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "Không có tài liệu nào."
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "Tin nhắn không có hồ sơ cá nhân"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "Không có tin nhắn nào."
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "Cùng mật khẩu ở trên. Bắt buộc."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "Tên đầy đủ quá dài (tối đa là 255 ký tự)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Biệt hiệu này đã dùng rồi. Hãy nhập biệt hiệu khác."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "Mô tả"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "Trang chủ không phải là URL"
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "Tên khu vực quá dài (không quá 255 ký tự)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "Không thể cập nhật thành viên."
+
 #: actions/editgroup.php:56
 #, fuzzy, php-format
 msgid "Edit %s group"
@@ -1038,7 +1298,7 @@ msgstr "Lý lịch quá dài (không quá 140 ký tự)"
 msgid "Could not update group."
 msgstr "Không thể cập nhật thành viên."
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "Không thể tạo favorite."
@@ -1082,7 +1342,8 @@ msgstr ""
 "để nhận tin nhắn và lời hướng dẫn."
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "Hủy"
 
@@ -1168,7 +1429,7 @@ msgid "Cannot normalize that email address"
 msgstr "Không thể bình thường hóa địa chỉ GTalk này"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "Địa chỉ email không hợp lệ."
 
@@ -1182,7 +1443,7 @@ msgstr "Bạn đã dùng địa chỉ email này rồi"
 msgid "That email address already belongs to another user."
 msgstr "Địa chỉ email GTalk này đã có người khác sử dụng rồi."
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "Không thể  chèn mã xác nhận."
@@ -1249,7 +1510,7 @@ msgstr "Tin nhắn này đã có trong danh sách tin nhắn ưa thích của b
 msgid "Disfavor favorite"
 msgstr "Không thích"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1406,7 +1667,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"
@@ -1509,24 +1770,24 @@ msgstr "Thành viên"
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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"
@@ -1707,6 +1968,11 @@ msgstr ""
 msgid "That is not your Jabber ID."
 msgstr "Đây không phải Jabber ID của bạn."
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "Hộp thư đến của %s"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1790,7 +2056,7 @@ msgstr "Tin nhắn cá nhân"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Không bắt buộc phải thêm thông điệp vào thư mời."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "Gửi"
 
@@ -1894,7 +2160,7 @@ msgstr "Sai tên đăng nhập hoặc mật khẩu."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Chưa được phép."
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Đăng nhập"
@@ -1903,17 +2169,6 @@ msgstr "Đăng nhập"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "Biệt danh"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "Mật khẩu"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "Nhớ tôi"
@@ -1944,21 +2199,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 "
@@ -1967,6 +2222,29 @@ msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "Không có tin nhắn nào."
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "Không thể tạo favorite."
+
 #: actions/newgroup.php:53
 #, fuzzy
 msgid "New group"
@@ -2081,6 +2359,50 @@ msgstr "Tin đã gửi"
 msgid "Nudge sent!"
 msgstr "Tin đã gửi"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "Bạn chưa cập nhật thông tin riêng"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "Tin nhắn không có hồ sơ cá nhân"
@@ -2099,8 +2421,8 @@ msgstr "Kết nối"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "Không hỗ trợ định dạng dữ liệu này."
 
@@ -2115,7 +2437,7 @@ msgstr "Tìm kiếm thông báo"
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Thiết lập tài khoản Twitter"
 
 #: actions/othersettings.php:71
@@ -2172,6 +2494,11 @@ msgstr "Nội dung tin nhắn không hợp lệ"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "Hộp thư đi của %s"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2247,7 +2574,7 @@ msgstr "Không thể lưu mật khẩu mới"
 msgid "Password saved."
 msgstr "Đã lưu mật khẩu."
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2255,146 +2582,163 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "Trang này không phải là phương tiện truyền thông mà bạn chấp nhận."
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "Thư mời"
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+#, fuzzy
+msgid "Server"
+msgstr "Khôi phục"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "Thông báo mới"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "Hình đại diện"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "Thay đổi hình đại diện"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "Hình đại diện đã được cập nhật."
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "Hình đại diện đã được cập nhật."
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 #, fuzzy
 msgid "Backgrounds"
 msgstr "Background Theme:"
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 #, fuzzy
 msgid "Background server"
 msgstr "Background Theme:"
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 #, fuzzy
 msgid "Background path"
 msgstr "Background Theme:"
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 #, fuzzy
 msgid "Background directory"
 msgstr "Background Theme:"
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "Khôi phục"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "Tin nhắn"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "Khôi phục"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "Thông báo mới"
@@ -2458,7 +2802,7 @@ msgid "Full name"
 msgstr "Tên đầy đủ"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "Trang chủ hoặc Blog"
 
@@ -2482,7 +2826,7 @@ msgstr "Lý lịch"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "Thành phố"
@@ -2506,7 +2850,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "Ngôn ngữ"
 
@@ -2532,7 +2876,7 @@ msgstr "Tự động theo những người nào đăng ký theo tôi"
 msgid "Bio is too long (max %d chars)."
 msgstr "Lý lịch quá dài (không quá 140 ký tự)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2546,26 +2890,26 @@ msgstr "Ngôn ngữ quá dài (tối đa là 50 ký tự)."
 msgid "Invalid tag: \"%s\""
 msgstr "Trang chủ '%s'  không hợp lệ"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 #, fuzzy
 msgid "Couldn't update user for autosubscribe."
 msgstr "Không thể cập nhật thành viên."
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "Không thể lưu hồ sơ cá nhân."
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "Không thể lưu hồ sơ cá nhân."
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Không thể lưu hồ sơ cá nhân."
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "Đã lưu các điều chỉnh."
 
@@ -2588,39 +2932,39 @@ msgstr "Dòng tin công cộng"
 msgid "Public timeline"
 msgstr "Dòng tin công cộng"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Dòng tin công cộng"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Dòng tin công cộng"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Dòng tin công cộng"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2629,7 +2973,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2663,7 +3007,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2803,7 +3147,7 @@ msgstr "Lỗi xảy ra với mã xác nhận."
 msgid "Registration successful"
 msgstr "Đăng ký thành công"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Đăng ký"
@@ -2846,7 +3190,7 @@ msgid "Same as password above. Required."
 msgstr "Cùng mật khẩu ở trên. Bắt buộc."
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "Email"
 
@@ -2950,7 +3294,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "URL trong hồ sơ cá nhân của bạn ở trên các trang microblogging khác"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "Theo bạn này"
 
@@ -2991,7 +3335,7 @@ msgstr "Bạn không thể đăng ký nếu không đồng ý các điều kho
 msgid "You already repeated that notice."
 msgstr "Bạn đã theo những người này:"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "Tạo"
@@ -3007,6 +3351,11 @@ msgstr "Tạo"
 msgid "Replies to %s"
 msgstr "Trả lời cho %s"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "%s chào mừng bạn "
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -3048,6 +3397,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "%s chào mừng bạn "
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Hình đại diện đã được cập nhật."
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -3058,6 +3412,125 @@ msgstr "Bạn đã theo những người này:"
 msgid "User is already sandboxed."
 msgstr "Người dùng không có thông tin."
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "Thay đổi hình đại diện"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "Tin nhắn không có hồ sơ cá nhân"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "Biệt danh"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "Thư mời đã gửi"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+msgid "Description"
+msgstr "Mô tả"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "Số liệu thống kê"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Bạn có chắc chắn là muốn xóa tin nhắn này không?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "Những tin nhắn ưa thích của %s"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "Không thể lấy lại các tin nhắn ưa thích"
@@ -3107,18 +3580,23 @@ msgstr ""
 msgid "%s group"
 msgstr "%s và nhóm"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "Thành viên"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "Thông tin nhóm"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 #, fuzzy
 msgid "Note"
 msgstr "Tin nhắn"
@@ -3167,10 +3645,6 @@ msgstr ""
 msgid "All members"
 msgstr "Thành viên"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "Số liệu thống kê"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3228,6 +3702,11 @@ msgstr "Tin đã gửi"
 msgid " tagged %s"
 msgstr "Thông báo được gắn thẻ %s"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s và bạn bè"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3253,25 +3732,25 @@ msgstr "Dòng tin nhắn cho %s"
 msgid "FOAF for %s"
 msgstr "Hộp thư đi của %s"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3280,7 +3759,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3288,7 +3767,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "Trả lời cho %s"
@@ -3307,206 +3786,148 @@ msgstr "Người dùng không có thông tin."
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "Địa chỉ email không hợp lệ."
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "Thông báo mới"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "Dia chi email moi de gui tin nhan den %s"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "Thành phố"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "Ngôn ngữ bạn thích"
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "Khôi phục"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "Chấp nhận"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "Riêng tư"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "Thư mời"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "Ban user"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "Thay đổi hình đại diện"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3622,17 +4043,27 @@ msgstr "Không có mã nào được nhập"
 msgid "You are not subscribed to that profile."
 msgstr "Bạn chưa cập nhật thông tin riêng"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "Không thể tạo đăng nhận."
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "Không có user nào."
+msgid "No such profile."
+msgstr "Không có tin nhắn nào."
+
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "Bạn chưa cập nhật thông tin riêng"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "Theo bạn này"
@@ -3693,7 +4124,7 @@ msgstr "Có nhiều người gửi lời nhắn để bạn nghe theo."
 msgid "These are the people whose notices %s listens to."
 msgstr "Có nhiều người gửi lời nhắn để  %s nghe theo."
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3703,20 +4134,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s dang theo doi tin nhan cua ban tren %2$s."
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "Không có Jabber ID."
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Dòng tin nhắn cho %s"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3747,7 +4183,8 @@ msgstr "Từ khóa"
 msgid "User profile"
 msgstr "Hồ sơ"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3810,7 +4247,7 @@ msgstr "Không có URL cho hồ sơ để quay về."
 msgid "Unsubscribed"
 msgstr "Hết theo"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3825,89 +4262,69 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "Hồ sơ "
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "Gửi thư mời đến những người chưa có tài khoản"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "Tất cả đăng nhận"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "Tự động theo những người nào đăng ký theo tôi"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "Thư mời đã gửi"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "Thư mời đã gửi"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Đăng nhận cho phép"
@@ -3923,38 +4340,38 @@ msgstr ""
 "nhắn của các thành viên này. Nếu bạn không yêu cầu đăng nhận xem tin nhắn "
 "của họ, hãy nhấn \"Hủy bỏ\""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "Chấp nhận"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "Theo nhóm này"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "Từ chối"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "Tất cả đăng nhận"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "Không có yêu cầu!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "Đăng nhận được phép"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3965,11 +4382,11 @@ msgstr ""
 "hướng dẫn chi tiết trên site để biết cách cho phép đăng ký. Đăng nhận token "
 "của bạn là:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "Đăng nhận từ chối"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3979,37 +4396,37 @@ msgstr ""
 "Đăng nhận này đã bị từ chối, nhưng không có URL nào để quay về. Hãy kiểm tra "
 "các hướng dẫn chi tiết trên site để "
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "Không thể đọc URL cho hình đại diện '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "Kiểu file ảnh không phù hợp với  '%s'"
@@ -4029,6 +4446,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "Thành viên"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -4055,11 +4477,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Hình đại diện đã được cập nhật."
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4091,12 +4508,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "Biệt danh"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "Cá nhân"
@@ -4105,10 +4517,6 @@ msgstr "Cá nhân"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-msgid "Description"
-msgstr "Mô tả"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4161,61 +4569,88 @@ msgstr "Không thể chèn thêm vào đăng nhận."
 msgid "Could not update message with new URI."
 msgstr "Không thể cập nhật thông tin user với địa chỉ email đã được xác nhận."
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, fuzzy, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "Lỗi cơ sở dữ liệu khi chèn trả lời: %s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "Lỗi cơ sở dữ liệu khi chèn trả lời: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%s (%s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+#, fuzzy
+msgid "User has blocked you."
+msgstr "Người dùng không có thông tin."
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "Chưa đăng nhận!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "Không thể xóa đăng nhận."
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "Không thể xóa đăng nhận."
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "%s chào mừng bạn "
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "Không thể tạo favorite."
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "Không thể tạo đăng nhận."
@@ -4260,140 +4695,135 @@ msgstr "%s (%s)"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "Trang chủ"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "Giới thiệu"
-
-#: lib/action.php:435
+#: lib/action.php:441
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "Thay đổi mật khẩu của bạn"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "Kết nối"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "Không thể chuyển đến máy chủ: %s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Tôi theo"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Thư mời"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, fuzzy, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 "Điền địa chỉ email và nội dung tin nhắn để gửi thư mời bạn bè và đồng nghiệp "
 "của bạn tham gia vào dịch vụ này."
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "Thoát"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "Tạo tài khoản mới"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "Hướng dẫn"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "Hướng dẫn"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "Tìm kiếm"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "Thông báo mới"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "Thông báo mới"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Tôi theo"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "Giới thiệu"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "Riêng tư"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "Nguồn"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "Liên hệ"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "Tin đã gửi"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4402,12 +4832,12 @@ msgstr ""
 "**%%site.name%%** là dịch vụ gửi tin nhắn được cung cấp từ [%%site.broughtby%"
 "%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** là dịch vụ gửi tin nhắn. "
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, fuzzy, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4418,37 +4848,58 @@ msgstr ""
 "quyền [GNU Affero General Public License](http://www.fsf.org/licensing/"
 "licenses/agpl-3.0.html)."
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "Tìm theo nội dung của tin nhắn"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "Sau"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "Trước"
 
-#: lib/action.php:1167
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4483,11 +4934,105 @@ msgstr "Xac nhan dia chi email"
 msgid "Design configuration"
 msgstr "Xác nhận SMS"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "Xác nhận SMS"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "Xác nhận SMS"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "Xác nhận SMS"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "Xác nhận SMS"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "Nói về những sở thích của nhóm trong vòng 140 ký tự"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "Nói về những sở thích của nhóm trong vòng 140 ký tự"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "Nguồn"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "URL về Trang chính, Blog, hoặc hồ sơ cá nhân của bạn trên "
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "URL về Trang chính, Blog, hoặc hồ sơ cá nhân của bạn trên "
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "Xóa"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4509,12 +5054,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "Đã lưu mật khẩu."
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "Đã lưu mật khẩu."
@@ -4674,82 +5219,92 @@ msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "Không có user nào."
+
+#: lib/command.php:561
 #, fuzzy, php-format
 msgid "Subscribed to %s"
 msgstr "Theo nhóm này"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, fuzzy, php-format
 msgid "Unsubscribed from %s"
 msgstr "Hết theo"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 #, fuzzy
 msgid "Notification off."
 msgstr "Không có mã số xác nhận."
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 #, fuzzy
 msgid "Notification on."
 msgstr "Không có mã số xác nhận."
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "Hết theo"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "Bạn chưa cập nhật thông tin riêng"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "Bạn đã theo những người này:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "Không thể tạo favorite."
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "Không thể tạo favorite."
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "Bạn chưa cập nhật thông tin riêng"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "Bạn chưa cập nhật thông tin riêng"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4763,6 +5318,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4790,20 +5346,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "Không có mã số xác nhận."
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4819,6 +5375,15 @@ msgstr "Thay đổi bởi tin nhắn nhanh (IM)"
 msgid "Updates by SMS"
 msgstr "Thay đổi bởi SMS"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "Kết nối"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -5020,12 +5585,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5280,7 +5845,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " từ "
@@ -5403,61 +5968,57 @@ msgid "Do not share my location"
 msgstr "Không thể lưu hồ sơ cá nhân."
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "Không"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "Không có nội dung!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "Tạo"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "Trả lời tin nhắn này"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr "Trả lời"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Tin đã gửi"
@@ -5494,11 +6055,7 @@ msgstr "Lỗi xảy ra khi thêm mới hồ sơ cá nhân"
 msgid "Duplicate notice"
 msgstr "Xóa tin nhắn"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "Không thể chèn thêm vào đăng nhận."
 
@@ -5514,19 +6071,19 @@ msgstr "Trả lời"
 msgid "Favorites"
 msgstr "Ưa thích"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "Hộp thư đến"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "Thư đến của bạn"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "Hộp thư đi"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "Thư bạn đã gửi"
 
@@ -5612,6 +6169,10 @@ msgstr "Trả lời tin nhắn này"
 msgid "Repeat this notice"
 msgstr "Trả lời tin nhắn này"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5686,39 +6247,6 @@ msgstr "Theo nhóm này"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-#, fuzzy
-msgid "User has blocked you."
-msgstr "Người dùng không có thông tin."
-
-#: lib/subs.php:63
-#, fuzzy
-msgid "Could not subscribe."
-msgstr "Chưa đăng nhận!"
-
-#: lib/subs.php:82
-#, fuzzy
-msgid "Could not subscribe other to you."
-msgstr "Không thể tạo favorite."
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "Chưa đăng nhận!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "Không thể xóa đăng nhận."
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "Không thể xóa đăng nhận."
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5775,70 +6303,70 @@ msgstr "Hình đại diện"
 msgid "User actions"
 msgstr "Không tìm thấy action"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "Các thiết lập cho Hồ sơ cá nhân"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 #, fuzzy
 msgid "Send a direct message to this user"
 msgstr "Bạn đã theo những người này:"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 #, fuzzy
 msgid "Message"
 msgstr "Tin mới nhất"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "vài giây trước"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "1 phút trước"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "%d phút trước"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "1 giờ trước"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "%d giờ trước"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "1 ngày trước"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "%d ngày trước"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "1 tháng trước"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "%d tháng trước"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "1 năm trước"
 
@@ -5852,7 +6380,7 @@ msgstr "Trang chủ không phải là URL"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
index 32adff43861efb325b512fee3139ec89cd47781d..60ca89d66c99339d7351d0ea21869a2ce008ec0d 100644 (file)
@@ -10,17 +10,76 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:24+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:52:00+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "接受"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "头像设置"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "注册"
+
+#: actions/accessadminpanel.php:161
+#, fuzzy
+msgid "Private"
+msgstr "隐私"
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+#, fuzzy
+msgid "Invite only"
+msgstr "邀请"
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "阻止"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr "保存"
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "头像设置"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 msgid "No such page"
@@ -35,25 +94,29 @@ msgstr "没有该页面"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "没有这个用户。"
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s 及好友"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -94,7 +157,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -106,8 +169,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s 及好友"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 "来自%2$s 上 %1$s 和好友的更新!"
@@ -117,23 +180,23 @@ msgstr "来自%2$s 上 %1$s 和好友的更新!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "API 方法未实现!"
@@ -148,7 +211,7 @@ msgstr "API 方法未实现!"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr "此方法接受POST请求。"
 
@@ -179,8 +242,9 @@ msgstr "无法保存个人信息。"
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -301,12 +365,12 @@ msgstr "无法更新用户。"
 msgid "Two user ids or screen_names must be supplied."
 msgstr "必须提供两个用户帐号或昵称。"
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "无法获取收藏的通告。"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "找不到任何信息。"
@@ -329,7 +393,8 @@ msgstr "昵称已被使用,换一个吧。"
 msgid "Not a valid nickname."
 msgstr "不是有效的昵称。"
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -341,7 +406,8 @@ msgstr "主页的URL不正确。"
 msgid "Full name is too long (max 255 chars)."
 msgstr "全名过长(不能超过 255 个字符)。"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "描述过长(不能超过140字符)。"
@@ -377,7 +443,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "API 方法未实现!"
@@ -421,6 +487,115 @@ msgstr "%s 群组"
 msgid "groups on %s"
 msgstr "组动作"
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "大小不正确。"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "会话标识有问题,请重试。"
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "用户名或密码不正确。"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "保存用户设置时出错。"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "添加标签时数据库出错:%s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "未预料的表单提交。"
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+msgid "Account"
+msgstr "帐号"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "昵称"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr "密码"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+#, fuzzy
+msgid "Allow"
+msgstr "全部"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr "此方法接受POST或DELETE请求。"
@@ -453,17 +628,17 @@ msgstr "头像已更新。"
 msgid "No status with that ID found."
 msgstr "没有找到此ID的信息。"
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, fuzzy, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr "超出长度限制。不能超过 140 个字符。"
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr "未找到"
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -478,7 +653,7 @@ msgstr "不支持这种图像格式。"
 msgid "%1$s / Favorites from %2$s"
 msgstr "%s 的收藏 / %s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "%s 收藏了 %s 的 %s 通告。"
@@ -489,7 +664,7 @@ msgstr "%s 收藏了 %s 的 %s 通告。"
 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!"
@@ -505,27 +680,22 @@ msgstr "%1$s / 回复 %2$s 的消息"
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
 msgstr "回复 %2$s / %3$s 的 %1$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 消息!"
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
 msgid "Repeated to %s"
 msgstr "%s 的回复"
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, fuzzy, php-format
 msgid "Repeats of %s"
 msgstr "%s 的回复"
@@ -535,7 +705,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
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "%2$s 上 %1$s 的更新!"
@@ -597,8 +767,8 @@ msgstr "原来的"
 msgid "Preview"
 msgstr "预览"
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete"
 msgstr "删除"
@@ -611,29 +781,6 @@ msgstr "上传"
 msgid "Crop"
 msgstr "剪裁"
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr "会话标识有问题,请重试。"
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr "未预料的表单提交。"
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr "请选择一块方形区域作为你的头像"
@@ -672,8 +819,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr "否"
 
@@ -682,13 +830,13 @@ msgstr "否"
 msgid "Do not block this user"
 msgstr "取消阻止次用户"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "阻止该用户"
@@ -776,7 +924,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "无法删除电子邮件确认。"
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "确认地址"
 
 #: actions/confirmaddress.php:159
@@ -794,10 +943,55 @@ msgstr "确认码"
 msgid "Notices"
 msgstr "通告"
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "您必须登录才能创建小组。"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "通告没有关联个人信息"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "您未告知此个人信息"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "会话标识有问题,请重试。"
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "没有这份通告。"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "无法删除通告。"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "删除通告"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -828,7 +1022,7 @@ msgstr "确定要删除这条消息吗?"
 msgid "Do not delete this notice"
 msgstr "无法删除通告。"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 #, fuzzy
 msgid "Delete this notice"
 msgstr "删除通告"
@@ -971,16 +1165,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr "保存"
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -993,10 +1177,87 @@ msgstr "此通告未被收藏!"
 msgid "Add to favorites"
 msgstr "加入收藏"
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "没有这份文档。"
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "其他选项"
+
+#: actions/editapplication.php:66
+#, fuzzy
+msgid "You must be logged in to edit an application."
+msgstr "您必须登录才能创建小组。"
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "没有这份通告。"
+
+#: actions/editapplication.php:161
+#, fuzzy
+msgid "Use this form to edit your application."
+msgstr "使用这个表单来编辑组"
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+#, fuzzy
+msgid "Name is required."
+msgstr "相同的密码。此项必填。"
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "全名过长(不能超过 255 个字符)。"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "昵称已被使用,换一个吧。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "描述"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "主页的URL不正确。"
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "位置过长(不能超过255个字符)。"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "无法更新组"
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1025,7 +1286,7 @@ msgstr "描述过长(不能超过140字符)。"
 msgid "Could not update group."
 msgstr "无法更新组"
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "无法创建收藏。"
@@ -1068,7 +1329,8 @@ msgstr ""
 "指示。"
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "取消"
 
@@ -1150,7 +1412,7 @@ msgid "Cannot normalize that email address"
 msgstr "无法识别此电子邮件"
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "不是有效的电子邮件。"
 
@@ -1162,7 +1424,7 @@ msgstr "您已登记此电子邮件。"
 msgid "That email address already belongs to another user."
 msgstr "此电子邮件属于其他用户。"
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "无法插入验证码。"
@@ -1224,7 +1486,7 @@ msgstr "已收藏此通告!"
 msgid "Disfavor favorite"
 msgstr "取消收藏"
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1383,7 +1645,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 "阻止用户"
@@ -1485,25 +1747,25 @@ msgstr "%s 组成员, 第 %d 页"
 msgid "A list of the users in this group."
 msgstr "该组成员列表。"
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1677,6 +1939,11 @@ msgstr "验证码已被发送到您新增的即时通讯帐号。您必须允许
 msgid "That is not your Jabber ID."
 msgstr "这不是您的Jabber帐号。"
 
+#: actions/inbox.php:59
+#, fuzzy, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr "%s 的收件箱"
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1753,7 +2020,7 @@ msgstr "个人消息"
 msgid "Optionally add a personal message to the invitation."
 msgstr "在邀请中加几句话(可选)。"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr "发送"
 
@@ -1851,7 +2118,7 @@ msgstr "用户名或密码不正确。"
 msgid "Error setting user. You are probably not authorized."
 msgstr "未认证。"
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "登录"
@@ -1860,17 +2127,6 @@ msgstr "登录"
 msgid "Login to site"
 msgstr "登录"
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "昵称"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr "密码"
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr "记住登录状态"
@@ -1898,21 +2154,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才能编辑这个组"
@@ -1921,6 +2177,30 @@ msgstr "只有admin才能编辑这个组"
 msgid "No current status"
 msgstr "没有当前状态"
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "没有这份通告。"
+
+#: actions/newapplication.php:64
+#, fuzzy
+msgid "You must be logged in to register an application."
+msgstr "您必须登录才能创建小组。"
+
+#: actions/newapplication.php:143
+#, fuzzy
+msgid "Use this form to register a new application."
+msgstr "使用此表格创建组。"
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "无法创建收藏。"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr "新组"
@@ -2028,6 +2308,51 @@ msgstr "振铃呼叫发出。"
 msgid "Nudge sent!"
 msgstr "振铃呼叫已经发出!"
 
+#: actions/oauthappssettings.php:59
+#, fuzzy
+msgid "You must be logged in to list your applications."
+msgstr "您必须登录才能创建小组。"
+
+#: actions/oauthappssettings.php:74
+#, fuzzy
+msgid "OAuth applications"
+msgstr "其他选项"
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "您未告知此个人信息"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr "通告没有关联个人信息"
@@ -2046,8 +2371,8 @@ msgstr "连接"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr "不支持的数据格式。"
 
@@ -2061,7 +2386,7 @@ msgstr "搜索通告"
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "Twitter 设置"
 
 #: actions/othersettings.php:71
@@ -2119,6 +2444,11 @@ msgstr "通告内容不正确"
 msgid "Login token expired."
 msgstr "登录"
 
+#: actions/outbox.php:58
+#, fuzzy, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr "%s 的发件箱"
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2191,7 +2521,7 @@ msgstr "无法保存新密码。"
 msgid "Password saved."
 msgstr "密码已保存。"
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2199,142 +2529,159 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "这个页面不提供您想要的媒体类型"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 #, fuzzy
 msgid "Site"
 msgstr "邀请"
 
-#: actions/pathsadminpanel.php:221
-msgid "Path"
-msgstr ""
-
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
 #, fuzzy
-msgid "Site path"
+msgid "Server"
+msgstr "恢复"
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+#, fuzzy
+msgid "Site path"
 msgstr "新通告"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "头像"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "头像设置"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "头像已更新。"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "头像已更新。"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 #, fuzzy
 msgid "SSL"
 msgstr "SMS短信"
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 #, fuzzy
 msgid "Never"
 msgstr "恢复"
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 #, fuzzy
 msgid "Sometimes"
 msgstr "通告"
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "恢复"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "新通告"
@@ -2396,7 +2743,7 @@ msgid "Full name"
 msgstr "全名"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "主页"
 
@@ -2420,7 +2767,7 @@ msgstr "自述"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "位置"
@@ -2444,7 +2791,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr "你的标签 (字母letters, 数字numbers, -, ., 和 _), 以逗号或空格分隔"
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr "语言"
 
@@ -2470,7 +2817,7 @@ msgstr "自动订阅任何订阅我的更新的人(这个选项最适合机器
 msgid "Bio is too long (max %d chars)."
 msgstr "自述过长(不能超过140字符)。"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr "未选择时区。"
 
@@ -2483,25 +2830,25 @@ msgstr "语言过长(不能超过50个字符)。"
 msgid "Invalid tag: \"%s\""
 msgstr "主页'%s'不正确"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr "无法更新用户的自动订阅选项。"
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "无法保存个人信息。"
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "无法保存个人信息。"
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "无法保存个人信息。"
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr "设置已保存。"
 
@@ -2524,39 +2871,39 @@ msgstr "公开的时间表"
 msgid "Public timeline"
 msgstr "公开的时间表"
 
-#: actions/public.php:151
+#: actions/public.php:159
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "公开的聚合"
 
-#: actions/public.php:155
+#: actions/public.php:163
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "公开的聚合"
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "公开的聚合"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2565,7 +2912,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2601,7 +2948,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr "标签云聚集"
 
@@ -2738,7 +3085,7 @@ msgstr "验证码出错。"
 msgid "Registration successful"
 msgstr "注册成功。"
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "注册"
@@ -2778,7 +3125,7 @@ msgid "Same as password above. Required."
 msgstr "相同的密码。此项必填。"
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "电子邮件"
 
@@ -2879,7 +3226,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr "您在其他兼容的微博客服务的个人信息URL"
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr "订阅"
 
@@ -2922,7 +3269,7 @@ msgstr "您必须同意此授权方可注册。"
 msgid "You already repeated that notice."
 msgstr "您已成功阻止该用户:"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "创建"
@@ -2938,6 +3285,11 @@ msgstr "创建"
 msgid "Replies to %s"
 msgstr "%s 的回复"
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "发送给 %1$s 的 %2$s 消息"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2979,6 +3331,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "发送给 %1$s 的 %2$s 消息"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "头像已更新。"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2989,6 +3346,126 @@ msgstr "无法向此用户发送消息。"
 msgid "User is already sandboxed."
 msgstr "用户没有个人信息。"
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "头像设置"
+
+#: actions/showapplication.php:82
+#, fuzzy
+msgid "You must be logged in to view an application."
+msgstr "您必须登录才能邀请其他人使用 %s"
+
+#: actions/showapplication.php:157
+#, fuzzy
+msgid "Application profile"
+msgstr "通告没有关联个人信息"
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "昵称"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "分页"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "描述"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr "统计"
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "确定要删除这条消息吗?"
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s 收藏的通告"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr "无法获取收藏的通告。"
@@ -3038,18 +3515,23 @@ msgstr ""
 msgid "%s group"
 msgstr "%s 组"
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "%s 组成员, 第 %d 页"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "组资料"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr "URL 互联网地址"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 #, fuzzy
 msgid "Note"
 msgstr "通告"
@@ -3097,10 +3579,6 @@ msgstr "(没有)"
 msgid "All members"
 msgstr "所有成员"
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr "统计"
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3160,6 +3638,11 @@ msgstr "消息已发布。"
 msgid " tagged %s"
 msgstr "带 %s 标签的通告"
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s 及好友"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3185,25 +3668,25 @@ msgstr "%s 的通告聚合"
 msgid "FOAF for %s"
 msgstr "%s 的发件箱"
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, fuzzy, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr "这是 %s 和好友的时间线,但是没有任何人发布内容。"
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3212,7 +3695,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, fuzzy, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3222,7 +3705,7 @@ msgstr ""
 "**%s** 有一个帐号在 %%%%site.name%%%%, 一个微博客服务 [micro-blogging]"
 "(http://en.wikipedia.org/wiki/Micro-blogging)"
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, fuzzy, php-format
 msgid "Repeat of %s"
 msgstr "%s 的回复"
@@ -3241,207 +3724,148 @@ msgstr "用户没有个人信息。"
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "不是有效的电子邮件"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "新通告"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "新的电子邮件地址,用于发布 %s 信息"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "本地显示"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 #, fuzzy
 msgid "Default site language"
 msgstr "首选语言"
 
-#: actions/siteadminpanel.php:303
-#, fuzzy
-msgid "URLs"
-msgstr "URL 互联网地址"
-
-#: actions/siteadminpanel.php:306
-#, fuzzy
-msgid "Server"
-msgstr "恢复"
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "接受"
-
-#: actions/siteadminpanel.php:321
-#, fuzzy
-msgid "Private"
-msgstr "隐私"
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-#, fuzzy
-msgid "Invite only"
-msgstr "邀请"
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "阻止"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "头像设置"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3548,17 +3972,27 @@ msgstr "没有输入验证码"
 msgid "You are not subscribed to that profile."
 msgstr "您未告知此个人信息"
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "无法删除订阅。"
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "没æ\9c\89è¿\99个ç\94¨æ\88·。"
+msgid "No such profile."
+msgstr "没æ\9c\89è¿\99份é\80\9aå\91\8a。"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+#, fuzzy
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr "您未告知此个人信息"
+
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "订阅"
@@ -3619,7 +4053,7 @@ msgstr "这是您订阅的用户。"
 msgid "These are the people whose notices %s listens to."
 msgstr "这是 %s 订阅的用户。"
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3629,20 +4063,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "%1$s 开始关注您的 %2$s 信息。"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "没有 Jabber ID。"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr "SMS短信"
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "用户自加标签 %s - 第 %d 页"
+
 #: actions/tag.php:86
 #, fuzzy, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3673,7 +4112,8 @@ msgstr "标签"
 msgid "User profile"
 msgstr "用户没有个人信息。"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr "相片"
 
@@ -3737,7 +4177,7 @@ msgstr "服务器没有返回个人信息URL。"
 msgid "Unsubscribed"
 msgstr "退订"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3752,89 +4192,69 @@ msgstr "用户"
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr "个人信息"
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 #, fuzzy
 msgid "New users"
 msgstr "邀请新用户"
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "所有订阅"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 #, fuzzy
 msgid "Automatically subscribe new users to this user."
 msgstr "自动订阅任何订阅我的更新的人(这个选项最适合机器人)"
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "已发送邀请"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 #, fuzzy
 msgid "Invitations enabled"
 msgstr "已发送邀请"
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "确认订阅"
@@ -3849,39 +4269,39 @@ msgstr ""
 "请检查详细信息,确认希望订阅此用户的通告。如果您刚才没有要求订阅任何人的通"
 "告,请点击\"取消\"。"
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 #, fuzzy
 msgid "License"
 msgstr "注册证"
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "接受"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 #, fuzzy
 msgid "Subscribe to this user"
 msgstr "订阅 %s"
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr "拒绝"
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "所有订阅"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "未收到认证请求!"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr "订阅已确认"
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 #, fuzzy
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
@@ -3890,11 +4310,11 @@ msgid ""
 msgstr ""
 "订阅已确认,但是没有回传URL。请到此网站查看如何确认订阅。您的订阅标识是:"
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr "订阅被拒绝"
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 #, fuzzy
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
@@ -3902,37 +4322,37 @@ msgid ""
 "subscription."
 msgstr "订阅已被拒绝,但是没有回传URL。请到此网站查看如何拒绝订阅。"
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "无法访问头像URL '%s'"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, fuzzy, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr "'%s' 图像格式错误"
@@ -3952,6 +4372,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "%s 组成员, 第 %d 页"
+
 #: actions/usergroups.php:130
 #, fuzzy
 msgid "Search for more groups"
@@ -3979,11 +4404,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "头像已更新。"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -4015,12 +4435,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "昵称"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "个人"
@@ -4029,11 +4444,6 @@ msgstr "个人"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "描述"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -4084,61 +4494,89 @@ msgstr "无法添加信息。"
 msgid "Could not update message with new URI."
 msgstr "无法添加新URI的信息。"
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr "添加标签时数据库出错:%s"
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "保存通告时出错。"
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "保存通告时出错。"
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr "你在短时间里发布了过多的消息,请深呼吸,过几分钟再发消息。"
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 #, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr "你在短时间里发布了过多的消息,请深呼吸,过几分钟再发消息。"
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr "在这个网站你被禁止发布消息。"
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr "保存通告时出错。"
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "添加回复时数据库出错:%s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "保存通告时出错。"
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+#, fuzzy
+msgid "You have been banned from subscribing."
+msgstr "那个用户阻止了你的订阅。"
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+#, fuzzy
+msgid "User has blocked you."
+msgstr "用户没有个人信息。"
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "未订阅!"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "无法删除订阅。"
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "无法删除订阅。"
+
+#: classes/User.php:372
 #, fuzzy, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr "发送给 %1$s 的 %2$s 消息"
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 msgid "Could not create group."
 msgstr "无法创建组。"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "无法删除订阅。"
@@ -4181,137 +4619,133 @@ msgstr "%1$s (%2$s)"
 msgid "Untitled page"
 msgstr "无标题页"
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr "主站导航"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "主页"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr "个人资料及朋友年表"
 
-#: lib/action.php:435
-msgid "Account"
-msgstr "帐号"
-
-#: lib/action.php:435
+#: lib/action.php:441
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "修改资料"
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "连接"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "无法重定向到服务器:%s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 #, fuzzy
 msgid "Change site configuration"
 msgstr "主站导航"
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "邀请"
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, fuzzy, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "使用这个表单来邀请好友和同事加入。"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "登出"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr "登出本站"
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "创建新帐号"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr "登入本站"
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "帮助"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "帮助"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr "搜索"
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr "检索人或文字"
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "新通告"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr "本地显示"
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "新通告"
 
-#: lib/action.php:721
+#: lib/action.php:727
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "次项站导航"
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "关于"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "常见问题FAQ"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr "隐私"
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr "来源"
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "联系人"
 
-#: lib/action.php:745
+#: lib/action.php:751
 #, fuzzy
 msgid "Badge"
 msgstr "呼叫"
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr "StatusNet软件注册证"
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4320,12 +4754,12 @@ msgstr ""
 "**%%site.name%%** 是一个微博客服务,提供者为 [%%site.broughtby%%](%%site."
 "broughtbyurl%%)。"
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** 是一个微博客服务。"
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4336,37 +4770,58 @@ msgstr ""
 "General Public License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)"
 "授权。"
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNet软件注册证"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr "全部"
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr "注册证"
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr "分页"
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 #, fuzzy
 msgid "After"
 msgstr "« 之后"
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "之前 »"
 
-#: lib/action.php:1167
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "会话标识有问题,请重试。"
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
 
 #: lib/adminpanelaction.php:96
 #, fuzzy
@@ -4403,11 +4858,105 @@ msgstr "电子邮件地址确认"
 msgid "Design configuration"
 msgstr "SMS短信确认"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "SMS短信确认"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "SMS短信确认"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "SMS短信确认"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "SMS短信确认"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "用不超过140个字符描述您自己和您的爱好"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "用不超过140个字符描述您自己和您的爱好"
+
+#: lib/applicationeditform.php:216
+#, fuzzy
+msgid "Source URL"
+msgstr "来源"
+
+#: lib/applicationeditform.php:218
+#, fuzzy
+msgid "URL of the homepage of this application"
+msgstr "您的主页、博客或在其他站点的URL"
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+#, fuzzy
+msgid "URL for the homepage of the organization"
+msgstr "您的主页、博客或在其他站点的URL"
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+#, fuzzy
+msgid "Revoke"
+msgstr "移除"
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4429,12 +4978,12 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 #, fuzzy
 msgid "Password changing failed"
 msgstr "密码已保存。"
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 #, fuzzy
 msgid "Password changing is not allowed"
 msgstr "密码已保存。"
@@ -4588,80 +5137,89 @@ msgstr "保存通告时出错。"
 msgid "Specify the name of the user to subscribe to"
 msgstr "指定要订阅的用户名"
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+msgid "No such user"
+msgstr "没有这个用户。"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr "订阅 %s"
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr "指定要取消订阅的用户名"
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr "取消订阅 %s"
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr "命令尚未实现。"
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr "通告关闭。"
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr "无法关闭通告。"
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr "通告开启。"
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr "无法开启通告。"
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "取消订阅 %s"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "您未告知此个人信息"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "您已订阅这些用户:"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "无法订阅他人更新。"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "无法订阅他人更新。"
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "您未告知此个人信息"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "您未告知此个人信息"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4675,6 +5233,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4702,20 +5261,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "没有验证码"
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 #, fuzzy
 msgid "Go to the installer."
 msgstr "登入本站"
@@ -4732,6 +5291,15 @@ msgstr "使用即时通讯工具(IM)更新"
 msgid "Updates by SMS"
 msgstr "使用SMS短信更新"
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "连接"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4927,12 +5495,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -5145,7 +5713,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 #, fuzzy
 msgid "from"
 msgstr " 从 "
@@ -5267,62 +5835,58 @@ msgid "Do not share my location"
 msgstr "无法保存个人信息。"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 #, fuzzy
 msgid "N"
 msgstr "否"
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "没有内容!"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "创建"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "无法删除通告。"
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Reply"
 msgstr "回复"
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "消息已发布。"
@@ -5357,12 +5921,7 @@ msgstr "添加远程的个人信息出错"
 msgid "Duplicate notice"
 msgstr "删除通告"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
-msgid "You have been banned from subscribing."
-msgstr "那个用户阻止了你的订阅。"
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "无法添加新的订阅。"
 
@@ -5378,19 +5937,19 @@ msgstr "回复"
 msgid "Favorites"
 msgstr "收藏夹"
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr "收件箱"
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr "您接收的消息"
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr "发件箱"
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr "您发送的消息"
 
@@ -5475,6 +6034,10 @@ msgstr "无法删除通告。"
 msgid "Repeat this notice"
 msgstr "无法删除通告。"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 #, fuzzy
 msgid "Sandbox"
@@ -5549,37 +6112,6 @@ msgstr "订阅 %s"
 msgid "Groups %s is a member of"
 msgstr "%s 组是成员组成了"
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-#, fuzzy
-msgid "User has blocked you."
-msgstr "用户没有个人信息。"
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr "无法订阅。"
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr "无法订阅他人更新。"
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "未订阅!"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "无法删除订阅。"
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "无法删除订阅。"
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5637,70 +6169,70 @@ msgstr "头像"
 msgid "User actions"
 msgstr "未知动作"
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "个人设置"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 #, fuzzy
 msgid "Send a direct message to this user"
 msgstr "无法向此用户发送消息。"
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 #, fuzzy
 msgid "Message"
 msgstr "新消息"
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr "几秒前"
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr "一分钟前"
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr "%d 分钟前"
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr "一小时前"
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr "%d 小时前"
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr "一天前"
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr "%d 天前"
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr "一个月前"
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr "%d 个月前"
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr "一年前"
 
@@ -5714,7 +6246,7 @@ msgstr "主页的URL不正确。"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, fuzzy, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr "您的消息包含 %d 个字符,超出长度限制 - 不能超过 140 个字符。"
index 5a655255016201c093af5c796d004c945d2f93e9..ff517edec039acc47fede09ce19d9c280747c796 100644 (file)
@@ -7,17 +7,74 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-13 22:04+0000\n"
-"PO-Revision-Date: 2010-01-13 22:06:27+0000\n"
+"POT-Creation-Date: 2010-02-24 23:49+0000\n"
+"PO-Revision-Date: 2010-02-24 23:52:03+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 (r61027); Translate extension (2010-01-04)\n"
+"X-Generator: MediaWiki 1.17alpha (r62925); 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"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
+#, fuzzy
+msgid "Access"
+msgstr "接受"
+
+#: actions/accessadminpanel.php:65
+#, fuzzy
+msgid "Site access settings"
+msgstr "線上即時通設定"
+
+#: actions/accessadminpanel.php:158
+#, fuzzy
+msgid "Registration"
+msgstr "所有訂閱"
+
+#: actions/accessadminpanel.php:161
+msgid "Private"
+msgstr ""
+
+#: actions/accessadminpanel.php:163
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr ""
+
+#: actions/accessadminpanel.php:167
+msgid "Invite only"
+msgstr ""
+
+#: actions/accessadminpanel.php:169
+msgid "Make registration invitation only."
+msgstr ""
+
+#: actions/accessadminpanel.php:173
+#, fuzzy
+msgid "Closed"
+msgstr "無此使用者"
+
+#: actions/accessadminpanel.php:175
+msgid "Disable new registrations."
+msgstr ""
+
+#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
+#: actions/emailsettings.php:195 actions/imsettings.php:163
+#: actions/othersettings.php:126 actions/pathsadminpanel.php:351
+#: actions/profilesettings.php:174 actions/sessionsadminpanel.php:199
+#: actions/siteadminpanel.php:336 actions/smssettings.php:181
+#: actions/subscriptions.php:208 actions/tagother.php:154
+#: actions/useradminpanel.php:293 lib/applicationeditform.php:333
+#: lib/applicationeditform.php:334 lib/designsettings.php:256
+#: lib/groupeditform.php:202
+msgid "Save"
+msgstr ""
+
+#: actions/accessadminpanel.php:189
+#, fuzzy
+msgid "Save access settings"
+msgstr "線上即時通設定"
+
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
 #: actions/showfavorites.php:137 actions/tag.php:51
 #, fuzzy
@@ -33,25 +90,29 @@ msgstr "無此通知"
 #: actions/apidirectmessagenew.php:75 actions/apigroupcreate.php:112
 #: actions/apigroupismember.php:90 actions/apigroupjoin.php:99
 #: actions/apigroupleave.php:99 actions/apigrouplist.php:90
-#: actions/apistatusesupdate.php:144 actions/apisubscriptions.php:87
-#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:79
+#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:70 actions/apitimelinefriends.php:78
 #: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79
 #: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75
 #: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
 #: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
 #: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
 #: actions/showfavorites.php:105 actions/userbyid.php:74
 #: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
 #: lib/command.php:163 lib/command.php:302 lib/command.php:355
 #: lib/command.php:401 lib/command.php:462 lib/command.php:518
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
-#: lib/subs.php:34 lib/subs.php:125
 msgid "No such user."
 msgstr "無此使用者"
 
+#: actions/all.php:84
+#, fuzzy, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%s與好友"
+
 #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
-#: actions/apitimelinefriends.php:115 actions/apitimelinehome.php:115
+#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
@@ -92,7 +153,7 @@ msgid ""
 "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
 msgstr ""
 
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
 #, php-format
 msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -104,8 +165,8 @@ msgstr ""
 msgid "You and friends"
 msgstr "%s與好友"
 
-#: actions/allrss.php:119 actions/apitimelinefriends.php:122
-#: 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 ""
@@ -115,23 +176,23 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#: actions/apidirectmessage.php:156 actions/apifavoritecreate.php:99
-#: actions/apifavoritedestroy.php:100 actions/apifriendshipscreate.php:100
-#: actions/apifriendshipsdestroy.php:100 actions/apifriendshipsshow.php:129
-#: actions/apigroupcreate.php:136 actions/apigroupismember.php:114
-#: actions/apigroupjoin.php:155 actions/apigroupleave.php:141
-#: actions/apigrouplist.php:132 actions/apigrouplistall.php:120
-#: actions/apigroupmembership.php:106 actions/apigroupshow.php:105
-#: actions/apihelptest.php:88 actions/apistatusesdestroy.php:102
-#: actions/apistatusesretweets.php:112 actions/apistatusesshow.php:108
-#: actions/apistatusnetconfig.php:133 actions/apistatusnetversion.php:93
-#: actions/apisubscriptions.php:111 actions/apitimelinefavorites.php:146
-#: actions/apitimelinefriends.php:156 actions/apitimelinegroup.php:150
-#: actions/apitimelinehome.php:156 actions/apitimelinementions.php:151
-#: actions/apitimelinepublic.php:131 actions/apitimelineretweetedbyme.php:122
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:99 actions/apifavoritedestroy.php:100
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:136
+#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155
+#: actions/apigroupleave.php:141 actions/apigrouplist.php:132
+#: actions/apigrouplistall.php:120 actions/apigroupmembership.php:106
+#: actions/apigroupshow.php:115 actions/apihelptest.php:88
+#: 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:183 actions/apitimelinefriends.php:187
+#: actions/apitimelinegroup.php:195 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:207 actions/apiusershow.php:101
 #, fuzzy
 msgid "API method not found."
 msgstr "確認碼遺失"
@@ -146,7 +207,7 @@ msgstr "確認碼遺失"
 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
 #: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91
 #: actions/apigroupleave.php:91 actions/apistatusesretweet.php:65
-#: actions/apistatusesupdate.php:114
+#: actions/apistatusesupdate.php:118
 msgid "This method requires a POST."
 msgstr ""
 
@@ -177,8 +238,9 @@ msgstr "無法儲存個人資料"
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
-#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:257
-#: actions/designadminpanel.php:122 actions/newnotice.php:94
+#: actions/apistatusesupdate.php:131 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:122 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
 #: lib/designsettings.php:283
 #, php-format
 msgid ""
@@ -296,12 +358,12 @@ msgstr "無法更新使用者"
 msgid "Two user ids or screen_names must be supplied."
 msgstr ""
 
-#: actions/apifriendshipsshow.php:135
+#: actions/apifriendshipsshow.php:134
 #, fuzzy
 msgid "Could not determine source user."
 msgstr "無法更新使用者"
 
-#: actions/apifriendshipsshow.php:143
+#: actions/apifriendshipsshow.php:142
 #, fuzzy
 msgid "Could not find target user."
 msgstr "無法更新使用者"
@@ -324,7 +386,8 @@ msgstr "此暱稱已有人使用。再試試看別的吧。"
 msgid "Not a valid nickname."
 msgstr ""
 
-#: actions/apigroupcreate.php:196 actions/editgroup.php:195
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
 #: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
@@ -336,7 +399,8 @@ msgstr "個人首頁位址錯誤"
 msgid "Full name is too long (max 255 chars)."
 msgstr "全名過長(最多255字元)"
 
-#: actions/apigroupcreate.php:213
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
 #, fuzzy, php-format
 msgid "Description is too long (max %d chars)."
 msgstr "自我介紹過長(共140個字元)"
@@ -372,7 +436,7 @@ msgstr ""
 
 #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
-#: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91
+#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
 #, fuzzy
 msgid "Group not found!"
 msgstr "目前無請求"
@@ -415,6 +479,115 @@ msgstr ""
 msgid "groups on %s"
 msgstr ""
 
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "尺寸錯誤"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:157 actions/disfavor.php:74
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
+#: actions/groupblock.php:66 actions/grouplogo.php:309
+#: actions/groupunblock.php:66 actions/imsettings.php:206
+#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:337
+#: actions/register.php:165 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/apioauthauthorize.php:135
+#, fuzzy
+msgid "Invalid nickname / password!"
+msgstr "使用者名稱或密碼無效"
+
+#: actions/apioauthauthorize.php:159
+#, fuzzy
+msgid "Database error deleting OAuth application user."
+msgstr "使用者設定發生錯誤"
+
+#: actions/apioauthauthorize.php:185
+#, fuzzy
+msgid "Database error inserting OAuth application user."
+msgstr "增加回覆時,資料庫發生錯誤: %s"
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr ""
+
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:103 actions/editapplication.php:139
+#: actions/emailsettings.php:256 actions/grouplogo.php:319
+#: actions/imsettings.php:220 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:248 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr ""
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr ""
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr ""
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
+#, fuzzy
+msgid "Account"
+msgstr "關於"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:230
+#: actions/profilesettings.php:106 actions/register.php:424
+#: actions/showgroup.php:236 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:131
+msgid "Nickname"
+msgstr "暱稱"
+
+#: actions/apioauthauthorize.php:316 actions/login.php:233
+#: actions/register.php:429 lib/accountsettingsaction.php:116
+msgid "Password"
+msgstr ""
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr ""
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr ""
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr ""
+
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
 msgstr ""
@@ -447,17 +620,17 @@ msgstr "更新個人圖像"
 msgid "No status with that ID found."
 msgstr ""
 
-#: actions/apistatusesupdate.php:157 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
 #: lib/mailhandler.php:60
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
 msgstr ""
 
-#: actions/apistatusesupdate.php:198
+#: actions/apistatusesupdate.php:202
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -471,7 +644,7 @@ msgstr ""
 msgid "%1$s / Favorites from %2$s"
 msgstr "%1$s的狀態是%2$s"
 
-#: actions/apitimelinefavorites.php:120
+#: actions/apitimelinefavorites.php:117
 #, fuzzy, php-format
 msgid "%1$s updates favorited by %2$s / %2$s."
 msgstr "&s的微型部落格"
@@ -482,7 +655,7 @@ msgstr "&s的微型部落格"
 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!"
@@ -498,27 +671,22 @@ msgstr "%1$s的狀態是%2$s"
 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 ""
 
-#: actions/apitimelineretweetedbyme.php:112
-#, php-format
-msgid "Repeated by %s"
-msgstr ""
-
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
 msgid "Repeated to %s"
 msgstr ""
 
-#: actions/apitimelineretweetsofme.php:112
+#: actions/apitimelineretweetsofme.php:114
 #, php-format
 msgid "Repeats of %s"
 msgstr ""
@@ -528,7 +696,7 @@ msgstr ""
 msgid "Notices tagged with %s"
 msgstr ""
 
-#: actions/apitimelinetag.php:108 actions/tagrss.php:64
+#: actions/apitimelinetag.php:104 actions/tagrss.php:64
 #, fuzzy, php-format
 msgid "Updates tagged with %1$s on %2$s!"
 msgstr "&s的微型部落格"
@@ -591,8 +759,8 @@ msgstr ""
 msgid "Preview"
 msgstr ""
 
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:611
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:637
 msgid "Delete"
 msgstr ""
 
@@ -604,29 +772,6 @@ msgstr ""
 msgid "Crop"
 msgstr ""
 
-#: actions/avatarsettings.php:268 actions/deletenotice.php:157
-#: actions/disfavor.php:74 actions/emailsettings.php:238 actions/favor.php:75
-#: actions/geocode.php:50 actions/groupblock.php:66 actions/grouplogo.php:309
-#: actions/groupunblock.php:66 actions/imsettings.php:206
-#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
-#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/othersettings.php:145 actions/passwordsettings.php:138
-#: actions/profilesettings.php:194 actions/recoverpassword.php:337
-#: actions/register.php:165 actions/remotesubscribe.php:77
-#: actions/repeat.php:83 actions/smssettings.php:228 actions/subedit.php:38
-#: actions/subscribe.php:46 actions/tagother.php:166
-#: actions/unsubscribe.php:69 actions/userauthorization.php:52
-#: lib/designsettings.php:294
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/avatarsettings.php:281 actions/designadminpanel.php:103
-#: actions/emailsettings.php:256 actions/grouplogo.php:319
-#: actions/imsettings.php:220 actions/recoverpassword.php:44
-#: actions/smssettings.php:248 lib/designsettings.php:304
-msgid "Unexpected form submission."
-msgstr ""
-
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
 msgstr ""
@@ -665,8 +810,9 @@ msgid ""
 "will not be notified of any @-replies from them."
 msgstr ""
 
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
 msgid "No"
 msgstr ""
 
@@ -675,13 +821,13 @@ msgstr ""
 msgid "Do not block this user"
 msgstr "無此使用者"
 
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
 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 "無此使用者"
@@ -768,7 +914,8 @@ msgid "Couldn't delete email confirmation."
 msgstr "無法取消信箱確認"
 
 #: actions/confirmaddress.php:144
-msgid "Confirm Address"
+#, fuzzy
+msgid "Confirm address"
 msgstr "確認信箱"
 
 #: actions/confirmaddress.php:159
@@ -786,10 +933,54 @@ msgstr "地點"
 msgid "Notices"
 msgstr ""
 
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "無法更新使用者"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "確認碼遺失"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "無法連結到伺服器:%s"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1197
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "無此通知"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "無此通知"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "請在140個字以內描述你自己與你的興趣"
+
 #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
 #: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
-#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:30
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
 #: actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -819,7 +1010,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "無此通知"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:611
+#: actions/deletenotice.php:146 lib/noticelist.php:637
 msgid "Delete this notice"
 msgstr ""
 
@@ -958,16 +1149,6 @@ msgstr ""
 msgid "Reset back to default"
 msgstr ""
 
-#: actions/designadminpanel.php:586 actions/emailsettings.php:195
-#: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:174
-#: actions/siteadminpanel.php:388 actions/smssettings.php:181
-#: actions/subscriptions.php:203 actions/tagother.php:154
-#: actions/useradminpanel.php:313 lib/designsettings.php:256
-#: lib/groupeditform.php:202
-msgid "Save"
-msgstr ""
-
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
 msgstr ""
@@ -980,10 +1161,84 @@ msgstr ""
 msgid "Add to favorites"
 msgstr ""
 
-#: actions/doc.php:69
-msgid "No such document."
+#: actions/doc.php:158
+#, fuzzy, php-format
+msgid "No such document \"%s\""
 msgstr "無此文件"
 
+#: actions/editapplication.php:54
+#, fuzzy
+msgid "Edit Application"
+msgstr "無此通知"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr ""
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+#, fuzzy
+msgid "No such application."
+msgstr "無此通知"
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr ""
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr ""
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+#, fuzzy
+msgid "Name is too long (max 255 chars)."
+msgstr "全名過長(最多255字元)"
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "此暱稱已有人使用。再試試看別的吧。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+#, fuzzy
+msgid "Description is required."
+msgstr "所有訂閱"
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr ""
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+#, fuzzy
+msgid "Source URL is not valid."
+msgstr "個人首頁位址錯誤"
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr ""
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+#, fuzzy
+msgid "Organization is too long (max 255 chars)."
+msgstr "地點過長(共255個字)"
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr ""
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr ""
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr ""
+
+#: actions/editapplication.php:258
+#, fuzzy
+msgid "Could not update application."
+msgstr "無法更新使用者"
+
 #: actions/editgroup.php:56
 #, php-format
 msgid "Edit %s group"
@@ -1012,7 +1267,7 @@ msgstr "自我介紹過長(共140個字元)"
 msgid "Could not update group."
 msgstr "無法更新使用者"
 
-#: actions/editgroup.php:259 classes/User_group.php:390
+#: actions/editgroup.php:259 classes/User_group.php:433
 #, fuzzy
 msgid "Could not create aliases."
 msgstr "無法存取個人圖像資料"
@@ -1053,7 +1308,8 @@ msgid ""
 msgstr ""
 
 #: actions/emailsettings.php:117 actions/imsettings.php:120
-#: actions/smssettings.php:126
+#: actions/smssettings.php:126 lib/applicationeditform.php:331
+#: lib/applicationeditform.php:332
 msgid "Cancel"
 msgstr "取消"
 
@@ -1134,7 +1390,7 @@ msgid "Cannot normalize that email address"
 msgstr ""
 
 #: actions/emailsettings.php:331 actions/register.php:201
-#: actions/siteadminpanel.php:157
+#: actions/siteadminpanel.php:143
 msgid "Not a valid email address."
 msgstr "此信箱無效"
 
@@ -1146,7 +1402,7 @@ msgstr ""
 msgid "That email address already belongs to another user."
 msgstr ""
 
-#: actions/emailsettings.php:353 actions/imsettings.php:317
+#: actions/emailsettings.php:353 actions/imsettings.php:319
 #: actions/smssettings.php:337
 msgid "Couldn't insert confirmation code."
 msgstr "無法輸入確認碼"
@@ -1205,7 +1461,7 @@ msgstr ""
 msgid "Disfavor favorite"
 msgstr ""
 
-#: actions/favorited.php:65 lib/popularnoticesection.php:88
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
 #: lib/publicgroupnav.php:93
 #, fuzzy
 msgid "Popular notices"
@@ -1355,7 +1611,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 "無此使用者"
@@ -1453,23 +1709,23 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:442 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
 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 ""
 
@@ -1636,6 +1892,11 @@ msgstr "確認信已寄到你的線上即時通信箱。%s送給你得訊息要
 msgid "That is not your Jabber ID."
 msgstr ""
 
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
@@ -1712,7 +1973,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:237
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:236
 msgid "Send"
 msgstr ""
 
@@ -1786,7 +2047,7 @@ msgstr "使用者名稱或密碼錯誤"
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:188 actions/login.php:241 lib/action.php:460
+#: actions/login.php:188 actions/login.php:241 lib/action.php:466
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "登入"
@@ -1795,17 +2056,6 @@ msgstr "登入"
 msgid "Login to site"
 msgstr ""
 
-#: actions/login.php:230 actions/profilesettings.php:106
-#: actions/register.php:424 actions/showgroup.php:236 actions/tagother.php:94
-#: lib/groupeditform.php:152 lib/userprofile.php:131
-msgid "Nickname"
-msgstr "暱稱"
-
-#: actions/login.php:233 actions/register.php:429
-#: lib/accountsettingsaction.php:116
-msgid "Password"
-msgstr ""
-
 #: actions/login.php:236 actions/register.php:478
 msgid "Remember me"
 msgstr ""
@@ -1831,21 +2081,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"
@@ -1854,6 +2104,28 @@ msgstr "無法從 %s 建立OpenID"
 msgid "No current status"
 msgstr ""
 
+#: actions/newapplication.php:52
+#, fuzzy
+msgid "New Application"
+msgstr "無此通知"
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+#, fuzzy
+msgid "Could not create application."
+msgstr "無法存取個人圖像資料"
+
 #: actions/newgroup.php:53
 msgid "New group"
 msgstr ""
@@ -1958,6 +2230,49 @@ msgstr ""
 msgid "Nudge sent!"
 msgstr ""
 
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+#, fuzzy
+msgid "You are not a user of that application."
+msgstr "無法連結到伺服器:%s"
+
+#: actions/oauthconnectionssettings.php:186
+msgid "Unable to revoke access for app: "
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+#, php-format
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
 msgstr ""
@@ -1976,8 +2291,8 @@ msgstr "連結"
 msgid "Only "
 msgstr ""
 
-#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1033
-#: lib/api.php:1061 lib/api.php:1171
+#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
+#: lib/api.php:1068 lib/api.php:1177
 msgid "Not a supported data format."
 msgstr ""
 
@@ -1991,7 +2306,7 @@ msgstr ""
 
 #: actions/othersettings.php:60
 #, fuzzy
-msgid "Other Settings"
+msgid "Other settings"
 msgstr "線上即時通設定"
 
 #: actions/othersettings.php:71
@@ -2047,6 +2362,11 @@ msgstr "新訊息"
 msgid "Login token expired."
 msgstr ""
 
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
@@ -2118,7 +2438,7 @@ msgstr "無法存取新密碼"
 msgid "Password saved."
 msgstr ""
 
-#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:326
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:331
 msgid "Paths"
 msgstr ""
 
@@ -2126,138 +2446,154 @@ msgstr ""
 msgid "Path and server settings for this StatusNet site."
 msgstr ""
 
-#: actions/pathsadminpanel.php:140
+#: actions/pathsadminpanel.php:157
 #, fuzzy, php-format
 msgid "Theme directory not readable: %s"
 msgstr "個人首頁位址錯誤"
 
-#: actions/pathsadminpanel.php:146
+#: actions/pathsadminpanel.php:163
 #, php-format
 msgid "Avatar directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:152
+#: actions/pathsadminpanel.php:169
 #, php-format
 msgid "Background directory not writable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:160
+#: actions/pathsadminpanel.php:177
 #, php-format
 msgid "Locales directory not readable: %s"
 msgstr ""
 
-#: actions/pathsadminpanel.php:166
+#: actions/pathsadminpanel.php:183
 msgid "Invalid SSL server. The maximum length is 255 characters."
 msgstr ""
 
-#: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:311
 msgid "Site"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:221
+#: actions/pathsadminpanel.php:242
 #, fuzzy
 msgid "Site path"
 msgstr "新訊息"
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:225
+#: actions/pathsadminpanel.php:246
 msgid "Directory path to locales"
 msgstr ""
 
-#: actions/pathsadminpanel.php:232
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
 msgid "Theme"
 msgstr ""
 
-#: actions/pathsadminpanel.php:237
+#: actions/pathsadminpanel.php:264
 msgid "Theme server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:241
+#: actions/pathsadminpanel.php:268
 msgid "Theme path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:245
+#: actions/pathsadminpanel.php:272
 msgid "Theme directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:252
+#: actions/pathsadminpanel.php:279
 #, fuzzy
 msgid "Avatars"
 msgstr "個人圖像"
 
-#: actions/pathsadminpanel.php:257
+#: actions/pathsadminpanel.php:284
 #, fuzzy
 msgid "Avatar server"
 msgstr "線上即時通設定"
 
-#: actions/pathsadminpanel.php:261
+#: actions/pathsadminpanel.php:288
 #, fuzzy
 msgid "Avatar path"
 msgstr "更新個人圖像"
 
-#: actions/pathsadminpanel.php:265
+#: actions/pathsadminpanel.php:292
 #, fuzzy
 msgid "Avatar directory"
 msgstr "更新個人圖像"
 
-#: actions/pathsadminpanel.php:274
+#: actions/pathsadminpanel.php:301
 msgid "Backgrounds"
 msgstr ""
 
-#: actions/pathsadminpanel.php:278
+#: actions/pathsadminpanel.php:305
 msgid "Background server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:282
+#: actions/pathsadminpanel.php:309
 msgid "Background path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:286
+#: actions/pathsadminpanel.php:313
 msgid "Background directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:320
 msgid "SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
+#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
 msgid "Never"
 msgstr ""
 
-#: actions/pathsadminpanel.php:297
+#: actions/pathsadminpanel.php:324
 msgid "Sometimes"
 msgstr ""
 
-#: actions/pathsadminpanel.php:298
+#: actions/pathsadminpanel.php:325
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:302
+#: actions/pathsadminpanel.php:329
 msgid "Use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:303
+#: actions/pathsadminpanel.php:330
 msgid "When to use SSL"
 msgstr ""
 
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:335
 #, fuzzy
 msgid "SSL server"
 msgstr "線上即時通設定"
 
-#: actions/pathsadminpanel.php:309
+#: actions/pathsadminpanel.php:336
 msgid "Server to direct SSL requests to"
 msgstr ""
 
-#: actions/pathsadminpanel.php:325
+#: actions/pathsadminpanel.php:352
 #, fuzzy
 msgid "Save paths"
 msgstr "新訊息"
@@ -2316,7 +2652,7 @@ msgid "Full name"
 msgstr "全名"
 
 #: actions/profilesettings.php:115 actions/register.php:453
-#: lib/groupeditform.php:161
+#: lib/applicationeditform.php:228 lib/groupeditform.php:161
 msgid "Homepage"
 msgstr "個人首頁"
 
@@ -2340,7 +2676,7 @@ msgstr "自我介紹"
 
 #: actions/profilesettings.php:132 actions/register.php:471
 #: actions/showgroup.php:256 actions/tagother.php:112
-#: actions/userauthorization.php:158 lib/groupeditform.php:177
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
 #: lib/userprofile.php:164
 msgid "Location"
 msgstr "地點"
@@ -2364,7 +2700,7 @@ msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
 msgid "Language"
 msgstr ""
 
@@ -2390,7 +2726,7 @@ msgstr ""
 msgid "Bio is too long (max %d chars)."
 msgstr "自我介紹過長(共140個字元)"
 
-#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
 msgid "Timezone not selected."
 msgstr ""
 
@@ -2403,25 +2739,25 @@ msgstr ""
 msgid "Invalid tag: \"%s\""
 msgstr "個人首頁連結%s無效"
 
-#: actions/profilesettings.php:302
+#: actions/profilesettings.php:306
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:359
+#: actions/profilesettings.php:363
 #, fuzzy
 msgid "Couldn't save location prefs."
 msgstr "無法儲存個人資料"
 
-#: actions/profilesettings.php:371
+#: actions/profilesettings.php:375
 msgid "Couldn't save profile."
 msgstr "無法儲存個人資料"
 
-#: actions/profilesettings.php:379
+#: actions/profilesettings.php:383
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "無法儲存個人資料"
 
-#: actions/profilesettings.php:387 lib/adminpanelaction.php:137
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:137
 msgid "Settings saved."
 msgstr ""
 
@@ -2443,37 +2779,37 @@ msgstr ""
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:151
+#: actions/public.php:159
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:155
+#: actions/public.php:163
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:159
+#: actions/public.php:167
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "%s的公開內容"
 
-#: actions/public.php:179
+#: actions/public.php:187
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:182
+#: actions/public.php:190
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:186
+#: actions/public.php:194
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:233
+#: actions/public.php:241
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2482,7 +2818,7 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:238
+#: actions/public.php:246
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2515,7 +2851,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:131
+#: actions/publictagcloud.php:134
 msgid "Tag cloud"
 msgstr ""
 
@@ -2652,7 +2988,7 @@ msgstr "確認碼發生錯誤"
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:503 lib/action.php:457
+#: actions/register.php:114 actions/register.php:503 lib/action.php:463
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2692,7 +3028,7 @@ msgid "Same as password above. Required."
 msgstr ""
 
 #: actions/register.php:438 actions/register.php:442
-#: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
+#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
 msgid "Email"
 msgstr "電子信箱"
 
@@ -2777,7 +3113,7 @@ msgid "URL of your profile on another compatible microblogging service"
 msgstr ""
 
 #: actions/remotesubscribe.php:137 lib/subscribeform.php:139
-#: lib/userprofile.php:365
+#: lib/userprofile.php:368
 msgid "Subscribe"
 msgstr ""
 
@@ -2816,7 +3152,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "無此使用者"
 
-#: actions/repeat.php:114 lib/noticelist.php:629
+#: actions/repeat.php:114 lib/noticelist.php:656
 #, fuzzy
 msgid "Repeated"
 msgstr "新增"
@@ -2832,6 +3168,11 @@ msgstr "新增"
 msgid "Replies to %s"
 msgstr ""
 
+#: actions/replies.php:127
+#, fuzzy, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr "&s的微型部落格"
+
 #: actions/replies.php:144
 #, fuzzy, php-format
 msgid "Replies feed for %s (RSS 1.0)"
@@ -2873,6 +3214,11 @@ msgstr ""
 msgid "Replies to %1$s on %2$s!"
 msgstr "&s的微型部落格"
 
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "更新個人圖像"
+
 #: actions/sandbox.php:65 actions/unsandbox.php:65
 #, fuzzy
 msgid "You cannot sandbox users on this site."
@@ -2882,6 +3228,123 @@ msgstr "無法連結到伺服器:%s"
 msgid "User is already sandboxed."
 msgstr ""
 
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:336
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
+#: actions/useradminpanel.php:293
+#, fuzzy
+msgid "Save site settings"
+msgstr "線上即時通設定"
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
+msgid "Icon"
+msgstr ""
+
+#: actions/showapplication.php:169 actions/version.php:195
+#: lib/applicationeditform.php:195
+#, fuzzy
+msgid "Name"
+msgstr "暱稱"
+
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
+#, fuzzy
+msgid "Organization"
+msgstr "地點"
+
+#: actions/showapplication.php:187 actions/version.php:198
+#: lib/applicationeditform.php:209 lib/groupeditform.php:172
+#, fuzzy
+msgid "Description"
+msgstr "所有訂閱"
+
+#: actions/showapplication.php:192 actions/showgroup.php:429
+#: lib/profileaction.php:174
+msgid "Statistics"
+msgstr ""
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, fuzzy, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr "%s與好友"
+
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
 msgstr ""
@@ -2931,18 +3394,23 @@ msgstr ""
 msgid "%s group"
 msgstr ""
 
+#: actions/showgroup.php:84
+#, fuzzy, php-format
+msgid "%1$s group, page %2$d"
+msgstr "所有訂閱"
+
 #: actions/showgroup.php:218
 #, fuzzy
 msgid "Group profile"
 msgstr "無此通知"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
-#: actions/userauthorization.php:167 lib/userprofile.php:177
+#: actions/userauthorization.php:175 lib/userprofile.php:177
 msgid "URL"
 msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
-#: actions/userauthorization.php:179 lib/userprofile.php:194
+#: actions/userauthorization.php:187 lib/userprofile.php:194
 msgid "Note"
 msgstr ""
 
@@ -2989,10 +3457,6 @@ msgstr ""
 msgid "All members"
 msgstr ""
 
-#: actions/showgroup.php:429 lib/profileaction.php:174
-msgid "Statistics"
-msgstr ""
-
 #: actions/showgroup.php:432
 #, fuzzy
 msgid "Created"
@@ -3049,6 +3513,11 @@ msgstr "更新個人圖像"
 msgid " tagged %s"
 msgstr ""
 
+#: actions/showstream.php:79
+#, fuzzy, php-format
+msgid "%1$s, page %2$d"
+msgstr "%s與好友"
+
 #: actions/showstream.php:122
 #, fuzzy, php-format
 msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
@@ -3074,25 +3543,25 @@ msgstr ""
 msgid "FOAF for %s"
 msgstr ""
 
-#: actions/showstream.php:191
+#: actions/showstream.php:200
 #, php-format
 msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
 msgstr ""
 
-#: actions/showstream.php:196
+#: actions/showstream.php:205
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
 
-#: actions/showstream.php:198
+#: actions/showstream.php:207
 #, php-format
 msgid ""
 "You can try to nudge %1$s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%2$s)."
 msgstr ""
 
-#: actions/showstream.php:234
+#: actions/showstream.php:243
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3101,7 +3570,7 @@ msgid ""
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
 
-#: actions/showstream.php:239
+#: actions/showstream.php:248
 #, php-format
 msgid ""
 "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3109,7 +3578,7 @@ msgid ""
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
 
-#: actions/showstream.php:313
+#: actions/showstream.php:305
 #, php-format
 msgid "Repeat of %s"
 msgstr ""
@@ -3126,202 +3595,147 @@ msgstr ""
 msgid "Basic settings for this StatusNet site."
 msgstr ""
 
-#: actions/siteadminpanel.php:146
+#: actions/siteadminpanel.php:132
 msgid "Site name must have non-zero length."
 msgstr ""
 
-#: actions/siteadminpanel.php:154
+#: actions/siteadminpanel.php:140
 #, fuzzy
 msgid "You must have a valid contact email address."
 msgstr "此信箱無效"
 
-#: actions/siteadminpanel.php:172
+#: actions/siteadminpanel.php:158
 #, php-format
 msgid "Unknown language \"%s\"."
 msgstr ""
 
-#: actions/siteadminpanel.php:179
+#: actions/siteadminpanel.php:165
 msgid "Invalid snapshot report URL."
 msgstr ""
 
-#: actions/siteadminpanel.php:185
+#: actions/siteadminpanel.php:171
 msgid "Invalid snapshot run value."
 msgstr ""
 
-#: actions/siteadminpanel.php:191
+#: actions/siteadminpanel.php:177
 msgid "Snapshot frequency must be a number."
 msgstr ""
 
-#: actions/siteadminpanel.php:197
+#: actions/siteadminpanel.php:183
 msgid "Minimum text limit is 140 characters."
 msgstr ""
 
-#: actions/siteadminpanel.php:203
+#: actions/siteadminpanel.php:189
 msgid "Dupe limit must 1 or more seconds."
 msgstr ""
 
-#: actions/siteadminpanel.php:253
+#: actions/siteadminpanel.php:239
 msgid "General"
 msgstr ""
 
-#: actions/siteadminpanel.php:256
+#: actions/siteadminpanel.php:242
 #, fuzzy
 msgid "Site name"
 msgstr "新訊息"
 
-#: actions/siteadminpanel.php:257
+#: actions/siteadminpanel.php:243
 msgid "The name of your site, like \"Yourcompany Microblog\""
 msgstr ""
 
-#: actions/siteadminpanel.php:261
+#: actions/siteadminpanel.php:247
 msgid "Brought by"
 msgstr ""
 
-#: actions/siteadminpanel.php:262
+#: actions/siteadminpanel.php:248
 msgid "Text used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:266
+#: actions/siteadminpanel.php:252
 msgid "Brought by URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:267
+#: actions/siteadminpanel.php:253
 msgid "URL used for credits link in footer of each page"
 msgstr ""
 
-#: actions/siteadminpanel.php:271
+#: actions/siteadminpanel.php:257
 #, fuzzy
 msgid "Contact email address for your site"
 msgstr "查無此使用者所註冊的信箱"
 
-#: actions/siteadminpanel.php:277
+#: actions/siteadminpanel.php:263
 #, fuzzy
 msgid "Local"
 msgstr "地點"
 
-#: actions/siteadminpanel.php:288
+#: actions/siteadminpanel.php:274
 msgid "Default timezone"
 msgstr ""
 
-#: actions/siteadminpanel.php:289
+#: actions/siteadminpanel.php:275
 msgid "Default timezone for the site; usually UTC."
 msgstr ""
 
-#: actions/siteadminpanel.php:295
+#: actions/siteadminpanel.php:281
 msgid "Default site language"
 msgstr ""
 
-#: actions/siteadminpanel.php:303
-msgid "URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Server"
-msgstr ""
-
-#: actions/siteadminpanel.php:306
-msgid "Site's server hostname."
-msgstr ""
-
-#: actions/siteadminpanel.php:310
-msgid "Fancy URLs"
-msgstr ""
-
-#: actions/siteadminpanel.php:312
-msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
-
-#: actions/siteadminpanel.php:318
-#, fuzzy
-msgid "Access"
-msgstr "接受"
-
-#: actions/siteadminpanel.php:321
-msgid "Private"
-msgstr ""
-
-#: actions/siteadminpanel.php:323
-msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
-
-#: actions/siteadminpanel.php:327
-msgid "Invite only"
-msgstr ""
-
-#: actions/siteadminpanel.php:329
-msgid "Make registration invitation only."
-msgstr ""
-
-#: actions/siteadminpanel.php:333
-#, fuzzy
-msgid "Closed"
-msgstr "無此使用者"
-
-#: actions/siteadminpanel.php:335
-msgid "Disable new registrations."
-msgstr ""
-
-#: actions/siteadminpanel.php:341
+#: actions/siteadminpanel.php:289
 msgid "Snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:344
+#: actions/siteadminpanel.php:292
 msgid "Randomly during Web hit"
 msgstr ""
 
-#: actions/siteadminpanel.php:345
+#: actions/siteadminpanel.php:293
 msgid "In a scheduled job"
 msgstr ""
 
-#: actions/siteadminpanel.php:347
+#: actions/siteadminpanel.php:295
 msgid "Data snapshots"
 msgstr ""
 
-#: actions/siteadminpanel.php:348
+#: actions/siteadminpanel.php:296
 msgid "When to send statistical data to status.net servers"
 msgstr ""
 
-#: actions/siteadminpanel.php:353
+#: actions/siteadminpanel.php:301
 msgid "Frequency"
 msgstr ""
 
-#: actions/siteadminpanel.php:354
+#: actions/siteadminpanel.php:302
 msgid "Snapshots will be sent once every N web hits"
 msgstr ""
 
-#: actions/siteadminpanel.php:359
+#: actions/siteadminpanel.php:307
 msgid "Report URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:360
+#: actions/siteadminpanel.php:308
 msgid "Snapshots will be sent to this URL"
 msgstr ""
 
-#: actions/siteadminpanel.php:367
+#: actions/siteadminpanel.php:315
 msgid "Limits"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Text limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:370
+#: actions/siteadminpanel.php:318
 msgid "Maximum number of characters for notices."
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "Dupe limit"
 msgstr ""
 
-#: actions/siteadminpanel.php:374
+#: actions/siteadminpanel.php:322
 msgid "How long users must wait (in seconds) to post the same thing again."
 msgstr ""
 
-#: actions/siteadminpanel.php:388 actions/useradminpanel.php:313
-#, fuzzy
-msgid "Save site settings"
-msgstr "線上即時通設定"
-
 #: actions/smssettings.php:58
 #, fuzzy
 msgid "SMS settings"
@@ -3421,17 +3835,26 @@ msgstr ""
 msgid "You are not subscribed to that profile."
 msgstr ""
 
-#: actions/subedit.php:83
+#: actions/subedit.php:83 classes/Subscription.php:89
+#: classes/Subscription.php:116
 #, fuzzy
 msgid "Could not save subscription."
 msgstr "註冊失敗"
 
-#: actions/subscribe.php:55
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
 #, fuzzy
-msgid "Not a local user."
-msgstr "無此使用者"
+msgid "No such profile."
+msgstr "無此通知"
 
-#: actions/subscribe.php:69
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
+
+#: actions/subscribe.php:145
 #, fuzzy
 msgid "Subscribed"
 msgstr "此帳號已註冊"
@@ -3492,7 +3915,7 @@ msgstr ""
 msgid "These are the people whose notices %s listens to."
 msgstr ""
 
-#: actions/subscriptions.php:121
+#: actions/subscriptions.php:126
 #, php-format
 msgid ""
 "You're not listening to anyone's notices right now, try subscribing to "
@@ -3502,20 +3925,25 @@ msgid ""
 "automatically subscribe to people you already follow there."
 msgstr ""
 
-#: actions/subscriptions.php:123 actions/subscriptions.php:127
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
 #, fuzzy, php-format
 msgid "%s is not listening to anyone."
 msgstr "現在%1$s在%2$s成為你的粉絲囉"
 
-#: actions/subscriptions.php:194
+#: actions/subscriptions.php:199
 #, fuzzy
 msgid "Jabber"
 msgstr "查無此Jabber ID"
 
-#: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
+#: actions/subscriptions.php:204 lib/connectsettingsaction.php:115
 msgid "SMS"
 msgstr ""
 
+#: actions/tag.php:68
+#, fuzzy, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "&s的微型部落格"
+
 #: actions/tag.php:86
 #, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
@@ -3546,7 +3974,8 @@ msgstr ""
 msgid "User profile"
 msgstr "無此通知"
 
-#: actions/tagother.php:81 lib/userprofile.php:102
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:102
 msgid "Photo"
 msgstr ""
 
@@ -3606,7 +4035,7 @@ msgstr "無確認請求"
 msgid "Unsubscribed"
 msgstr "此帳號已註冊"
 
-#: actions/updateprofile.php:62 actions/userauthorization.php:330
+#: actions/updateprofile.php:62 actions/userauthorization.php:337
 #, php-format
 msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
@@ -3621,86 +4050,66 @@ msgstr ""
 msgid "User settings for this StatusNet site."
 msgstr ""
 
-#: actions/useradminpanel.php:149
+#: actions/useradminpanel.php:148
 msgid "Invalid bio limit. Must be numeric."
 msgstr ""
 
-#: actions/useradminpanel.php:155
+#: actions/useradminpanel.php:154
 msgid "Invalid welcome text. Max length is 255 characters."
 msgstr ""
 
-#: actions/useradminpanel.php:165
+#: actions/useradminpanel.php:164
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
 msgstr ""
 
-#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
+#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
 msgid "Profile"
 msgstr ""
 
-#: actions/useradminpanel.php:222
+#: actions/useradminpanel.php:221
 msgid "Bio Limit"
 msgstr ""
 
-#: actions/useradminpanel.php:223
+#: actions/useradminpanel.php:222
 msgid "Maximum length of a profile bio in characters."
 msgstr ""
 
-#: actions/useradminpanel.php:231
+#: actions/useradminpanel.php:230
 msgid "New users"
 msgstr ""
 
-#: actions/useradminpanel.php:235
+#: actions/useradminpanel.php:234
 msgid "New user welcome"
 msgstr ""
 
-#: actions/useradminpanel.php:236
+#: actions/useradminpanel.php:235
 msgid "Welcome text for new users (Max 255 chars)."
 msgstr ""
 
-#: actions/useradminpanel.php:241
+#: actions/useradminpanel.php:240
 #, fuzzy
 msgid "Default subscription"
 msgstr "所有訂閱"
 
-#: actions/useradminpanel.php:242
+#: actions/useradminpanel.php:241
 msgid "Automatically subscribe new users to this user."
 msgstr ""
 
-#: actions/useradminpanel.php:251
+#: actions/useradminpanel.php:250
 #, fuzzy
 msgid "Invitations"
 msgstr "地點"
 
-#: actions/useradminpanel.php:256
+#: actions/useradminpanel.php:255
 msgid "Invitations enabled"
 msgstr ""
 
-#: actions/useradminpanel.php:258
+#: actions/useradminpanel.php:257
 msgid "Whether to allow users to invite new users."
 msgstr ""
 
-#: actions/useradminpanel.php:265
-msgid "Sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:270
-msgid "Handle sessions"
-msgstr ""
-
-#: actions/useradminpanel.php:272
-msgid "Whether to handle sessions ourselves."
-msgstr ""
-
-#: actions/useradminpanel.php:276
-msgid "Session debugging"
-msgstr ""
-
-#: actions/useradminpanel.php:278
-msgid "Turn on debugging output for sessions."
-msgstr ""
-
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "註冊確認"
@@ -3712,85 +4121,85 @@ msgid ""
 "click “Reject”."
 msgstr ""
 
-#: actions/userauthorization.php:188 actions/version.php:165
+#: actions/userauthorization.php:196 actions/version.php:165
 msgid "License"
 msgstr ""
 
-#: actions/userauthorization.php:209
+#: actions/userauthorization.php:217
 msgid "Accept"
 msgstr "接受"
 
-#: actions/userauthorization.php:210 lib/subscribeform.php:115
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
 #: lib/subscribeform.php:139
 msgid "Subscribe to this user"
 msgstr ""
 
-#: actions/userauthorization.php:211
+#: actions/userauthorization.php:219
 msgid "Reject"
 msgstr ""
 
-#: actions/userauthorization.php:212
+#: actions/userauthorization.php:220
 #, fuzzy
 msgid "Reject this subscription"
 msgstr "所有訂閱"
 
-#: actions/userauthorization.php:225
+#: actions/userauthorization.php:232
 msgid "No authorization request!"
 msgstr "無確認請求"
 
-#: actions/userauthorization.php:247
+#: actions/userauthorization.php:254
 msgid "Subscription authorized"
 msgstr ""
 
-#: actions/userauthorization.php:249
+#: actions/userauthorization.php:256
 msgid ""
 "The subscription has been authorized, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
 
-#: actions/userauthorization.php:259
+#: actions/userauthorization.php:266
 msgid "Subscription rejected"
 msgstr ""
 
-#: actions/userauthorization.php:261
+#: actions/userauthorization.php:268
 msgid ""
 "The subscription has been rejected, but no callback URL was passed. Check "
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
 
-#: actions/userauthorization.php:296
+#: actions/userauthorization.php:303
 #, php-format
 msgid "Listener URI ‘%s’ not found here."
 msgstr ""
 
-#: actions/userauthorization.php:301
+#: actions/userauthorization.php:308
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
 msgstr ""
 
-#: actions/userauthorization.php:307
+#: actions/userauthorization.php:314
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
 msgstr ""
 
-#: actions/userauthorization.php:322
+#: actions/userauthorization.php:329
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
 msgstr ""
 
-#: actions/userauthorization.php:338
+#: actions/userauthorization.php:345
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
 msgstr ""
 
-#: actions/userauthorization.php:343
+#: actions/userauthorization.php:350
 #, fuzzy, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "無法讀取此%sURL的圖像"
 
-#: actions/userauthorization.php:348
+#: actions/userauthorization.php:355
 #, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
 msgstr ""
@@ -3809,6 +4218,11 @@ msgstr ""
 msgid "Enjoy your hotdog!"
 msgstr ""
 
+#: actions/usergroups.php:64
+#, fuzzy, php-format
+msgid "%1$s groups, page %2$d"
+msgstr "所有訂閱"
+
 #: actions/usergroups.php:130
 msgid "Search for more groups"
 msgstr ""
@@ -3835,11 +4249,6 @@ msgid ""
 "Inc. and contributors."
 msgstr ""
 
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "更新個人圖像"
-
 #: actions/version.php:161
 msgid "Contributors"
 msgstr ""
@@ -3871,12 +4280,7 @@ msgstr ""
 msgid "Plugins"
 msgstr ""
 
-#: actions/version.php:195
-#, fuzzy
-msgid "Name"
-msgstr "暱稱"
-
-#: actions/version.php:196 lib/action.php:741
+#: actions/version.php:196 lib/action.php:747
 #, fuzzy
 msgid "Version"
 msgstr "地點"
@@ -3885,11 +4289,6 @@ msgstr "地點"
 msgid "Author(s)"
 msgstr ""
 
-#: actions/version.php:198 lib/groupeditform.php:172
-#, fuzzy
-msgid "Description"
-msgstr "所有訂閱"
-
 #: classes/File.php:144
 #, php-format
 msgid ""
@@ -3939,61 +4338,87 @@ msgstr ""
 msgid "Could not update message with new URI."
 msgstr ""
 
-#: classes/Notice.php:171
+#: classes/Notice.php:157
 #, php-format
 msgid "DB error inserting hashtag: %s"
 msgstr ""
 
-#: classes/Notice.php:225
+#: classes/Notice.php:222
 #, fuzzy
 msgid "Problem saving notice. Too long."
 msgstr "儲存使用者發生錯誤"
 
-#: classes/Notice.php:229
+#: classes/Notice.php:226
 #, fuzzy
 msgid "Problem saving notice. Unknown user."
 msgstr "儲存使用者發生錯誤"
 
-#: classes/Notice.php:234
+#: classes/Notice.php:231
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
 
-#: classes/Notice.php:240
+#: classes/Notice.php:237
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
 
-#: classes/Notice.php:246
+#: classes/Notice.php:243
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:305 classes/Notice.php:330
+#: classes/Notice.php:309 classes/Notice.php:335
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1052
-#, php-format
-msgid "DB error inserting reply: %s"
-msgstr "å¢\9eå\8a å\9b\9eè¦\86æ\99\82,è³\87æ\96\99庫ç\99¼ç\94\9fé\8c¯èª¤: %s"
+#: classes/Notice.php:882
+#, fuzzy
+msgid "Problem saving group inbox."
+msgstr "å\84²å­\98使ç\94¨è\80\85ç\99¼ç\94\9fé\8c¯èª¤"
 
-#: classes/Notice.php:1423
+#: classes/Notice.php:1407
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
 
-#: classes/User.php:382
+#: classes/Subscription.php:66 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#: classes/Subscription.php:70
+msgid "Already subscribed!"
+msgstr ""
+
+#: classes/Subscription.php:74
+msgid "User has blocked you."
+msgstr ""
+
+#: classes/Subscription.php:157
+#, fuzzy
+msgid "Not subscribed!"
+msgstr "此帳號已註冊"
+
+#: classes/Subscription.php:163
+#, fuzzy
+msgid "Couldn't delete self-subscription."
+msgstr "無法刪除帳號"
+
+#: classes/Subscription.php:179 lib/subs.php:69
+msgid "Couldn't delete subscription."
+msgstr "無法刪除帳號"
+
+#: classes/User.php:372
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
 msgstr ""
 
-#: classes/User_group.php:380
+#: classes/User_group.php:423
 #, fuzzy
 msgid "Could not create group."
 msgstr "無法存取個人圖像資料"
 
-#: classes/User_group.php:409
+#: classes/User_group.php:452
 #, fuzzy
 msgid "Could not set group membership."
 msgstr "註冊失敗"
@@ -4037,134 +4462,129 @@ msgstr "%1$s的狀態是%2$s"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:427
+#: lib/action.php:433
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Home"
 msgstr "主頁"
 
-#: lib/action.php:433
+#: lib/action.php:439
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:435
-#, fuzzy
-msgid "Account"
-msgstr "關於"
-
-#: lib/action.php:435
+#: lib/action.php:441
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:438
+#: lib/action.php:444
 msgid "Connect"
 msgstr "連結"
 
-#: lib/action.php:438
+#: lib/action.php:444
 #, fuzzy
 msgid "Connect to services"
 msgstr "無法連結到伺服器:%s"
 
-#: lib/action.php:442
+#: lib/action.php:448
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:446 lib/subgroupnav.php:105
+#: lib/action.php:452 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:447 lib/subgroupnav.php:106
+#: lib/action.php:453 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout"
 msgstr "登出"
 
-#: lib/action.php:452
+#: lib/action.php:458
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:457
+#: lib/action.php:463
 #, fuzzy
 msgid "Create an account"
 msgstr "新增帳號"
 
-#: lib/action.php:460
+#: lib/action.php:466
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:463 lib/action.php:726
+#: lib/action.php:469 lib/action.php:732
 msgid "Help"
 msgstr "求救"
 
-#: lib/action.php:463
+#: lib/action.php:469
 #, fuzzy
 msgid "Help me!"
 msgstr "求救"
 
-#: lib/action.php:466 lib/searchaction.php:127
+#: lib/action.php:472 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:466
+#: lib/action.php:472
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:487
+#: lib/action.php:493
 #, fuzzy
 msgid "Site notice"
 msgstr "新訊息"
 
-#: lib/action.php:553
+#: lib/action.php:559
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:619
+#: lib/action.php:625
 #, fuzzy
 msgid "Page notice"
 msgstr "新訊息"
 
-#: lib/action.php:721
+#: lib/action.php:727
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:734
 msgid "About"
 msgstr "關於"
 
-#: lib/action.php:730
+#: lib/action.php:736
 msgid "FAQ"
 msgstr "常見問題"
 
-#: lib/action.php:734
+#: lib/action.php:740
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:743
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:745
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:743
+#: lib/action.php:749
 msgid "Contact"
 msgstr "好友名單"
 
-#: lib/action.php:745
+#: lib/action.php:751
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:773
+#: lib/action.php:779
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:782
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4173,12 +4593,12 @@ msgstr ""
 "**%%site.name%%**是由[%%site.broughtby%%](%%site.broughtbyurl%%)所提供的微型"
 "部落格服務"
 
-#: lib/action.php:778
+#: lib/action.php:784
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%**是個微型部落格"
 
-#: lib/action.php:780
+#: lib/action.php:786
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4186,34 +4606,56 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:794
+#: lib/action.php:801
 #, fuzzy
 msgid "Site content license"
 msgstr "新訊息"
 
-#: lib/action.php:803
+#: lib/action.php:806
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#: lib/action.php:811
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#: lib/action.php:814
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#: lib/action.php:827
 msgid "All "
 msgstr ""
 
-#: lib/action.php:808
+#: lib/action.php:833
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1102
+#: lib/action.php:1132
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1111
+#: lib/action.php:1141
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1119
+#: lib/action.php:1149
 #, fuzzy
 msgid "Before"
 msgstr "之前的內容»"
 
-#: lib/action.php:1167
-msgid "There was a problem with your session token."
+#: lib/activity.php:382
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activity.php:410
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activity.php:414
+msgid "Can't handle embedded Base64 content yet."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
@@ -4246,11 +4688,101 @@ msgstr "確認信箱"
 msgid "Design configuration"
 msgstr "確認信箱"
 
-#: lib/adminpanelaction.php:322 lib/adminpanelaction.php:327
+#: lib/adminpanelaction.php:322
+#, fuzzy
+msgid "User configuration"
+msgstr "確認信箱"
+
+#: lib/adminpanelaction.php:327
+#, fuzzy
+msgid "Access configuration"
+msgstr "確認信箱"
+
+#: lib/adminpanelaction.php:332
 #, fuzzy
 msgid "Paths configuration"
 msgstr "確認信箱"
 
+#: lib/adminpanelaction.php:337
+#, fuzzy
+msgid "Sessions configuration"
+msgstr "確認信箱"
+
+#: lib/apiauth.php:95
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#: lib/apiauth.php:273
+#, php-format
+msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
+msgstr ""
+
+#: lib/applicationeditform.php:136
+msgid "Edit application"
+msgstr ""
+
+#: lib/applicationeditform.php:184
+msgid "Icon for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:204
+#, fuzzy, php-format
+msgid "Describe your application in %d characters"
+msgstr "請在140個字以內描述你自己與你的興趣"
+
+#: lib/applicationeditform.php:207
+#, fuzzy
+msgid "Describe your application"
+msgstr "請在140個字以內描述你自己與你的興趣"
+
+#: lib/applicationeditform.php:216
+msgid "Source URL"
+msgstr ""
+
+#: lib/applicationeditform.php:218
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#: lib/applicationeditform.php:224
+msgid "Organization responsible for this application"
+msgstr ""
+
+#: lib/applicationeditform.php:230
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#: lib/applicationeditform.php:236
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#: lib/applicationeditform.php:258
+msgid "Browser"
+msgstr ""
+
+#: lib/applicationeditform.php:274
+msgid "Desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:275
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#: lib/applicationeditform.php:297
+msgid "Read-only"
+msgstr ""
+
+#: lib/applicationeditform.php:315
+msgid "Read-write"
+msgstr ""
+
+#: lib/applicationeditform.php:316
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#: lib/applicationlist.php:154
+msgid "Revoke"
+msgstr ""
+
 #: lib/attachmentlist.php:87
 msgid "Attachments"
 msgstr ""
@@ -4271,11 +4803,11 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
-#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
 msgid "Password changing failed"
 msgstr ""
 
-#: lib/authenticationplugin.php:197
+#: lib/authenticationplugin.php:233
 msgid "Password changing is not allowed"
 msgstr ""
 
@@ -4428,80 +4960,90 @@ msgstr "儲存使用者發生錯誤"
 msgid "Specify the name of the user to subscribe to"
 msgstr ""
 
-#: lib/command.php:554
+#: lib/command.php:554 lib/command.php:589
+#, fuzzy
+msgid "No such user"
+msgstr "無此使用者"
+
+#: lib/command.php:561
 #, php-format
 msgid "Subscribed to %s"
 msgstr ""
 
-#: lib/command.php:575
+#: lib/command.php:582 lib/command.php:685
 msgid "Specify the name of the user to unsubscribe from"
 msgstr ""
 
-#: lib/command.php:582
+#: lib/command.php:595
 #, php-format
 msgid "Unsubscribed from %s"
 msgstr ""
 
-#: lib/command.php:600 lib/command.php:623
+#: lib/command.php:613 lib/command.php:636
 msgid "Command not yet implemented."
 msgstr ""
 
-#: lib/command.php:603
+#: lib/command.php:616
 msgid "Notification off."
 msgstr ""
 
-#: lib/command.php:605
+#: lib/command.php:618
 msgid "Can't turn off notification."
 msgstr ""
 
-#: lib/command.php:626
+#: lib/command.php:639
 msgid "Notification on."
 msgstr ""
 
-#: lib/command.php:628
+#: lib/command.php:641
 msgid "Can't turn on notification."
 msgstr ""
 
-#: lib/command.php:641
+#: lib/command.php:654
 msgid "Login command is disabled"
 msgstr ""
 
-#: lib/command.php:652
+#: lib/command.php:665
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
 msgstr ""
 
-#: lib/command.php:668
+#: lib/command.php:692
+#, fuzzy, php-format
+msgid "Unsubscribed  %s"
+msgstr "此帳號已註冊"
+
+#: lib/command.php:709
 #, fuzzy
 msgid "You are not subscribed to anyone."
 msgstr "此帳號已註冊"
 
-#: lib/command.php:670
+#: lib/command.php:711
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
 msgstr[0] "此帳號已註冊"
 
-#: lib/command.php:690
+#: lib/command.php:731
 #, fuzzy
 msgid "No one is subscribed to you."
 msgstr "無此訂閱"
 
-#: lib/command.php:692
+#: lib/command.php:733
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
 msgstr[0] "無此訂閱"
 
-#: lib/command.php:712
+#: lib/command.php:753
 #, fuzzy
 msgid "You are not a member of any groups."
 msgstr "無法連結到伺服器:%s"
 
-#: lib/command.php:714
+#: lib/command.php:755
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
 msgstr[0] "無法連結到伺服器:%s"
 
-#: lib/command.php:728
+#: lib/command.php:769
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4515,6 +5057,7 @@ msgid ""
 "d <nickname> <text> - direct message to user\n"
 "get <nickname> - get last notice from user\n"
 "whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
 "fav <nickname> - add user's last notice as a 'fave'\n"
 "fav #<notice_id> - add notice with the given id as a 'fave'\n"
 "repeat #<notice_id> - repeat a notice with a given id\n"
@@ -4542,20 +5085,20 @@ msgid ""
 "tracking - not yet implemented.\n"
 msgstr ""
 
-#: lib/common.php:131
+#: lib/common.php:136
 #, fuzzy
 msgid "No configuration file found. "
 msgstr "無確認碼"
 
-#: lib/common.php:132
+#: lib/common.php:137
 msgid "I looked for configuration files in the following places: "
 msgstr ""
 
-#: lib/common.php:134
+#: lib/common.php:139
 msgid "You may wish to run the installer to fix this."
 msgstr ""
 
-#: lib/common.php:135
+#: lib/common.php:140
 msgid "Go to the installer."
 msgstr ""
 
@@ -4571,6 +5114,15 @@ msgstr ""
 msgid "Updates by SMS"
 msgstr ""
 
+#: lib/connectsettingsaction.php:120
+#, fuzzy
+msgid "Connections"
+msgstr "連結"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
 #: lib/dberroraction.php:60
 msgid "Database error"
 msgstr ""
@@ -4759,12 +5311,12 @@ msgstr ""
 msgid "kB"
 msgstr ""
 
-#: lib/jabber.php:202
+#: lib/jabber.php:220
 #, php-format
 msgid "[%s]"
 msgstr ""
 
-#: lib/jabber.php:385
+#: lib/jabber.php:400
 #, php-format
 msgid "Unknown inbox source %d."
 msgstr ""
@@ -4969,7 +5521,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:477
+#: lib/mailbox.php:227 lib/noticelist.php:482
 msgid "from"
 msgstr ""
 
@@ -5089,59 +5641,55 @@ msgid "Do not share my location"
 msgstr "無法儲存個人資料"
 
 #: lib/noticeform.php:216
-msgid "Hide this info"
-msgstr ""
-
-#: lib/noticeform.php:217
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:429
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:429
+#: lib/noticelist.php:430
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:430
+#: lib/noticelist.php:431
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:436
+#: lib/noticelist.php:438
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:531
+#: lib/noticelist.php:558
 #, fuzzy
 msgid "in context"
 msgstr "無內容"
 
-#: lib/noticelist.php:556
+#: lib/noticelist.php:583
 #, fuzzy
 msgid "Repeated by"
 msgstr "新增"
 
-#: lib/noticelist.php:585
+#: lib/noticelist.php:610
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:586
+#: lib/noticelist.php:611
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:628
+#: lib/noticelist.php:655
 #, fuzzy
 msgid "Notice repeated"
 msgstr "更新個人圖像"
@@ -5175,11 +5723,7 @@ msgstr "新增外部個人資料發生錯誤(Error inserting remote profile)"
 msgid "Duplicate notice"
 msgstr "新訊息"
 
-#: lib/oauthstore.php:466 lib/subs.php:48
-msgid "You have been banned from subscribing."
-msgstr ""
-
-#: lib/oauthstore.php:491
+#: lib/oauthstore.php:490
 msgid "Couldn't insert new subscription."
 msgstr "無法新增訂閱"
 
@@ -5195,19 +5739,19 @@ msgstr ""
 msgid "Favorites"
 msgstr ""
 
-#: lib/personalgroupnav.php:124
+#: lib/personalgroupnav.php:125
 msgid "Inbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:125
+#: lib/personalgroupnav.php:126
 msgid "Your incoming messages"
 msgstr ""
 
-#: lib/personalgroupnav.php:129
+#: lib/personalgroupnav.php:130
 msgid "Outbox"
 msgstr ""
 
-#: lib/personalgroupnav.php:130
+#: lib/personalgroupnav.php:131
 msgid "Your sent messages"
 msgstr ""
 
@@ -5288,6 +5832,10 @@ msgstr "無此通知"
 msgid "Repeat this notice"
 msgstr "無此通知"
 
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
 #: lib/sandboxform.php:67
 msgid "Sandbox"
 msgstr ""
@@ -5358,36 +5906,6 @@ msgstr "此帳號已註冊"
 msgid "Groups %s is a member of"
 msgstr ""
 
-#: lib/subs.php:52
-msgid "Already subscribed!"
-msgstr ""
-
-#: lib/subs.php:56
-msgid "User has blocked you."
-msgstr ""
-
-#: lib/subs.php:63
-msgid "Could not subscribe."
-msgstr ""
-
-#: lib/subs.php:82
-msgid "Could not subscribe other to you."
-msgstr ""
-
-#: lib/subs.php:137
-#, fuzzy
-msgid "Not subscribed!"
-msgstr "此帳號已註冊"
-
-#: lib/subs.php:142
-#, fuzzy
-msgid "Couldn't delete self-subscription."
-msgstr "無法刪除帳號"
-
-#: lib/subs.php:158
-msgid "Couldn't delete subscription."
-msgstr "無法刪除帳號"
-
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
@@ -5441,68 +5959,68 @@ msgstr "個人圖像"
 msgid "User actions"
 msgstr ""
 
-#: lib/userprofile.php:248
+#: lib/userprofile.php:251
 #, fuzzy
 msgid "Edit profile settings"
 msgstr "線上即時通設定"
 
-#: lib/userprofile.php:249
+#: lib/userprofile.php:252
 msgid "Edit"
 msgstr ""
 
-#: lib/userprofile.php:272
+#: lib/userprofile.php:275
 msgid "Send a direct message to this user"
 msgstr ""
 
-#: lib/userprofile.php:273
+#: lib/userprofile.php:276
 msgid "Message"
 msgstr ""
 
-#: lib/userprofile.php:311
+#: lib/userprofile.php:314
 msgid "Moderate"
 msgstr ""
 
-#: lib/util.php:877
+#: lib/util.php:952
 msgid "a few seconds ago"
 msgstr ""
 
-#: lib/util.php:879
+#: lib/util.php:954
 msgid "about a minute ago"
 msgstr ""
 
-#: lib/util.php:881
+#: lib/util.php:956
 #, php-format
 msgid "about %d minutes ago"
 msgstr ""
 
-#: lib/util.php:883
+#: lib/util.php:958
 msgid "about an hour ago"
 msgstr ""
 
-#: lib/util.php:885
+#: lib/util.php:960
 #, php-format
 msgid "about %d hours ago"
 msgstr ""
 
-#: lib/util.php:887
+#: lib/util.php:962
 msgid "about a day ago"
 msgstr ""
 
-#: lib/util.php:889
+#: lib/util.php:964
 #, php-format
 msgid "about %d days ago"
 msgstr ""
 
-#: lib/util.php:891
+#: lib/util.php:966
 msgid "about a month ago"
 msgstr ""
 
-#: lib/util.php:893
+#: lib/util.php:968
 #, php-format
 msgid "about %d months ago"
 msgstr ""
 
-#: lib/util.php:895
+#: lib/util.php:970
 msgid "about a year ago"
 msgstr ""
 
@@ -5516,7 +6034,7 @@ msgstr "個人首頁位址錯誤"
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
 msgstr ""
 
-#: scripts/xmppdaemon.php:301
+#: lib/xmppmanager.php:402
 #, php-format
 msgid "Message too long - maximum is %1$d characters, you sent %2$d."
 msgstr ""
diff --git a/plugins/FeedSub/FeedSubPlugin.php b/plugins/FeedSub/FeedSubPlugin.php
deleted file mode 100644 (file)
index e49e2a6..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/*
-StatusNet Plugin: 0.9
-Plugin Name: FeedSub
-Plugin URI: http://status.net/wiki/Feed_subscription
-Description: FeedSub allows subscribing to real-time updates from external feeds supporting PubHubSubbub protocol.
-Version: 0.1
-Author: Brion Vibber <brion@status.net>
-Author URI: http://status.net/
-*/
-
-/*
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * @package FeedSubPlugin
- * @maintainer Brion Vibber <brion@status.net>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-define('FEEDSUB_SERVICE', 100); // fixme -- avoid hardcoding these?
-
-// We bundle the XML_Parse_Feed library...
-set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib');
-
-class FeedSubException extends Exception
-{
-}
-
-class FeedSubPlugin extends Plugin
-{
-    /**
-     * Hook for RouterInitialized event.
-     *
-     * @param Net_URL_Mapper $m path-to-action mapper
-     * @return boolean hook return
-     */
-    function onRouterInitialized($m)
-    {
-        $m->connect('feedsub/callback/:feed',
-                    array('action' => 'feedsubcallback'),
-                    array('feed' => '[0-9]+'));
-        $m->connect('settings/feedsub',
-                    array('action' => 'feedsubsettings'));
-        return true;
-    }
-
-    /**
-     * Add the feed settings page to the Connect Settings menu
-     *
-     * @param Action &$action The calling page
-     *
-     * @return boolean hook return
-     */
-    function onEndConnectSettingsNav(&$action)
-    {
-        $action_name = $action->trimmed('action');
-
-        $action->menuItem(common_local_url('feedsubsettings'),
-                          _m('Feeds'),
-                          _m('Feed subscription options'),
-                          $action_name === 'feedsubsettings');
-
-        return true;
-    }
-
-    /**
-     * Automatically load the actions and libraries used by the plugin
-     *
-     * @param Class $cls the class
-     *
-     * @return boolean hook return
-     *
-     */
-    function onAutoload($cls)
-    {
-        $base = dirname(__FILE__);
-        $lower = strtolower($cls);
-        $files = array("$base/$lower.php");
-        if (substr($lower, -6) == 'action') {
-            $files[] = "$base/actions/" . substr($lower, 0, -6) . ".php";
-        }
-        foreach ($files as $file) {
-            if (file_exists($file)) {
-                include_once $file;
-                return false;
-            }
-        }
-        return true;
-    }
-
-    function onCheckSchema() {
-        // warning: the autoincrement doesn't seem to set.
-        // alter table feedinfo change column id id int(11) not null  auto_increment;
-        $schema = Schema::get();
-        $schema->ensureTable('feedinfo', Feedinfo::schemaDef());
-        return true;
-    }
-}
diff --git a/plugins/FeedSub/README b/plugins/FeedSub/README
deleted file mode 100644 (file)
index cbf3adb..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Plugin to support importing updates from external RSS and Atom feeds into your timeline.
-
-Uses PubSubHubbub for push feed updates; currently non-PuSH feeds cannot be subscribed.
-
-Todo:
-* set feed icon avatar for actual profiles as well as for preview
-* use channel image and/or favicon for avatar?
-* garbage-collect subscriptions that are no longer being used
-* administrative way to kill feeds?
-* functional l10n
-* clean up subscription form look and workflow
-* use ajax for test/preview in subscription form
-* rssCloud support? (Does anything use it that doesn't support PuSH as well?)
-* possibly a polling daemon to support non-PuSH feeds?
-* likely problems with multiple feeds from the same site, such as category feeds on a blog
-  (currently each feed would publish a separate notice on a separate profile, but pointing to the same post URI.)
-  (could use the local URI I guess, but that's so icky!)
-* problems with Atom feeds that list <link rel="alternate" href="..."/> but don't have the type
-  (such as http://atomgen.appspot.com/feed/5 demo feed); currently it's not recognized and we end up with the feed's master URI
-* make it easier to see what you're subscribed to and unsub from things
-* saner treatment of fullname/nickname?
-* make use of tags/categories from feeds
-* update feed profile data when it changes
-* XML_Feed_Parser has major problems with category and link tags; consider replacing?
diff --git a/plugins/FeedSub/actions/feedsubcallback.php b/plugins/FeedSub/actions/feedsubcallback.php
deleted file mode 100644 (file)
index 0c4280c..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/*
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * @package FeedSubPlugin
- * @maintainer Brion Vibber <brion@status.net>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-
-class FeedSubCallbackAction extends Action
-{
-    function handle()
-    {
-        parent::handle();
-        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-            $this->handlePost();
-        } else {
-            $this->handleGet();
-        }
-    }
-    
-    /**
-     * Handler for POST content updates from the hub
-     */
-    function handlePost()
-    {
-        $feedid = $this->arg('feed');
-        common_log(LOG_INFO, "POST for feed id $feedid");
-        if (!$feedid) {
-            throw new ServerException('Empty or invalid feed id', 400);
-        }
-
-        $feedinfo = Feedinfo::staticGet('id', $feedid);
-        if (!$feedinfo) {
-            throw new ServerException('Unknown feed id ' . $feedid, 400);
-        }
-        
-        $post = file_get_contents('php://input');
-        $feedinfo->postUpdates($post);
-    }
-    
-    /**
-     * Handler for GET verification requests from the hub
-     */
-    function handleGet()
-    {
-        $mode = $this->arg('hub_mode');
-        $topic = $this->arg('hub_topic');
-        $challenge = $this->arg('hub_challenge');
-        $lease_seconds = $this->arg('hub_lease_seconds');
-        $verify_token = $this->arg('hub_verify_token');
-        
-        if ($mode != 'subscribe' && $mode != 'unsubscribe') {
-            common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with mode \"$mode\"");
-            throw new ServerException("Bogus hub callback: bad mode", 404);
-        }
-        
-        $feedinfo = Feedinfo::staticGet('feeduri', $topic);
-        if (!$feedinfo) {
-            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;
-        }
-        $feedinfo->update();
-        
-        print $challenge;
-    }
-}
diff --git a/plugins/FeedSub/actions/feedsubsettings.php b/plugins/FeedSub/actions/feedsubsettings.php
deleted file mode 100644 (file)
index 0fba20a..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-/*
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * @package FeedSubPlugin
- * @maintainer Brion Vibber <brion@status.net>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-class FeedSubSettingsAction extends ConnectSettingsAction
-{
-    protected $feedurl;
-    protected $preview;
-    protected $munger;
-
-    /**
-     * Title of the page
-     *
-     * @return string Title of the page
-     */
-
-    function title()
-    {
-        return _m('Feed subscriptions');
-    }
-
-    /**
-     * Instructions for use
-     *
-     * @return instructions for use
-     */
-
-    function getInstructions()
-    {
-        return _m('You can subscribe to feeds from other sites; ' .
-                  'updates will appear in your personal timeline.');
-    }
-
-    /**
-     * Content area of the page
-     *
-     * Shows a form for associating a Twitter account with this
-     * StatusNet account. Also lets the user set preferences.
-     *
-     * @return void
-     */
-
-    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');
-
-        if ($this->preview) {
-            $this->submit('subscribe', _m('Subscribe'));
-        } else {
-            $this->submit('validate', _m('Continue'));
-        }
-
-        $this->elementEnd('fieldset');
-
-        $this->elementEnd('form');
-
-        if ($this->preview) {
-            $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('validate')) {
-            $this->validateAndPreview();
-        } else 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 = trim($this->arg('feedurl'));
-        
-        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->feedinfo = $this->munger->feedInfo();
-
-        if ($this->feedinfo->huburi == '') {
-            $this->showForm(_m('Feed is not PuSH-enabled; cannot subscribe.'));
-            return false;
-        }
-        
-        return true;
-    }
-
-    function saveFeed()
-    {
-        if ($this->validateFeed()) {
-            $this->preview = true;
-            $this->feedinfo = Feedinfo::ensureProfile($this->munger);
-
-            // 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}");
-            } else {
-                $ok = $this->feedinfo->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!'));
-            } else {
-                $this->showForm(_m('Feed subscription failed!'));
-            }
-        }
-    }
-
-    function validateAndPreview()
-    {
-        if ($this->validateFeed()) {
-            $this->preview = true;
-            $this->showForm(_m('Previewing feed:'));
-        }
-    }
-
-    function previewFeed()
-    {
-        $feedinfo = $this->munger->feedinfo();
-        $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.');
-        }
-    }
-
-    function showScripts()
-    {
-        parent::showScripts();
-        $this->autofocus('feedurl');
-    }
-}
diff --git a/plugins/FeedSub/extlib/README b/plugins/FeedSub/extlib/README
deleted file mode 100644 (file)
index 799b40c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-XML_Feed_Parser 1.0.3 is not currently actively maintained, and has
-a nasty bug which breaks getting the feed target link from WordPress
-feeds and possibly others that are RSS2-formatted but include an
-<atom:link> self-link element as well.
-
-Patch from this bug report is included:
-http://pear.php.net/bugs/bug.php?id=16416
-
-If upgrading, be sure that fix is included with the future upgrade!
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser.php b/plugins/FeedSub/extlib/XML/Feed/Parser.php
deleted file mode 100755 (executable)
index ffe8220..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Key gateway class for XML_Feed_Parser package
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL
- * @version    CVS: $Id: Parser.php,v 1.24 2006/08/15 13:04:00 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * XML_Feed_Parser_Type is an abstract class required by all of our
- * feed types. It makes sense to load it here to keep the other files
- * clean.
- */
-require_once 'XML/Feed/Parser/Type.php';
-
-/**
- * We will throw exceptions when errors occur.
- */
-require_once 'XML/Feed/Parser/Exception.php';
-
-/**
- * This is the core of the XML_Feed_Parser package. It identifies feed types 
- * and abstracts access to them. It is an iterator, allowing for easy access 
- * to the entire feed.
- *
- * @author  James Stewart <james@jystewart.net>
- * @version Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser implements Iterator
-{
-    /**
-     * This is where we hold the feed object 
-     * @var Object
-     */
-    private $feed;
-
-    /**
-     * To allow for extensions, we make a public reference to the feed model 
-     * @var DOMDocument
-     */
-    public $model;
-    
-    /**
-     * A map between entry ID and offset
-     * @var array
-     */
-    protected $idMappings = array();
-
-    /**
-     * A storage space for Namespace URIs.
-     * @var array
-     */
-    private $feedNamespaces = array(
-        'rss2' => array(
-            'http://backend.userland.com/rss',
-            'http://backend.userland.com/rss2',
-            'http://blogs.law.harvard.edu/tech/rss'));
-    /**
-     * Detects feed types and instantiate appropriate objects.
-     *
-     * Our constructor takes care of detecting feed types and instantiating
-     * appropriate classes. For now we're going to treat Atom 0.3 as Atom 1.0
-     * but raise a warning. I do not intend to introduce full support for 
-     * Atom 0.3 as it has been deprecated, but others are welcome to.
-     *
-     * @param    string    $feed    XML serialization of the feed
-     * @param    bool    $strict    Whether or not to validate the feed
-     * @param    bool    $suppressWarnings Trigger errors for deprecated feed types?
-     * @param    bool    $tidy    Whether or not to try and use the tidy library on input
-     */
-    function __construct($feed, $strict = false, $suppressWarnings = false, $tidy = false)
-    {
-        $this->model = new DOMDocument;
-        if (! $this->model->loadXML($feed)) {
-            if (extension_loaded('tidy') && $tidy) {
-                $tidy = new tidy;
-                $tidy->parseString($feed, 
-                    array('input-xml' => true, 'output-xml' => true));
-                $tidy->cleanRepair();
-                if (! $this->model->loadXML((string) $tidy)) {
-                    throw new XML_Feed_Parser_Exception('Invalid input: this is not ' .
-                        'valid XML');
-                }
-            } else {
-                throw new XML_Feed_Parser_Exception('Invalid input: this is not valid XML');
-            }
-
-        }
-
-        /* detect feed type */
-        $doc_element = $this->model->documentElement;
-        $error = false;
-
-        switch (true) {
-            case ($doc_element->namespaceURI == 'http://www.w3.org/2005/Atom'):
-                require_once 'XML/Feed/Parser/Atom.php';
-                require_once 'XML/Feed/Parser/AtomElement.php';
-                $class = 'XML_Feed_Parser_Atom';
-                break;
-            case ($doc_element->namespaceURI == 'http://purl.org/atom/ns#'):
-                require_once 'XML/Feed/Parser/Atom.php';
-                require_once 'XML/Feed/Parser/AtomElement.php';
-                $class = 'XML_Feed_Parser_Atom';
-                $error = 'Atom 0.3 deprecated, using 1.0 parser which won\'t provide ' .
-                    'all options';
-                break;
-            case ($doc_element->namespaceURI == 'http://purl.org/rss/1.0/' || 
-                ($doc_element->hasChildNodes() && $doc_element->childNodes->length > 1 
-                && $doc_element->childNodes->item(1)->namespaceURI == 
-                'http://purl.org/rss/1.0/')):
-                require_once 'XML/Feed/Parser/RSS1.php';
-                require_once 'XML/Feed/Parser/RSS1Element.php';
-                $class = 'XML_Feed_Parser_RSS1';
-                break;
-            case ($doc_element->namespaceURI == 'http://purl.org/rss/1.1/' || 
-                ($doc_element->hasChildNodes() && $doc_element->childNodes->length > 1 
-                && $doc_element->childNodes->item(1)->namespaceURI == 
-                'http://purl.org/rss/1.1/')):
-                require_once 'XML/Feed/Parser/RSS11.php';
-                require_once 'XML/Feed/Parser/RSS11Element.php';
-                $class = 'XML_Feed_Parser_RSS11';
-                break;
-            case (($doc_element->hasChildNodes() && $doc_element->childNodes->length > 1
-                && $doc_element->childNodes->item(1)->namespaceURI == 
-                'http://my.netscape.com/rdf/simple/0.9/') || 
-                $doc_element->namespaceURI == 'http://my.netscape.com/rdf/simple/0.9/'):
-                require_once 'XML/Feed/Parser/RSS09.php';
-                require_once 'XML/Feed/Parser/RSS09Element.php';
-                $class = 'XML_Feed_Parser_RSS09';
-                break;
-            case ($doc_element->tagName == 'rss' and
-                $doc_element->hasAttribute('version') && 
-                $doc_element->getAttribute('version') == 0.91):
-                $error = 'RSS 0.91 has been superceded by RSS2.0. Using RSS2.0 parser.';
-                require_once 'XML/Feed/Parser/RSS2.php';
-                require_once 'XML/Feed/Parser/RSS2Element.php';
-                $class = 'XML_Feed_Parser_RSS2';
-                break;
-            case ($doc_element->tagName == 'rss' and
-                $doc_element->hasAttribute('version') && 
-                $doc_element->getAttribute('version') == 0.92):
-                $error = 'RSS 0.92 has been superceded by RSS2.0. Using RSS2.0 parser.';
-                require_once 'XML/Feed/Parser/RSS2.php';
-                require_once 'XML/Feed/Parser/RSS2Element.php';
-                $class = 'XML_Feed_Parser_RSS2';
-                break;
-            case (in_array($doc_element->namespaceURI, $this->feedNamespaces['rss2'])
-                || $doc_element->tagName == 'rss'):
-                if (! $doc_element->hasAttribute('version') || 
-                    $doc_element->getAttribute('version') != 2) {
-                    $error = 'RSS version not specified. Parsing as RSS2.0';
-                }
-                require_once 'XML/Feed/Parser/RSS2.php';
-                require_once 'XML/Feed/Parser/RSS2Element.php';
-                $class = 'XML_Feed_Parser_RSS2';
-                break;
-            default:
-                throw new XML_Feed_Parser_Exception('Feed type unknown');
-                break;
-        }
-
-        if (! $suppressWarnings && ! empty($error)) {
-            trigger_error($error, E_USER_WARNING);
-        }
-
-        /* Instantiate feed object */
-        $this->feed = new $class($this->model, $strict);
-    }
-
-    /**
-     * Proxy to allow feed element names to be used as method names
-     *
-     * For top-level feed elements we will provide access using methods or 
-     * attributes. This function simply passes on a request to the appropriate 
-     * feed type object.
-     *
-     * @param   string  $call - the method being called
-     * @param   array   $attributes
-     */
-    function __call($call, $attributes)
-    {
-        $attributes = array_pad($attributes, 5, false);
-        list($a, $b, $c, $d, $e) = $attributes;
-        return $this->feed->$call($a, $b, $c, $d, $e);
-    }
-
-    /**
-     * Proxy to allow feed element names to be used as attribute names
-     *
-     * To allow variable-like access to feed-level data we use this
-     * method. It simply passes along to __call() which in turn passes
-     * along to the relevant object.
-     *
-     * @param   string  $val - the name of the variable required
-     */
-    function __get($val)
-    {
-        return $this->feed->$val;
-    }
-
-    /**
-     * Provides iteration functionality.
-     *
-     * Of course we must be able to iterate... This function simply increases
-     * our internal counter.
-     */
-    function next()
-    {
-        if (isset($this->current_item) && 
-            $this->current_item <= $this->feed->numberEntries - 1) {
-            ++$this->current_item;
-        } else if (! isset($this->current_item)) {
-            $this->current_item = 0;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Return XML_Feed_Type object for current element
-     *
-     * @return    XML_Feed_Parser_Type Object
-     */
-    function current()
-    {
-        return $this->getEntryByOffset($this->current_item);
-    }
-
-    /**
-     * For iteration -- returns the key for the current stage in the array.
-     *
-     * @return    int
-     */    
-    function key()
-    {
-        return $this->current_item;
-    }
-
-    /**
-     * For iteration -- tells whether we have reached the 
-     * end.
-     *
-     * @return    bool
-     */
-    function valid()
-    {
-        return $this->current_item < $this->feed->numberEntries;
-    }
-
-    /**
-     * For iteration -- resets the internal counter to the beginning.
-     */
-    function rewind()
-    {
-        $this->current_item = 0;
-    }
-
-    /**
-     * Provides access to entries by ID if one is specified in the source feed.
-     *
-     * As well as allowing the items to be iterated over we want to allow
-     * users to be able to access a specific entry. This is one of two ways of
-     * doing that, the other being by offset. This method can be quite slow
-     * if dealing with a large feed that hasn't yet been processed as it
-     * instantiates objects for every entry until it finds the one needed.
-     *
-     * @param    string    $id  Valid ID for the given feed format
-     * @return    XML_Feed_Parser_Type|false
-     */            
-    function getEntryById($id)
-    {
-        if (isset($this->idMappings[$id])) {
-            return $this->getEntryByOffset($this->idMappings[$id]);
-        }
-
-        /* 
-         * Since we have not yet encountered that ID, let's go through all the
-         * remaining entries in order till we find it.
-         * This is a fairly slow implementation, but it should work.
-         */
-        return $this->feed->getEntryById($id);
-    }
-
-    /**
-     * Retrieve entry by numeric offset, starting from zero.
-     *
-     * As well as allowing the items to be iterated over we want to allow
-     * users to be able to access a specific entry. This is one of two ways of
-     * doing that, the other being by ID.
-     *
-     * @param    int    $offset The position of the entry within the feed, starting from 0
-     * @return    XML_Feed_Parser_Type|false
-     */
-    function getEntryByOffset($offset)
-    {
-        if ($offset < $this->feed->numberEntries) {
-            if (isset($this->feed->entries[$offset])) {
-                return $this->feed->entries[$offset];
-            } else {
-                try {
-                    $this->feed->getEntryByOffset($offset);
-                } catch (Exception $e) {
-                    return false;
-                }
-                $id = $this->feed->entries[$offset]->getID();
-                $this->idMappings[$id] = $offset;
-                return $this->feed->entries[$offset];
-            }
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Retrieve version details from feed type class.
-     *
-     * @return void
-     * @author James Stewart
-     */
-    function version()
-    {
-        return $this->feed->version;
-    }
-    
-    /**
-     * Returns a string representation of the feed.
-     * 
-     * @return String
-     **/
-    function __toString()
-    {
-        return $this->feed->__toString();
-    }
-}
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Atom.php b/plugins/FeedSub/extlib/XML/Feed/Parser/Atom.php
deleted file mode 100644 (file)
index c7e218a..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Atom feed class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: Atom.php,v 1.29 2008/03/30 22:00:36 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
-*/
-
-/**
- * This is the class that determines how we manage Atom 1.0 feeds
- * 
- * How we deal with constructs:
- *  date - return as unix datetime for use with the 'date' function unless specified otherwise
- *  text - return as is. optional parameter will give access to attributes
- *  person - defaults to name, but parameter based access
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_Atom extends XML_Feed_Parser_Type
-{
-    /**
-     * The URI of the RelaxNG schema used to (optionally) validate the feed 
-     * @var string
-     */
-    private $relax = 'atom.rnc';
-
-    /**
-     * We're likely to use XPath, so let's keep it global 
-     * @var DOMXPath
-     */
-    public $xpath;
-
-    /**
-     * When performing XPath queries we will use this prefix 
-     * @var string
-     */
-    private $xpathPrefix = '//';
-
-    /**
-     * The feed type we are parsing 
-     * @var string
-     */
-    public $version = 'Atom 1.0';
-
-    /** 
-     * The class used to represent individual items 
-     * @var string
-     */
-    protected $itemClass = 'XML_Feed_Parser_AtomElement';
-    
-    /** 
-     * The element containing entries 
-     * @var string
-     */
-    protected $itemElement = 'entry';
-
-    /**
-     * Here we map those elements we're not going to handle individually
-     * to the constructs they are. The optional second parameter in the array
-     * tells the parser whether to 'fall back' (not apt. at the feed level) or
-     * fail if the element is missing. If the parameter is not set, the function
-     * will simply return false and leave it to the client to decide what to do.
-     * @var array
-     */
-    protected $map = array(
-        'author' => array('Person'),
-        'contributor' => array('Person'),
-        'icon' => array('Text'),
-        'logo' => array('Text'),
-        'id' => array('Text', 'fail'),
-        'rights' => array('Text'),
-        'subtitle' => array('Text'),
-        'title' => array('Text', 'fail'),
-        'updated' => array('Date', 'fail'),
-        'link' => array('Link'),
-        'generator' => array('Text'),
-        'category' => array('Category'));
-
-    /**
-     * Here we provide a few mappings for those very special circumstances in
-     * which it makes sense to map back to the RSS2 spec. Key is RSS2 version
-     * value is an array consisting of the equivalent in atom and any attributes
-     * needed to make the mapping.
-     * @var array
-     */
-    protected $compatMap = array(
-        'guid' => array('id'),
-        'links' => array('link'),
-        'tags' => array('category'),
-        'contributors' => array('contributor'));
-
-    /**
-     * Our constructor does nothing more than its parent.
-     * 
-     * @param    DOMDocument    $xml    A DOM object representing the feed
-     * @param    bool (optional) $string    Whether or not to validate this feed
-     */
-    function __construct(DOMDocument $model, $strict = false)
-    {
-        $this->model = $model;
-
-        if ($strict) {
-            if (! $this->model->relaxNGValidateSource($this->relax)) {
-                throw new XML_Feed_Parser_Exception('Failed required validation');
-            }
-        }
-
-        $this->xpath = new DOMXPath($this->model);
-        $this->xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
-        $this->numberEntries = $this->count('entry');
-    }
-
-    /**
-     * Implement retrieval of an entry based on its ID for atom feeds.
-     *
-     * This function uses XPath to get the entry based on its ID. If DOMXPath::evaluate
-     * is available, we also use that to store a reference to the entry in the array
-     * used by getEntryByOffset so that method does not have to seek out the entry
-     * if it's requested that way.
-     * 
-     * @param    string    $id    any valid Atom ID.
-     * @return    XML_Feed_Parser_AtomElement
-     */
-    function getEntryById($id)
-    {
-        if (isset($this->idMappings[$id])) {
-            return $this->entries[$this->idMappings[$id]];
-        }
-
-        $entries = $this->xpath->query("//atom:entry[atom:id='$id']");
-
-        if ($entries->length > 0) {
-            $xmlBase = $entries->item(0)->baseURI;
-            $entry = new $this->itemClass($entries->item(0), $this, $xmlBase);
-            
-            if (in_array('evaluate', get_class_methods($this->xpath))) {
-                $offset = $this->xpath->evaluate("count(preceding-sibling::atom:entry)", $entries->item(0));
-                $this->entries[$offset] = $entry;
-            }
-
-            $this->idMappings[$id] = $entry;
-
-            return $entry;
-        }
-        
-    }
-
-    /**
-     * Retrieves data from a person construct.
-     *
-     * Get a person construct. We default to the 'name' element but allow
-     * access to any of the elements.
-     * 
-     * @param    string    $method    The name of the person construct we want
-     * @param    array     $arguments    An array which we hope gives a 'param'
-     * @return    string|false
-     */
-    protected function getPerson($method, $arguments)
-    {
-        $offset = empty($arguments[0]) ? 0 : $arguments[0];
-        $parameter = empty($arguments[1]['param']) ? 'name' : $arguments[1]['param'];
-        $section = $this->model->getElementsByTagName($method);
-        
-        if ($parameter == 'url') {
-            $parameter = 'uri';
-        }
-
-        if ($section->length <= $offset) {
-            return false;
-        }
-
-        $param = $section->item($offset)->getElementsByTagName($parameter);
-        if ($param->length == 0) {
-            return false;
-        }
-        return $param->item(0)->nodeValue;
-    }
-
-    /**
-     * Retrieves an element's content where that content is a text construct.
-     *
-     * Get a text construct. When calling this method, the two arguments
-     * allowed are 'offset' and 'attribute', so $parser->subtitle() would
-     * return the content of the element, while $parser->subtitle(false, 'type')
-     * would return the value of the type attribute.
-     *
-     * @todo    Clarify overlap with getContent()
-     * @param    string    $method    The name of the text construct we want
-     * @param    array     $arguments    An array which we hope gives a 'param'
-     * @return    string
-     */
-    protected function getText($method, $arguments)
-    {
-        $offset = empty($arguments[0]) ? 0: $arguments[0];
-        $attribute = empty($arguments[1]) ? false : $arguments[1];
-        $tags = $this->model->getElementsByTagName($method);
-
-        if ($tags->length <= $offset) {
-            return false;
-        }
-
-        $content = $tags->item($offset);
-
-        if (! $content->hasAttribute('type')) {
-            $content->setAttribute('type', 'text');
-        }
-        $type = $content->getAttribute('type');
-
-        if (! empty($attribute) and 
-            ! ($method == 'generator' and $attribute == 'name')) {
-            if ($content->hasAttribute($attribute)) {
-                return $content->getAttribute($attribute);
-            } else if ($attribute == 'href' and $content->hasAttribute('uri')) {
-                return $content->getAttribute('uri');
-            }
-            return false;
-        }
-
-        return $this->parseTextConstruct($content);
-    }
-    
-    /**
-     * Extract content appropriately from atom text constructs
-     *
-     * Because of different rules applied to the content element and other text
-     * constructs, they are deployed as separate functions, but they share quite
-     * a bit of processing. This method performs the core common process, which is
-     * to apply the rules for different mime types in order to extract the content.
-     *
-     * @param   DOMNode $content    the text construct node to be parsed
-     * @return String
-     * @author James Stewart
-     **/
-    protected function parseTextConstruct(DOMNode $content)
-    {
-        if ($content->hasAttribute('type')) {
-            $type = $content->getAttribute('type');
-        } else {
-            $type = 'text';
-        }
-
-        if (strpos($type, 'text/') === 0) {
-            $type = 'text';
-        }
-
-        switch ($type) {
-            case 'text':
-            case 'html':
-                return $content->textContent;
-                break;
-            case 'xhtml':
-                $container = $content->getElementsByTagName('div');
-                if ($container->length == 0) {
-                    return false;
-                }
-                $contents = $container->item(0);
-                if ($contents->hasChildNodes()) {
-                    /* Iterate through, applying xml:base and store the result */
-                    $result = '';
-                    foreach ($contents->childNodes as $node) {
-                        $result .= $this->traverseNode($node);
-                    }
-                    return $result;
-                }
-                break;
-            case preg_match('@^[a-zA-Z]+/[a-zA-Z+]*xml@i', $type) > 0:
-                return $content;
-                break;
-            case 'application/octet-stream':
-            default:
-                return base64_decode(trim($content->nodeValue));
-                break;
-        }
-        return false;
-    }
-    /**
-     * Get a category from the entry.
-     *
-     * A feed or entry can have any number of categories. A category can have the
-     * attributes term, scheme and label.
-     * 
-     * @param    string    $method    The name of the text construct we want
-     * @param    array     $arguments    An array which we hope gives a 'param'
-     * @return    string
-     */
-    function getCategory($method, $arguments)
-    {
-        $offset = empty($arguments[0]) ? 0: $arguments[0];
-        $attribute = empty($arguments[1]) ? 'term' : $arguments[1];
-        $categories = $this->model->getElementsByTagName('category');
-        if ($categories->length <= $offset) {
-            $category = $categories->item($offset);
-            if ($category->hasAttribute($attribute)) {
-                return $category->getAttribute($attribute);
-            }
-        }
-        return false;
-    }
-
-    /**
-     * This element must be present at least once with rel="feed". This element may be 
-     * present any number of further times so long as there is no clash. If no 'rel' is 
-     * present and we're asked for one, we follow the example of the Universal Feed
-     * Parser and presume 'alternate'.
-     *
-     * @param    int    $offset    the position of the link within the container
-     * @param    string    $attribute    the attribute name required
-     * @param    array     an array of attributes to search by
-     * @return    string    the value of the attribute
-     */
-    function getLink($offset = 0, $attribute = 'href', $params = false)
-    {
-        if (is_array($params) and !empty($params)) {
-            $terms = array();
-            $alt_predicate = '';
-            $other_predicate = '';
-
-            foreach ($params as $key => $value) {
-                if ($key == 'rel' && $value == 'alternate') {
-                    $alt_predicate = '[not(@rel) or @rel="alternate"]';
-                } else {
-                    $terms[] = "@$key='$value'";
-                }
-            }
-            if (!empty($terms)) {
-                $other_predicate = '[' . join(' and ', $terms) . ']';
-            }
-            $query =  $this->xpathPrefix . 'atom:link' . $alt_predicate . $other_predicate;
-            $links = $this->xpath->query($query);
-        } else {
-            $links = $this->model->getElementsByTagName('link');
-        }
-        if ($links->length > $offset) {
-            if ($links->item($offset)->hasAttribute($attribute)) {
-                $value = $links->item($offset)->getAttribute($attribute);
-                if ($attribute == 'href') {
-                    $value = $this->addBase($value, $links->item($offset));
-                }
-                return $value;
-            } else if ($attribute == 'rel') {
-                return 'alternate';
-            }
-        }
-        return false;
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/AtomElement.php b/plugins/FeedSub/extlib/XML/Feed/Parser/AtomElement.php
deleted file mode 100755 (executable)
index 063ecb6..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * AtomElement class for XML_Feed_Parser package
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: AtomElement.php,v 1.19 2007/03/26 12:43:11 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class provides support for atom entries. It will usually be called by
- * XML_Feed_Parser_Atom with which it shares many methods.
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_AtomElement extends XML_Feed_Parser_Atom
-{
-    /**
-     * This will be a reference to the parent object for when we want
-     * to use a 'fallback' rule 
-     * @var XML_Feed_Parser_Atom
-     */
-    protected $parent;
-
-    /**
-     * When performing XPath queries we will use this prefix 
-     * @var string
-     */
-    private $xpathPrefix = '';
-    
-    /**
-     * xml:base values inherited by the element 
-     * @var string
-     */
-    protected $xmlBase;
-
-    /**
-     * Here we provide a few mappings for those very special circumstances in
-     * which it makes sense to map back to the RSS2 spec or to manage other
-     * compatibilities (eg. with the Univeral Feed Parser). Key is the other version's
-     * name for the command, value is an array consisting of the equivalent in our atom 
-     * api and any attributes needed to make the mapping.
-     * @var array
-     */
-    protected $compatMap = array(
-        'guid' => array('id'),
-        'links' => array('link'),
-        'tags' => array('category'),
-        'contributors' => array('contributor'));
-        
-    /**
-     * Our specific element map 
-     * @var array
-     */
-    protected $map = array(
-        'author' => array('Person', 'fallback'),
-        'contributor' => array('Person'),
-        'id' => array('Text', 'fail'),
-        'published' => array('Date'),
-        'updated' => array('Date', 'fail'),
-        'title' => array('Text', 'fail'),
-        'rights' => array('Text', 'fallback'),
-        'summary' => array('Text'),
-        'content' => array('Content'),
-        'link' => array('Link'),
-        'enclosure' => array('Enclosure'),
-        'category' => array('Category'));
-
-    /**
-     * Store useful information for later.
-     *
-     * @param   DOMElement  $element - this item as a DOM element
-     * @param   XML_Feed_Parser_Atom    $parent - the feed of which this is a member
-     */
-    function __construct(DOMElement $element, $parent, $xmlBase = '')
-    {
-        $this->model = $element;
-        $this->parent = $parent;
-        $this->xmlBase = $xmlBase;
-        $this->xpathPrefix = "//atom:entry[atom:id='" . $this->id . "']/";
-        $this->xpath = $this->parent->xpath;
-    }
-
-    /**
-     * Provides access to specific aspects of the author data for an atom entry
-     *
-     * Author data at the entry level is more complex than at the feed level.
-     * If atom:author is not present for the entry we need to look for it in
-     * an atom:source child of the atom:entry. If it's not there either, then
-     * we look to the parent for data.
-     *
-     * @param   array
-     * @return  string
-     */
-    function getAuthor($arguments)
-    {
-        /* Find out which part of the author data we're looking for */
-        if (isset($arguments['param'])) {
-            $parameter = $arguments['param'];
-        } else {
-            $parameter = 'name';
-        }
-        
-        $test = $this->model->getElementsByTagName('author');
-        if ($test->length > 0) {
-            $item = $test->item(0);
-            return $item->getElementsByTagName($parameter)->item(0)->nodeValue;
-        }
-        
-        $source = $this->model->getElementsByTagName('source');
-        if ($source->length > 0) {
-            $test = $this->model->getElementsByTagName('author');
-            if ($test->length > 0) {
-                $item = $test->item(0);
-                return $item->getElementsByTagName($parameter)->item(0)->nodeValue;
-            }
-        }
-        return $this->parent->getAuthor($arguments);
-    }
-
-    /**
-     * Returns the content of the content element or info on a specific attribute
-     *
-     * This element may or may not be present. It cannot be present more than
-     * once. It may have a 'src' attribute, in which case there's no content
-     * If not present, then the entry must have link with rel="alternate".
-     * If there is content we return it, if not and there's a 'src' attribute
-     * we return the value of that instead. The method can take an 'attribute'
-     * argument, in which case we return the value of that attribute if present.
-     * eg. $item->content("type") will return the type of the content. It is
-     * recommended that all users check the type before getting the content to
-     * ensure that their script is capable of handling the type of returned data.
-     * (data carried in the content element can be either 'text', 'html', 'xhtml', 
-     * or any standard MIME type).
-     *
-     * @return  string|false
-     */
-    protected function getContent($method, $arguments = array())
-    {
-        $attribute = empty($arguments[0]) ? false : $arguments[0];
-        $tags = $this->model->getElementsByTagName('content');
-
-        if ($tags->length == 0) {
-            return false;
-        }
-
-        $content = $tags->item(0);
-
-        if (! $content->hasAttribute('type')) {
-            $content->setAttribute('type', 'text');
-        }
-        if (! empty($attribute)) {
-            return $content->getAttribute($attribute);
-        }
-
-        $type = $content->getAttribute('type');
-
-        if (! empty($attribute)) {
-            if ($content->hasAttribute($attribute))
-            {
-                return $content->getAttribute($attribute);
-            }
-            return false;
-        }
-
-        if ($content->hasAttribute('src')) {
-            return $content->getAttribute('src');
-        }
-
-        return $this->parseTextConstruct($content);
-     }
-
-    /**
-     * For compatibility, this method provides a mapping to access enclosures.
-     *
-     * The Atom spec doesn't provide for an enclosure element, but it is
-     * generally supported using the link element with rel='enclosure'.
-     *
-     * @param   string  $method - for compatibility with our __call usage
-     * @param   array   $arguments - for compatibility with our __call usage
-     * @return  array|false
-     */
-    function getEnclosure($method, $arguments = array())
-    {
-        $offset = isset($arguments[0]) ? $arguments[0] : 0;
-        $query = "//atom:entry[atom:id='" . $this->getText('id', false) . 
-            "']/atom:link[@rel='enclosure']";
-
-        $encs = $this->parent->xpath->query($query);
-        if ($encs->length > $offset) {
-            try {
-                if (! $encs->item($offset)->hasAttribute('href')) {
-                    return false;
-                }
-                $attrs = $encs->item($offset)->attributes;
-                $length = $encs->item($offset)->hasAttribute('length') ? 
-                    $encs->item($offset)->getAttribute('length') : false;
-                return array(
-                    'url' => $attrs->getNamedItem('href')->value,
-                    'type' => $attrs->getNamedItem('type')->value,
-                    'length' => $length);
-            } catch (Exception $e) {
-                return false;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Get details of this entry's source, if available/relevant
-     *
-     * Where an atom:entry is taken from another feed then the aggregator
-     * is supposed to include an atom:source element which replicates at least
-     * the atom:id, atom:title, and atom:updated metadata from the original
-     * feed. Atom:source therefore has a very similar structure to atom:feed
-     * and if we find it we will return it as an XML_Feed_Parser_Atom object.
-     *
-     * @return  XML_Feed_Parser_Atom|false
-     */
-    function getSource()
-    {
-        $test = $this->model->getElementsByTagName('source');
-        if ($test->length == 0) {
-            return false;
-        }
-        $source = new XML_Feed_Parser_Atom($test->item(0));
-    }
-
-    /**
-     * Get the entry as an XML string
-     *
-     * Return an XML serialization of the feed, should it be required. Most 
-     * users however, will already have a serialization that they used when 
-     * instantiating the object.
-     *
-     * @return    string    XML serialization of element
-     */    
-    function __toString()
-    {
-        $simple = simplexml_import_dom($this->model);
-        return $simple->asXML();
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Exception.php b/plugins/FeedSub/extlib/XML/Feed/Parser/Exception.php
deleted file mode 100755 (executable)
index 1e76e3f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Keeps the exception class for XML_Feed_Parser.
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL
- * @version    CVS: $Id: Exception.php,v 1.3 2005/11/07 01:52:35 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-/**
- * We are extending PEAR_Exception
- */
-require_once 'PEAR/Exception.php';
-
-/**
- * XML_Feed_Parser_Exception is a simple extension of PEAR_Exception, existing
- * to help with identification of the source of exceptions.
- *
- * @author  James Stewart <james@jystewart.net>
- * @version Release: 1.0.3
- * @package XML_Feed_Parser
- */ 
-class XML_Feed_Parser_Exception extends PEAR_Exception
-{
-
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09.php
deleted file mode 100755 (executable)
index 07f38f9..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS0.9 class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS09.php,v 1.5 2006/07/26 21:18:46 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class handles RSS0.9 feeds.
- * 
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- * @todo    Find a Relax NG URI we can use
- */
-class XML_Feed_Parser_RSS09 extends XML_Feed_Parser_Type
-{
-    /**
-     * The URI of the RelaxNG schema used to (optionally) validate the feed 
-     * @var string
-     */
-    private $relax = '';
-
-    /**
-     * We're likely to use XPath, so let's keep it global
-     * @var DOMXPath
-     */
-    protected $xpath;
-
-    /**
-     * The feed type we are parsing 
-     * @var string
-     */
-    public $version = 'RSS 0.9';
-
-    /**
-     * The class used to represent individual items 
-     * @var string
-     */
-    protected $itemClass = 'XML_Feed_Parser_RSS09Element';
-    
-    /**
-     * The element containing entries 
-     * @var string
-     */
-    protected $itemElement = 'item';
-
-    /**
-     * Here we map those elements we're not going to handle individually
-     * to the constructs they are. The optional second parameter in the array
-     * tells the parser whether to 'fall back' (not apt. at the feed level) or
-     * fail if the element is missing. If the parameter is not set, the function
-     * will simply return false and leave it to the client to decide what to do.
-     * @var array
-     */
-    protected $map = array(
-        'title' => array('Text'),
-        'link' => array('Text'),
-        'description' => array('Text'),
-        'image' => array('Image'),
-        'textinput' => array('TextInput'));
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS2.
-     * @var array
-     */
-    protected $compatMap = array(
-        'title' => array('title'),
-        'link' => array('link'),
-        'subtitle' => array('description'));
-
-    /**
-     * We will be working with multiple namespaces and it is useful to 
-     * keep them together 
-     * @var array
-     */
-    protected $namespaces = array(
-        'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
-
-    /**
-     * Our constructor does nothing more than its parent.
-     * 
-     * @todo    RelaxNG validation
-     * @param    DOMDocument    $xml    A DOM object representing the feed
-     * @param    bool (optional) $string    Whether or not to validate this feed
-     */
-    function __construct(DOMDocument $model, $strict = false)
-    {
-        $this->model = $model;
-
-        $this->xpath = new DOMXPath($model);
-        foreach ($this->namespaces as $key => $value) {
-            $this->xpath->registerNamespace($key, $value);
-        }            
-        $this->numberEntries = $this->count('item');
-    }
-
-    /**
-     * Included for compatibility -- will not work with RSS 0.9
-     *
-     * This is not something that will work with RSS0.9 as it does not have
-     * clear restrictions on the global uniqueness of IDs.
-     *
-     * @param    string    $id    any valid ID.
-     * @return    false
-     */
-    function getEntryById($id)
-    {
-        return false;        
-    }
-
-    /**
-     * Get details of the image associated with the feed.
-     *
-     * @return  array|false an array simply containing the child elements
-     */
-    protected function getImage()
-    {
-        $images = $this->model->getElementsByTagName('image');
-        if ($images->length > 0) {
-            $image = $images->item(0);
-            $details = array();
-            if ($image->hasChildNodes()) {
-                $details = array(
-                    'title' => $image->getElementsByTagName('title')->item(0)->value,
-                    'link' => $image->getElementsByTagName('link')->item(0)->value,
-                    'url' => $image->getElementsByTagName('url')->item(0)->value);
-            } else {
-                $details = array('title' => false,
-                    'link' => false,
-                    'url' => $image->attributes->getNamedItem('resource')->nodeValue);
-            }
-            $details = array_merge($details, 
-                array('description' => false, 'height' => false, 'width' => false));
-            if (! empty($details)) {
-                return $details;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * The textinput element is little used, but in the interests of
-     * completeness we will support it.
-     *
-     * @return  array|false
-     */
-    protected function getTextInput()
-    {
-        $inputs = $this->model->getElementsByTagName('textinput');
-        if ($inputs->length > 0) {
-            $input = $inputs->item(0);
-            $results = array();
-            $results['title'] = isset(
-                $input->getElementsByTagName('title')->item(0)->value) ? 
-                $input->getElementsByTagName('title')->item(0)->value : null;
-            $results['description'] = isset(
-                $input->getElementsByTagName('description')->item(0)->value) ? 
-                $input->getElementsByTagName('description')->item(0)->value : null;
-            $results['name'] = isset(
-                $input->getElementsByTagName('name')->item(0)->value) ? 
-                $input->getElementsByTagName('name')->item(0)->value : null;
-            $results['link'] = isset(
-                   $input->getElementsByTagName('link')->item(0)->value) ? 
-                   $input->getElementsByTagName('link')->item(0)->value : null;
-            if (empty($results['link']) && 
-                $input->attributes->getNamedItem('resource')) {
-                $results['link'] = $input->attributes->getNamedItem('resource')->nodeValue;
-            }
-            if (! empty($results)) {
-                return $results;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Get details of a link from the feed.
-     *
-     * In RSS1 a link is a text element but in order to ensure that we resolve
-     * URLs properly we have a special function for them.
-     *
-     * @return  string
-     */
-    function getLink($offset = 0, $attribute = 'href', $params = false)
-    {
-        $links = $this->model->getElementsByTagName('link');
-        if ($links->length <= $offset) {
-            return false;
-        }
-        $link = $links->item($offset);
-        return $this->addBase($link->nodeValue, $link);
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09Element.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS09Element.php
deleted file mode 100755 (executable)
index d41f36e..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS0.9 Element class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS09Element.php,v 1.4 2006/06/30 17:41:56 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/*
- * This class provides support for RSS 0.9 entries. It will usually be called by
- * XML_Feed_Parser_RSS09 with which it shares many methods.
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_RSS09Element extends XML_Feed_Parser_RSS09
-{
-    /**
-     * This will be a reference to the parent object for when we want
-     * to use a 'fallback' rule 
-     * @var XML_Feed_Parser_RSS09
-     */
-    protected $parent;
-
-    /**
-     * Our specific element map 
-     * @var array
-     */
-    protected $map = array(
-        'title' => array('Text'),
-        'link' => array('Link'));
-
-    /**
-     * Store useful information for later.
-     *
-     * @param   DOMElement  $element - this item as a DOM element
-     * @param   XML_Feed_Parser_RSS1 $parent - the feed of which this is a member
-     */
-    function __construct(DOMElement $element, $parent, $xmlBase = '')
-    {
-        $this->model = $element;
-        $this->parent = $parent;
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1.php
deleted file mode 100755 (executable)
index 60c9938..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS1 class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS1.php,v 1.10 2006/07/27 13:52:05 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class handles RSS1.0 feeds.
- * 
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- * @todo    Find a Relax NG URI we can use
- */
-class XML_Feed_Parser_RSS1 extends XML_Feed_Parser_Type
-{
-    /**
-     * The URI of the RelaxNG schema used to (optionally) validate the feed 
-     * @var string
-     */
-    private $relax = 'rss10.rnc';
-
-    /**
-     * We're likely to use XPath, so let's keep it global
-     * @var DOMXPath
-     */
-    protected $xpath;
-
-    /**
-     * The feed type we are parsing 
-     * @var string
-     */
-    public $version = 'RSS 1.0';
-
-    /**
-     * The class used to represent individual items 
-     * @var string
-     */
-    protected $itemClass = 'XML_Feed_Parser_RSS1Element';
-    
-    /**
-     * The element containing entries 
-     * @var string
-     */
-    protected $itemElement = 'item';
-
-    /**
-     * Here we map those elements we're not going to handle individually
-     * to the constructs they are. The optional second parameter in the array
-     * tells the parser whether to 'fall back' (not apt. at the feed level) or
-     * fail if the element is missing. If the parameter is not set, the function
-     * will simply return false and leave it to the client to decide what to do.
-     * @var array
-     */
-    protected $map = array(
-        'title' => array('Text'),
-        'link' => array('Text'),
-        'description' => array('Text'),
-        'image' => array('Image'),
-        'textinput' => array('TextInput'),
-        'updatePeriod' => array('Text'),
-        'updateFrequency' => array('Text'),
-        'updateBase' => array('Date'),
-        'rights' => array('Text'), # dc:rights
-        'description' => array('Text'), # dc:description
-        'creator' => array('Text'), # dc:creator
-        'publisher' => array('Text'), # dc:publisher
-        'contributor' => array('Text'), # dc:contributor
-        'date' => array('Date') # dc:contributor
-        );
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS2.
-     * @var array
-     */
-    protected $compatMap = array(
-        'title' => array('title'),
-        'link' => array('link'),
-        'subtitle' => array('description'),
-        'author' => array('creator'),
-        'updated' => array('date'));
-
-    /**
-     * We will be working with multiple namespaces and it is useful to 
-     * keep them together 
-     * @var array
-     */
-    protected $namespaces = array(
-        'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
-        'rss' => 'http://purl.org/rss/1.0/',
-        'dc' => 'http://purl.org/rss/1.0/modules/dc/',
-        'content' => 'http://purl.org/rss/1.0/modules/content/',
-        'sy' => 'http://web.resource.org/rss/1.0/modules/syndication/');
-
-    /**
-     * Our constructor does nothing more than its parent.
-     * 
-     * @param    DOMDocument    $xml    A DOM object representing the feed
-     * @param    bool (optional) $string    Whether or not to validate this feed
-     */
-    function __construct(DOMDocument $model, $strict = false)
-    {
-        $this->model = $model;
-        if ($strict) {
-            $validate = $this->model->relaxNGValidate(self::getSchemaDir . 
-                DIRECTORY_SEPARATOR . $this->relax);
-            if (! $validate) {
-                throw new XML_Feed_Parser_Exception('Failed required validation');
-            }
-        }
-
-        $this->xpath = new DOMXPath($model);
-        foreach ($this->namespaces as $key => $value) {
-            $this->xpath->registerNamespace($key, $value);
-        }
-        $this->numberEntries = $this->count('item');
-    }
-
-    /**
-     * Allows retrieval of an entry by ID where the rdf:about attribute is used
-     *
-     * This is not really something that will work with RSS1 as it does not have
-     * clear restrictions on the global uniqueness of IDs. We will employ the
-     * _very_ hit and miss method of selecting entries based on the rdf:about
-     * attribute. If DOMXPath::evaluate is available, we also use that to store 
-     * a reference to the entry in the array used by getEntryByOffset so that 
-     * method does not have to seek out the entry if it's requested that way.
-     *
-     * @param    string    $id    any valid ID.
-     * @return    XML_Feed_Parser_RSS1Element
-     */
-    function getEntryById($id)
-    {
-        if (isset($this->idMappings[$id])) {
-            return $this->entries[$this->idMappings[$id]];
-        }
-
-        $entries = $this->xpath->query("//rss:item[@rdf:about='$id']");
-        if ($entries->length > 0) {
-            $classname = $this->itemClass;
-            $entry = new $classname($entries->item(0), $this);
-            if (in_array('evaluate', get_class_methods($this->xpath))) {
-                $offset = $this->xpath->evaluate("count(preceding-sibling::rss:item)", $entries->item(0));
-                $this->entries[$offset] = $entry;
-            }
-            $this->idMappings[$id] = $entry;
-            return $entry;
-        }
-        return false;
-    }
-
-    /**
-     * Get details of the image associated with the feed.
-     *
-     * @return  array|false an array simply containing the child elements
-     */
-    protected function getImage()
-    {
-        $images = $this->model->getElementsByTagName('image');
-        if ($images->length > 0) {
-            $image = $images->item(0);
-            $details = array();
-            if ($image->hasChildNodes()) {
-                $details = array(
-                    'title' => $image->getElementsByTagName('title')->item(0)->value,
-                    'link' => $image->getElementsByTagName('link')->item(0)->value,
-                    'url' => $image->getElementsByTagName('url')->item(0)->value);
-            } else {
-                $details = array('title' => false,
-                    'link' => false,
-                    'url' => $image->attributes->getNamedItem('resource')->nodeValue);
-            }
-            $details = array_merge($details, array('description' => false, 'height' => false, 'width' => false));
-            if (! empty($details)) {
-                return $details;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * The textinput element is little used, but in the interests of
-     * completeness we will support it.
-     *
-     * @return  array|false
-     */
-    protected function getTextInput()
-    {
-        $inputs = $this->model->getElementsByTagName('textinput');
-        if ($inputs->length > 0) {
-            $input = $inputs->item(0);
-            $results = array();
-            $results['title'] = isset(
-                $input->getElementsByTagName('title')->item(0)->value) ? 
-                $input->getElementsByTagName('title')->item(0)->value : null;
-            $results['description'] = isset(
-                $input->getElementsByTagName('description')->item(0)->value) ? 
-                $input->getElementsByTagName('description')->item(0)->value : null;
-            $results['name'] = isset(
-                $input->getElementsByTagName('name')->item(0)->value) ? 
-                $input->getElementsByTagName('name')->item(0)->value : null;
-            $results['link'] = isset(
-                   $input->getElementsByTagName('link')->item(0)->value) ? 
-                   $input->getElementsByTagName('link')->item(0)->value : null;
-            if (empty($results['link']) and 
-                $input->attributes->getNamedItem('resource')) {
-                $results['link'] = 
-                    $input->attributes->getNamedItem('resource')->nodeValue;
-            }
-            if (! empty($results)) {
-                return $results;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Employs various techniques to identify the author
-     *
-     * Dublin Core provides the dc:creator, dc:contributor, and dc:publisher
-     * elements for defining authorship in RSS1. We will try each of those in
-     * turn in order to simulate the atom author element and will return it
-     * as text.
-     *
-     * @return  array|false
-     */
-    function getAuthor()
-    {
-        $options = array('creator', 'contributor', 'publisher');
-        foreach ($options as $element) {
-            $test = $this->model->getElementsByTagName($element);
-            if ($test->length > 0) {
-                return $test->item(0)->value;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Retrieve a link
-     * 
-     * In RSS1 a link is a text element but in order to ensure that we resolve
-     * URLs properly we have a special function for them.
-     *
-     * @return  string
-     */
-    function getLink($offset = 0, $attribute = 'href', $params = false)
-    {
-        $links = $this->model->getElementsByTagName('link');
-        if ($links->length <= $offset) {
-            return false;
-        }
-        $link = $links->item($offset);
-        return $this->addBase($link->nodeValue, $link);
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11.php
deleted file mode 100755 (executable)
index 3cd1ef1..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS1.1 class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS11.php,v 1.6 2006/07/27 13:52:05 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class handles RSS1.1 feeds. RSS1.1 is documented at:
- * http://inamidst.com/rss1.1/
- * 
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- * @todo    Support for RDF:List
- * @todo    Ensure xml:lang is accessible to users
- */
-class XML_Feed_Parser_RSS11 extends XML_Feed_Parser_Type
-{
-    /**
-     * The URI of the RelaxNG schema used to (optionally) validate the feed 
-     * @var string
-     */
-    private $relax = 'rss11.rnc';
-
-    /**
-     * We're likely to use XPath, so let's keep it global
-     * @var DOMXPath
-     */
-    protected $xpath;
-
-    /**
-     * The feed type we are parsing 
-     * @var string
-     */
-    public $version = 'RSS 1.0';
-
-    /**
-     * The class used to represent individual items 
-     * @var string
-     */
-    protected $itemClass = 'XML_Feed_Parser_RSS1Element';
-    
-    /**
-     * The element containing entries 
-     * @var string
-     */
-    protected $itemElement = 'item';
-
-    /**
-     * Here we map those elements we're not going to handle individually
-     * to the constructs they are. The optional second parameter in the array
-     * tells the parser whether to 'fall back' (not apt. at the feed level) or
-     * fail if the element is missing. If the parameter is not set, the function
-     * will simply return false and leave it to the client to decide what to do.
-     * @var array
-     */
-    protected $map = array(
-        'title' => array('Text'),
-        'link' => array('Text'),
-        'description' => array('Text'),
-        'image' => array('Image'),
-        'updatePeriod' => array('Text'),
-        'updateFrequency' => array('Text'),
-        'updateBase' => array('Date'),
-        'rights' => array('Text'), # dc:rights
-        'description' => array('Text'), # dc:description
-        'creator' => array('Text'), # dc:creator
-        'publisher' => array('Text'), # dc:publisher
-        'contributor' => array('Text'), # dc:contributor
-        'date' => array('Date') # dc:contributor
-        );
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS2.
-     * @var array
-     */
-    protected $compatMap = array(
-        'title' => array('title'),
-        'link' => array('link'),
-        'subtitle' => array('description'),
-        'author' => array('creator'),
-        'updated' => array('date'));
-
-    /**
-     * We will be working with multiple namespaces and it is useful to 
-     * keep them together. We will retain support for some common RSS1.0 modules
-     * @var array
-     */
-    protected $namespaces = array(
-        'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
-        'rss' => 'http://purl.org/net/rss1.1#',
-        'dc' => 'http://purl.org/rss/1.0/modules/dc/',
-        'content' => 'http://purl.org/rss/1.0/modules/content/',
-        'sy' => 'http://web.resource.org/rss/1.0/modules/syndication/');
-
-    /**
-     * Our constructor does nothing more than its parent.
-     * 
-     * @param    DOMDocument    $xml    A DOM object representing the feed
-     * @param    bool (optional) $string    Whether or not to validate this feed
-     */
-    function __construct(DOMDocument $model, $strict = false)
-    {
-        $this->model = $model;
-
-        if ($strict) {
-            $validate = $this->model->relaxNGValidate(self::getSchemaDir . 
-                DIRECTORY_SEPARATOR . $this->relax);
-            if (! $validate) {
-                throw new XML_Feed_Parser_Exception('Failed required validation');
-            }
-        }
-
-        $this->xpath = new DOMXPath($model);
-        foreach ($this->namespaces as $key => $value) {
-            $this->xpath->registerNamespace($key, $value);
-        }            
-        $this->numberEntries = $this->count('item');
-    }
-
-    /**
-     * Attempts to identify an element by ID given by the rdf:about attribute
-     *
-     * This is not really something that will work with RSS1.1 as it does not have
-     * clear restrictions on the global uniqueness of IDs. We will employ the
-     * _very_ hit and miss method of selecting entries based on the rdf:about
-     * attribute. Please note that this is even more hit and miss with RSS1.1 than
-     * with RSS1.0 since RSS1.1 does not require the rdf:about attribute for items.
-     *
-     * @param    string    $id    any valid ID.
-     * @return    XML_Feed_Parser_RSS1Element
-     */
-    function getEntryById($id)
-    {
-        if (isset($this->idMappings[$id])) {
-            return $this->entries[$this->idMappings[$id]];
-        }
-
-        $entries = $this->xpath->query("//rss:item[@rdf:about='$id']");
-        if ($entries->length > 0) {
-            $classname = $this->itemClass;
-            $entry = new $classname($entries->item(0), $this);
-            return $entry;
-        }
-        return false;
-    }
-
-    /**
-     * Get details of the image associated with the feed.
-     *
-     * @return  array|false an array simply containing the child elements
-     */
-    protected function getImage()
-    {
-        $images = $this->model->getElementsByTagName('image');
-        if ($images->length > 0) {
-            $image = $images->item(0);
-            $details = array();
-            if ($image->hasChildNodes()) {
-                $details = array(
-                    'title' => $image->getElementsByTagName('title')->item(0)->value,
-                    'url' => $image->getElementsByTagName('url')->item(0)->value);
-                if ($image->getElementsByTagName('link')->length > 0) {
-                    $details['link'] = 
-                        $image->getElementsByTagName('link')->item(0)->value;
-                }
-            } else {
-                $details = array('title' => false,
-                    'link' => false,
-                    'url' => $image->attributes->getNamedItem('resource')->nodeValue);
-            }
-            $details = array_merge($details, 
-                array('description' => false, 'height' => false, 'width' => false));
-            if (! empty($details)) {
-                return $details;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * The textinput element is little used, but in the interests of
-     * completeness we will support it.
-     *
-     * @return  array|false
-     */
-    protected function getTextInput()
-    {
-        $inputs = $this->model->getElementsByTagName('textinput');
-        if ($inputs->length > 0) {
-            $input = $inputs->item(0);
-            $results = array();
-            $results['title'] = isset(
-                $input->getElementsByTagName('title')->item(0)->value) ? 
-                $input->getElementsByTagName('title')->item(0)->value : null;
-            $results['description'] = isset(
-                $input->getElementsByTagName('description')->item(0)->value) ? 
-                $input->getElementsByTagName('description')->item(0)->value : null;
-            $results['name'] = isset(
-                $input->getElementsByTagName('name')->item(0)->value) ? 
-                $input->getElementsByTagName('name')->item(0)->value : null;
-            $results['link'] = isset(
-                   $input->getElementsByTagName('link')->item(0)->value) ? 
-                   $input->getElementsByTagName('link')->item(0)->value : null;
-            if (empty($results['link']) and 
-                $input->attributes->getNamedItem('resource')) {
-                $results['link'] = $input->attributes->getNamedItem('resource')->nodeValue;
-            }
-            if (! empty($results)) {
-                return $results;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Attempts to discern authorship
-     *
-     * Dublin Core provides the dc:creator, dc:contributor, and dc:publisher
-     * elements for defining authorship in RSS1. We will try each of those in
-     * turn in order to simulate the atom author element and will return it
-     * as text.
-     *
-     * @return  array|false
-     */
-    function getAuthor()
-    {
-        $options = array('creator', 'contributor', 'publisher');
-        foreach ($options as $element) {
-            $test = $this->model->getElementsByTagName($element);
-            if ($test->length > 0) {
-                return $test->item(0)->value;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Retrieve a link
-     *
-     * In RSS1 a link is a text element but in order to ensure that we resolve
-     * URLs properly we have a special function for them.
-     *
-     * @return  string
-     */
-    function getLink($offset = 0, $attribute = 'href', $params = false)
-    {
-        $links = $this->model->getElementsByTagName('link');
-        if ($links->length <= $offset) {
-            return false;
-        }
-        $link = $links->item($offset);
-        return $this->addBase($link->nodeValue, $link);
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11Element.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS11Element.php
deleted file mode 100755 (executable)
index 75918be..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS1 Element class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS11Element.php,v 1.4 2006/06/30 17:41:56 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/*
- * This class provides support for RSS 1.1 entries. It will usually be called by
- * XML_Feed_Parser_RSS11 with which it shares many methods.
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_RSS11Element extends XML_Feed_Parser_RSS11
-{
-    /**
-     * This will be a reference to the parent object for when we want
-     * to use a 'fallback' rule 
-     * @var XML_Feed_Parser_RSS1
-     */
-    protected $parent;
-
-    /**
-     * Our specific element map 
-     * @var array
-     */
-    protected $map = array(
-        'id' => array('Id'),
-        'title' => array('Text'),
-        'link' => array('Link'),
-        'description' => array('Text'), # or dc:description
-        'category' => array('Category'),
-        'rights' => array('Text'), # dc:rights
-        'creator' => array('Text'), # dc:creator
-        'publisher' => array('Text'), # dc:publisher
-        'contributor' => array('Text'), # dc:contributor
-        'date' => array('Date'), # dc:date
-        'content' => array('Content')
-        );
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS1.
-     * @var array
-     */
-    protected $compatMap = array(
-        'content' => array('content'),
-        'updated' => array('lastBuildDate'),
-        'published' => array('pubdate'),
-        'subtitle' => array('description'),
-        'updated' => array('date'),
-        'author' => array('creator'),
-        'contributor' => array('contributor')
-    );
-
-    /**
-     * Store useful information for later.
-     *
-     * @param   DOMElement  $element - this item as a DOM element
-     * @param   XML_Feed_Parser_RSS1 $parent - the feed of which this is a member
-     */
-    function __construct(DOMElement $element, $parent, $xmlBase = '')
-    {
-        $this->model = $element;
-        $this->parent = $parent;
-    }
-
-    /**
-     * If an rdf:about attribute is specified, return that as an ID
-     *
-     * There is no established way of showing an ID for an RSS1 entry. We will 
-     * simulate it using the rdf:about attribute of the entry element. This cannot
-     * be relied upon for unique IDs but may prove useful.
-     *
-     * @return  string|false
-     */
-    function getId()
-    {
-        if ($this->model->attributes->getNamedItem('about')) {
-            return $this->model->attributes->getNamedItem('about')->nodeValue;
-        }
-        return false;
-    }
-
-    /**
-     * Return the entry's content
-     *
-     * The official way to include full content in an RSS1 entry is to use
-     * the content module's element 'encoded'. Often, however, the 'description'
-     * element is used instead. We will offer that as a fallback.
-     *
-     * @return  string|false
-     */
-    function getContent()
-    {
-        $options = array('encoded', 'description');
-        foreach ($options as $element) {
-            $test = $this->model->getElementsByTagName($element);
-            if ($test->length == 0) {
-                continue;
-            }
-            if ($test->item(0)->hasChildNodes()) {
-                $value = '';
-                foreach ($test->item(0)->childNodes as $child) {
-                    if ($child instanceof DOMText) {
-                        $value .= $child->nodeValue;
-                    } else {
-                        $simple = simplexml_import_dom($child);
-                        $value .= $simple->asXML();
-                    }
-                }
-                return $value;
-            } else if ($test->length > 0) {
-                return $test->item(0)->nodeValue;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * How RSS1.1 should support for enclosures is not clear. For now we will return
-     * false.
-     *
-     * @return  false
-     */
-    function getEnclosure()
-    {
-        return false;
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1Element.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS1Element.php
deleted file mode 100755 (executable)
index 8e36d5a..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * RSS1 Element class for XML_Feed_Parser
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS1Element.php,v 1.6 2006/06/30 17:41:56 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/*
- * This class provides support for RSS 1.0 entries. It will usually be called by
- * XML_Feed_Parser_RSS1 with which it shares many methods.
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_RSS1Element extends XML_Feed_Parser_RSS1
-{
-    /**
-     * This will be a reference to the parent object for when we want
-     * to use a 'fallback' rule 
-     * @var XML_Feed_Parser_RSS1
-     */
-    protected $parent;
-
-    /**
-     * Our specific element map 
-     * @var array
-     */
-    protected $map = array(
-        'id' => array('Id'),
-        'title' => array('Text'),
-        'link' => array('Link'),
-        'description' => array('Text'), # or dc:description
-        'category' => array('Category'),
-        'rights' => array('Text'), # dc:rights
-        'creator' => array('Text'), # dc:creator
-        'publisher' => array('Text'), # dc:publisher
-        'contributor' => array('Text'), # dc:contributor
-        'date' => array('Date'), # dc:date
-        'content' => array('Content')
-        );
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS1.
-     * @var array
-     */
-    protected $compatMap = array(
-        'content' => array('content'),
-        'updated' => array('lastBuildDate'),
-        'published' => array('pubdate'),
-        'subtitle' => array('description'),
-        'updated' => array('date'),
-        'author' => array('creator'),
-        'contributor' => array('contributor')
-    );
-
-    /**
-     * Store useful information for later.
-     *
-     * @param   DOMElement  $element - this item as a DOM element
-     * @param   XML_Feed_Parser_RSS1 $parent - the feed of which this is a member
-     */
-    function __construct(DOMElement $element, $parent, $xmlBase = '')
-    {
-        $this->model = $element;
-        $this->parent = $parent;
-    }
-
-    /**
-     * If an rdf:about attribute is specified, return it as an ID
-     *
-     * There is no established way of showing an ID for an RSS1 entry. We will 
-     * simulate it using the rdf:about attribute of the entry element. This cannot
-     * be relied upon for unique IDs but may prove useful.
-     *
-     * @return  string|false
-     */
-    function getId()
-    {
-        if ($this->model->attributes->getNamedItem('about')) {
-            return $this->model->attributes->getNamedItem('about')->nodeValue;
-        }
-        return false;
-    }
-
-    /**
-     * How RSS1 should support for enclosures is not clear. For now we will return
-     * false.
-     *
-     * @return  false
-     */
-    function getEnclosure()
-    {
-        return false;
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2.php
deleted file mode 100644 (file)
index 0936bd2..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Class representing feed-level data for an RSS2 feed
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS2.php,v 1.12 2008/03/08 18:16:45 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class handles RSS2 feeds.
- * 
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_RSS2 extends XML_Feed_Parser_Type
-{
-    /**
-     * The URI of the RelaxNG schema used to (optionally) validate the feed
-     * @var string
-     */
-    private $relax = 'rss20.rnc';
-
-    /**
-     * We're likely to use XPath, so let's keep it global
-     * @var DOMXPath
-     */
-    protected $xpath;
-
-    /**
-     * The feed type we are parsing
-     * @var string
-     */
-    public $version = 'RSS 2.0';
-
-    /**
-     * The class used to represent individual items
-     * @var string
-     */     
-    protected $itemClass = 'XML_Feed_Parser_RSS2Element';
-    
-    /**
-     * The element containing entries 
-     * @var string
-     */
-    protected $itemElement = 'item';
-
-    /**
-     * Here we map those elements we're not going to handle individually
-     * to the constructs they are. The optional second parameter in the array
-     * tells the parser whether to 'fall back' (not apt. at the feed level) or
-     * fail if the element is missing. If the parameter is not set, the function
-     * will simply return false and leave it to the client to decide what to do.
-     * @var array
-     */
-    protected $map = array(
-        'ttl' => array('Text'),
-        'pubDate' => array('Date'),
-        'lastBuildDate' => array('Date'),
-        'title' => array('Text'),
-        'link' => array('Link'),
-        'description' => array('Text'),
-        'language' => array('Text'),
-        'copyright' => array('Text'),
-        'managingEditor' => array('Text'),
-        'webMaster' => array('Text'),
-        'category' => array('Text'),
-        'generator' => array('Text'),
-        'docs' => array('Text'),
-        'ttl' => array('Text'),
-        'image' => array('Image'),
-        'skipDays' => array('skipDays'),
-        'skipHours' => array('skipHours'));
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS2.
-     * @var array
-     */
-    protected $compatMap = array(
-        'title' => array('title'),
-        'rights' => array('copyright'),
-        'updated' => array('lastBuildDate'),
-        'subtitle' => array('description'),
-        'date' => array('pubDate'),
-        'author' => array('managingEditor'));
-
-    protected $namespaces = array(
-        'dc' => 'http://purl.org/rss/1.0/modules/dc/',
-        'content' => 'http://purl.org/rss/1.0/modules/content/');
-
-    /**
-     * Our constructor does nothing more than its parent.
-     * 
-     * @param    DOMDocument    $xml    A DOM object representing the feed
-     * @param    bool (optional) $string    Whether or not to validate this feed
-     */
-    function __construct(DOMDocument $model, $strict = false)
-    {
-        $this->model = $model;
-
-        if ($strict) {
-            if (! $this->model->relaxNGValidate($this->relax)) {
-                throw new XML_Feed_Parser_Exception('Failed required validation');
-            }
-        }
-
-        $this->xpath = new DOMXPath($this->model);
-        foreach ($this->namespaces as $key => $value) {
-            $this->xpath->registerNamespace($key, $value);
-        }
-        $this->numberEntries = $this->count('item');
-    }
-
-    /**
-     * Retrieves an entry by ID, if the ID is specified with the guid element
-     *
-     * This is not really something that will work with RSS2 as it does not have
-     * clear restrictions on the global uniqueness of IDs. But we can emulate
-     * it by allowing access based on the 'guid' element. If DOMXPath::evaluate
-     * is available, we also use that to store a reference to the entry in the array
-     * used by getEntryByOffset so that method does not have to seek out the entry
-     * if it's requested that way.
-     *
-     * @param    string    $id    any valid ID.
-     * @return    XML_Feed_Parser_RSS2Element
-     */
-    function getEntryById($id)
-    {
-        if (isset($this->idMappings[$id])) {
-            return $this->entries[$this->idMappings[$id]];
-        }
-
-        $entries = $this->xpath->query("//item[guid='$id']");
-        if ($entries->length > 0) {
-            $entry = new $this->itemElement($entries->item(0), $this);
-            if (in_array('evaluate', get_class_methods($this->xpath))) {
-                $offset = $this->xpath->evaluate("count(preceding-sibling::item)", $entries->item(0));
-                $this->entries[$offset] = $entry;
-            }
-            $this->idMappings[$id] = $entry;
-            return $entry;
-        }        
-    }
-
-    /**
-     * Get a category from the element
-     *
-     * The category element is a simple text construct which can occur any number
-     * of times. We allow access by offset or access to an array of results.
-     *
-     * @param    string    $call    for compatibility with our overloading
-     * @param   array $arguments - arg 0 is the offset, arg 1 is whether to return as array
-     * @return  string|array|false
-     */
-    function getCategory($call, $arguments = array())
-    {
-        $categories = $this->model->getElementsByTagName('category');
-        $offset = empty($arguments[0]) ? 0 : $arguments[0];
-        $array = empty($arguments[1]) ? false : true;
-        if ($categories->length <= $offset) {
-            return false;
-        }
-        if ($array) {
-            $list = array();
-            foreach ($categories as $category) {
-                array_push($list, $category->nodeValue);
-            }
-            return $list;
-        }
-        return $categories->item($offset)->nodeValue;
-    }
-
-    /**
-     * Get details of the image associated with the feed.
-     *
-     * @return  array|false an array simply containing the child elements
-     */
-    protected function getImage()
-    {
-        $images = $this->xpath->query("//image");
-        if ($images->length > 0) {
-            $image = $images->item(0);
-            $desc = $image->getElementsByTagName('description');
-            $description = $desc->length ? $desc->item(0)->nodeValue : false;
-            $heigh = $image->getElementsByTagName('height'); 
-            $height = $heigh->length ? $heigh->item(0)->nodeValue : false;
-            $widt = $image->getElementsByTagName('width'); 
-            $width = $widt->length ? $widt->item(0)->nodeValue : false;
-            return array(
-                'title' => $image->getElementsByTagName('title')->item(0)->nodeValue,
-                'link' => $image->getElementsByTagName('link')->item(0)->nodeValue,
-                'url' => $image->getElementsByTagName('url')->item(0)->nodeValue,
-                'description' => $description,
-                'height' => $height,
-                'width' => $width);
-        }
-        return false;
-    }
-
-    /**
-     * The textinput element is little used, but in the interests of
-     * completeness...
-     *
-     * @return  array|false
-     */
-    function getTextInput()
-    {
-        $inputs = $this->model->getElementsByTagName('input');
-        if ($inputs->length > 0) {
-            $input = $inputs->item(0);
-            return array(
-                'title' => $input->getElementsByTagName('title')->item(0)->value,
-                'description' => 
-                    $input->getElementsByTagName('description')->item(0)->value,
-                'name' => $input->getElementsByTagName('name')->item(0)->value,
-                'link' => $input->getElementsByTagName('link')->item(0)->value);
-        }
-        return false;
-    }
-
-    /**
-     * Utility function for getSkipDays and getSkipHours
-     *
-     * This is a general function used by both getSkipDays and getSkipHours. It simply
-     * returns an array of the values of the children of the appropriate tag.
-     *
-     * @param   string      $tagName    The tag name (getSkipDays or getSkipHours)
-     * @return  array|false
-     */
-    protected function getSkips($tagName)
-    {
-        $hours = $this->model->getElementsByTagName($tagName);
-        if ($hours->length == 0) {
-            return false;
-        }
-        $skipHours = array();
-        foreach($hours->item(0)->childNodes as $hour) {
-            if ($hour instanceof DOMElement) {
-                array_push($skipHours, $hour->nodeValue);
-            }
-        }
-        return $skipHours;
-    }
-
-    /**
-     * Retrieve skipHours data
-     *
-     * The skiphours element provides a list of hours on which this feed should
-     * not be checked. We return an array of those hours (integers, 24 hour clock)
-     *
-     * @return  array
-     */    
-    function getSkipHours()
-    {
-        return $this->getSkips('skipHours');
-    }
-
-    /**
-     * Retrieve skipDays data
-     *
-     * The skipdays element provides a list of days on which this feed should
-     * not be checked. We return an array of those days.
-     *
-     * @return  array
-     */
-    function getSkipDays()
-    {
-        return $this->getSkips('skipDays');
-    }
-
-    /**
-     * Return content of the little-used 'cloud' element
-     *
-     * The cloud element is rarely used. It is designed to provide some details
-     * of a location to update the feed.
-     *
-     * @return  array   an array of the attributes of the element
-     */
-    function getCloud()
-    {
-        $cloud = $this->model->getElementsByTagName('cloud');
-        if ($cloud->length == 0) {
-            return false;
-        }
-        $cloudData = array();
-        foreach ($cloud->item(0)->attributes as $attribute) {
-            $cloudData[$attribute->name] = $attribute->value;
-        }
-        return $cloudData;
-    }
-    
-    /**
-     * Get link URL
-     *
-     * In RSS2 a link is a text element but in order to ensure that we resolve
-     * URLs properly we have a special function for them. We maintain the 
-     * parameter used by the atom getLink method, though we only use the offset
-     * parameter.
-     *
-     * @param   int     $offset The position of the link within the feed. Starts from 0
-     * @param   string  $attribute  The attribute of the link element required
-     * @param   array   $params An array of other parameters. Not used.
-     * @return  string
-     */
-    function getLink($offset, $attribute = 'href', $params = array())
-    {
-        $xPath = new DOMXPath($this->model);
-        $links = $xPath->query('//link');
-
-        if ($links->length <= $offset) {
-            return false;
-        }
-        $link = $links->item($offset);
-        return $this->addBase($link->nodeValue, $link);
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2Element.php b/plugins/FeedSub/extlib/XML/Feed/Parser/RSS2Element.php
deleted file mode 100755 (executable)
index 6edf910..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Class representing entries in an RSS2 feed.
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: RSS2Element.php,v 1.11 2006/07/26 21:18:47 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This class provides support for RSS 2.0 entries. It will usually be 
- * called by XML_Feed_Parser_RSS2 with which it shares many methods.
- *
- * @author    James Stewart <james@jystewart.net>
- * @version    Release: 1.0.3
- * @package XML_Feed_Parser
- */
-class XML_Feed_Parser_RSS2Element extends XML_Feed_Parser_RSS2
-{
-    /**
-     * This will be a reference to the parent object for when we want
-     * to use a 'fallback' rule
-     * @var XML_Feed_Parser_RSS2
-     */
-    protected $parent;
-
-    /**
-     * Our specific element map 
-     * @var array
-     */
-    protected $map = array(
-        'title' => array('Text'),
-        'guid' => array('Guid'),
-        'description' => array('Text'),
-        'author' => array('Text'),
-        'comments' => array('Text'),
-        'enclosure' => array('Enclosure'),
-        'pubDate' => array('Date'),
-        'source' => array('Source'),
-        'link' => array('Text'),
-        'content' => array('Content'));
-
-    /**
-     * Here we map some elements to their atom equivalents. This is going to be
-     * quite tricky to pull off effectively (and some users' methods may vary)
-     * but is worth trying. The key is the atom version, the value is RSS2.
-     * @var array
-     */
-    protected $compatMap = array(
-        'id' => array('guid'),
-        'updated' => array('lastBuildDate'),
-        'published' => array('pubdate'),
-        'guidislink' => array('guid', 'ispermalink'),
-        'summary' => array('description'));
-
-    /**
-     * Store useful information for later.
-     *
-     * @param   DOMElement  $element - this item as a DOM element
-     * @param   XML_Feed_Parser_RSS2    $parent - the feed of which this is a member
-     */
-    function __construct(DOMElement $element, $parent, $xmlBase = '')
-    {
-        $this->model = $element;
-        $this->parent = $parent;
-    }
-
-    /**
-     * Get the value of the guid element, if specified
-     *
-     * guid is the closest RSS2 has to atom's ID. It is usually but not always a
-     * URI. The one attribute that RSS2 can posess is 'ispermalink' which specifies
-     * whether the guid is itself dereferencable. Use of guid is not obligatory,
-     * but is advisable. To get the guid you would call $item->id() (for atom
-     * compatibility) or $item->guid(). To check if this guid is a permalink call
-     * $item->guid("ispermalink").
-     *
-     * @param   string  $method - the method name being called
-     * @param   array   $params - parameters required
-     * @return  string  the guid or value of ispermalink
-     */
-    protected function getGuid($method, $params)
-    {
-        $attribute = (isset($params[0]) and $params[0] == 'ispermalink') ? 
-            true : false;
-        $tag = $this->model->getElementsByTagName('guid');
-        if ($tag->length > 0) {
-            if ($attribute) {
-                if ($tag->hasAttribute("ispermalink")) {
-                    return $tag->getAttribute("ispermalink");
-                }
-            }
-            return $tag->item(0)->nodeValue;
-        }
-        return false;
-    }
-
-    /**
-     * Access details of file enclosures
-     *
-     * The RSS2 spec is ambiguous as to whether an enclosure element must be
-     * unique in a given entry. For now we will assume it needn't, and allow
-     * for an offset.
-     *
-     * @param   string $method - the method being called
-     * @param   array   $parameters - we expect the first of these to be our offset
-     * @return  array|false
-     */
-    protected function getEnclosure($method, $parameters)
-    {
-        $encs = $this->model->getElementsByTagName('enclosure');
-        $offset = isset($parameters[0]) ? $parameters[0] : 0;
-        if ($encs->length > $offset) {
-            try {
-                if (! $encs->item($offset)->hasAttribute('url')) {
-                    return false;
-                }
-                $attrs = $encs->item($offset)->attributes;
-                return array(
-                    'url' => $attrs->getNamedItem('url')->value,
-                    'length' => $attrs->getNamedItem('length')->value,
-                    'type' => $attrs->getNamedItem('type')->value);
-            } catch (Exception $e) {
-                return false;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Get the entry source if specified
-     *
-     * source is an optional sub-element of item. Like atom:source it tells
-     * us about where the entry came from (eg. if it's been copied from another
-     * feed). It is not a rich source of metadata in the same way as atom:source
-     * and while it would be good to maintain compatibility by returning an
-     * XML_Feed_Parser_RSS2 element, it makes a lot more sense to return an array.
-     *
-     * @return array|false
-     */
-    protected function getSource()
-    {
-        $get = $this->model->getElementsByTagName('source');
-        if ($get->length) {
-            $source = $get->item(0);
-            $array = array(
-                'content' => $source->nodeValue);
-            foreach ($source->attributes as $attribute) {
-                $array[$attribute->name] = $attribute->value;
-            }
-            return $array;
-        }
-        return false;
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/Parser/Type.php b/plugins/FeedSub/extlib/XML/Feed/Parser/Type.php
deleted file mode 100644 (file)
index 7505261..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Abstract class providing common methods for XML_Feed_Parser feeds.
- *
- * PHP versions 5
- *
- * LICENSE: This source file is subject to version 3.0 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category   XML
- * @package    XML_Feed_Parser
- * @author     James Stewart <james@jystewart.net>
- * @copyright  2005 James Stewart <james@jystewart.net>
- * @license    http://www.gnu.org/copyleft/lesser.html  GNU LGPL 2.1
- * @version    CVS: $Id: Type.php,v 1.25 2008/03/08 18:39:09 jystewart Exp $
- * @link       http://pear.php.net/package/XML_Feed_Parser/
- */
-
-/**
- * This abstract class provides some general methods that are likely to be
- * implemented exactly the same way for all feed types.
- *
- * @package XML_Feed_Parser
- * @author  James Stewart <james@jystewart.net>
- * @version Release: 1.0.3
- */
-abstract class XML_Feed_Parser_Type
-{
-    /**
-     * Where we store our DOM object for this feed 
-     * @var DOMDocument
-     */
-    public $model;
-
-    /**
-     * For iteration we'll want a count of the number of entries 
-     * @var int
-     */
-    public $numberEntries;
-
-    /**
-     * Where we store our entry objects once instantiated 
-     * @var array
-     */
-    public $entries = array();
-
-    /**
-     * Store mappings between entry IDs and their position in the feed
-     */
-    public $idMappings = array();
-
-    /**
-     * Proxy to allow use of element names as method names
-     *
-     * We are not going to provide methods for every entry type so this
-     * function will allow for a lot of mapping. We rely pretty heavily
-     * on this to handle our mappings between other feed types and atom.
-     *
-     * @param   string  $call - the method attempted
-     * @param   array   $arguments - arguments to that method
-     * @return  mixed
-     */
-    function __call($call, $arguments = array())
-    {
-        if (! is_array($arguments)) {
-            $arguments = array();
-        }
-
-        if (isset($this->compatMap[$call])) {
-            $tempMap = $this->compatMap;
-            $tempcall = array_pop($tempMap[$call]);
-            if (! empty($tempMap)) {
-                $arguments = array_merge($arguments, $tempMap[$call]);
-            }
-            $call = $tempcall;
-        }
-
-        /* To be helpful, we allow a case-insensitive search for this method */
-        if (! isset($this->map[$call])) {
-            foreach (array_keys($this->map) as $key) {
-                if (strtoupper($key) == strtoupper($call)) {
-                    $call = $key;
-                    break;
-                }
-            }
-        }
-
-        if (empty($this->map[$call])) {
-            return false;
-        }
-
-        $method = 'get' . $this->map[$call][0];
-        if ($method == 'getLink') {
-            $offset = empty($arguments[0]) ? 0 : $arguments[0];
-            $attribute = empty($arguments[1]) ? 'href' : $arguments[1];
-            $params = isset($arguments[2]) ? $arguments[2] : array();
-            return $this->getLink($offset, $attribute, $params);
-        }
-        if (method_exists($this, $method)) {
-            return $this->$method($call, $arguments);
-        }
-
-        return false;
-    }
-
-    /**
-     * Proxy to allow use of element names as attribute names
-     *
-     * For many elements variable-style access will be desirable. This function
-     * provides for that.
-     *
-     * @param   string  $value - the variable required
-     * @return  mixed
-     */
-    function __get($value)
-    {
-        return $this->__call($value, array());
-    }
-
-    /**
-     * Utility function to help us resolve xml:base values
-     *
-     * We have other methods which will traverse the DOM and work out the different
-     * xml:base declarations we need to be aware of. We then need to combine them.
-     * If a declaration starts with a protocol then we restart the string. If it 
-     * starts with a / then we add on to the domain name. Otherwise we simply tag 
-     * it on to the end.
-     *
-     * @param   string  $base - the base to add the link to
-     * @param   string  $link
-     */
-    function combineBases($base, $link)
-    {
-        if (preg_match('/^[A-Za-z]+:\/\//', $link)) {
-            return $link;
-        } else if (preg_match('/^\//', $link)) {
-            /* Extract domain and suffix link to that */
-            preg_match('/^([A-Za-z]+:\/\/.*)?\/*/', $base, $results);
-            $firstLayer = $results[0];
-            return $firstLayer . "/" . $link;
-        } else if (preg_match('/^\.\.\//', $base)) {
-            /* Step up link to find place to be */
-            preg_match('/^((\.\.\/)+)(.*)$/', $link, $bases);
-            $suffix = $bases[3];
-            $count = preg_match_all('/\.\.\//', $bases[1], $steps);
-            $url = explode("/", $base);
-            for ($i = 0; $i <= $count; $i++) {
-                array_pop($url);
-            }
-            return implode("/", $url) . "/" . $suffix;
-        } else if (preg_match('/^(?!\/$)/', $base)) {
-            $base = preg_replace('/(.*\/).*$/', '$1', $base)  ;
-            return $base . $link;
-        } else {
-            /* Just stick it on the end */
-            return $base . $link;
-        }
-    }
-
-    /**
-     * Determine whether we need to apply our xml:base rules
-     *
-     * Gets us the xml:base data and then processes that with regard
-     * to our current link.
-     *
-     * @param   string
-     * @param   DOMElement
-     * @return  string
-     */
-    function addBase($link, $element)
-    {
-        if (preg_match('/^[A-Za-z]+:\/\//', $link)) {
-            return $link;
-        }
-
-        return $this->combineBases($element->baseURI, $link);
-    }
-
-    /**
-     * Get an entry by its position in the feed, starting from zero
-     *
-     * As well as allowing the items to be iterated over we want to allow
-     * users to be able to access a specific entry. This is one of two ways of
-     * doing that, the other being by ID.
-     * 
-     * @param   int $offset
-     * @return  XML_Feed_Parser_RSS1Element
-     */
-    function getEntryByOffset($offset)
-    {
-        if (! isset($this->entries[$offset])) {
-            $entries = $this->model->getElementsByTagName($this->itemElement);
-            if ($entries->length > $offset) {
-                $xmlBase = $entries->item($offset)->baseURI;
-                $this->entries[$offset] = new $this->itemClass(
-                    $entries->item($offset), $this, $xmlBase);
-                if ($id = $this->entries[$offset]->id) {
-                    $this->idMappings[$id] = $this->entries[$offset];
-                }
-            } else {
-                throw new XML_Feed_Parser_Exception('No entries found');
-            }
-        }
-
-        return $this->entries[$offset];
-    }
-
-    /**
-     * Return a date in seconds since epoch.
-     *
-     * Get a date construct. We use PHP's strtotime to return it as a unix datetime, which
-     * is the number of seconds since 1970-01-01 00:00:00.
-     * 
-     * @link    http://php.net/strtotime
-     * @param    string    $method        The name of the date construct we want
-     * @param    array     $arguments    Included for compatibility with our __call usage
-     * @return    int|false datetime
-     */
-    protected function getDate($method, $arguments)
-    {
-        $time = $this->model->getElementsByTagName($method);
-        if ($time->length == 0 || empty($time->item(0)->nodeValue)) {
-            return false;
-        }
-        return strtotime($time->item(0)->nodeValue);
-    }
-
-    /**
-     * Get a text construct. 
-     *
-     * @param    string    $method    The name of the text construct we want
-     * @param    array     $arguments    Included for compatibility with our __call usage
-     * @return    string
-     */
-    protected function getText($method, $arguments = array())
-    {
-        $tags = $this->model->getElementsByTagName($method);
-        if ($tags->length > 0) {
-            $value = $tags->item(0)->nodeValue;
-            return $value;
-        }
-        return false;
-    }
-
-    /**
-     * Apply various rules to retrieve category data.
-     *
-     * There is no single way of declaring a category in RSS1/1.1 as there is in RSS2 
-     * and  Atom. Instead the usual approach is to use the dublin core namespace to 
-     * declare  categories. For example delicious use both: 
-     * <dc:subject>PEAR</dc:subject> and: <taxo:topics><rdf:Bag>
-     * <rdf:li resource="http://del.icio.us/tag/PEAR" /></rdf:Bag></taxo:topics>
-     * to declare a categorisation of 'PEAR'.
-     *
-     * We need to be sensitive to this where possible.
-     *
-     * @param    string    $call    for compatibility with our overloading
-     * @param   array $arguments - arg 0 is the offset, arg 1 is whether to return as array
-     * @return  string|array|false
-     */
-    protected function getCategory($call, $arguments)
-    {
-        $categories = $this->model->getElementsByTagName('subject');
-        $offset = empty($arguments[0]) ? 0 : $arguments[0];
-        $array = empty($arguments[1]) ? false : true;
-        if ($categories->length <= $offset) {
-            return false;
-        }
-        if ($array) {
-            $list = array();
-            foreach ($categories as $category) {
-                array_push($list, $category->nodeValue);
-            }
-            return $list;
-        }
-        return $categories->item($offset)->nodeValue;
-    }
-
-    /**
-     * Count occurrences of an element
-     *
-     * This function will tell us how many times the element $type
-     * appears at this level of the feed.
-     * 
-     * @param    string    $type    the element we want to get a count of
-     * @return    int
-     */
-    protected function count($type)
-    {
-        if ($tags = $this->model->getElementsByTagName($type)) {
-            return $tags->length;
-        }
-        return 0;
-    }
-
-    /**
-     * Part of our xml:base processing code
-     *
-     * We need a couple of methods to access XHTML content stored in feeds. 
-     * This is because we dereference all xml:base references before returning
-     * the element. This method handles the attributes.
-     *
-     * @param   DOMElement $node    The DOM node we are iterating over
-     * @return  string
-     */
-    function processXHTMLAttributes($node) {
-        $return = '';
-        foreach ($node->attributes as $attribute) {
-            if ($attribute->name == 'src' or $attribute->name == 'href') {
-                $attribute->value = $this->addBase(htmlentities($attribute->value, NULL, 'utf-8'), $attribute);
-            }
-            if ($attribute->name == 'base') {
-                continue;
-            }
-            $return .= $attribute->name . '="' . htmlentities($attribute->value, NULL, 'utf-8') .'" ';
-        }
-        if (! empty($return)) {
-            return ' ' . trim($return);
-        }
-        return '';
-    }
-
-    /**
-     * Convert HTML entities based on the current character set.
-     * 
-     * @param String
-     * @return String
-     */
-    function processEntitiesForNodeValue($node) 
-    {
-        if (function_exists('iconv')) {
-          $current_encoding = $node->ownerDocument->encoding;
-          $value = iconv($current_encoding, 'UTF-8', $node->nodeValue);
-        } else if ($current_encoding == 'iso-8859-1') {
-          $value = utf8_encode($node->nodeValue);
-        } else {
-          $value = $node->nodeValue;
-        }
-
-        $decoded = html_entity_decode($value, NULL, 'UTF-8');
-        return htmlentities($decoded, NULL, 'UTF-8');
-    }
-
-    /**
-     * Part of our xml:base processing code
-     *
-     * We need a couple of methods to access XHTML content stored in feeds. 
-     * This is because we dereference all xml:base references before returning
-     * the element. This method recurs through the tree descending from the node
-     * and builds our string.
-     *
-     * @param   DOMElement $node    The DOM node we are processing
-     * @return   string
-     */
-    function traverseNode($node)
-    {
-        $content = '';
-
-        /* Add the opening of this node to the content */
-        if ($node instanceof DOMElement) {
-            $content .= '<' . $node->tagName . 
-                $this->processXHTMLAttributes($node) . '>';
-        }
-
-        /* Process children */
-        if ($node->hasChildNodes()) {
-            foreach ($node->childNodes as $child) {
-                $content .= $this->traverseNode($child);
-            }
-        }
-
-        if ($node instanceof DOMText) {
-            $content .= $this->processEntitiesForNodeValue($node);
-        }
-
-        /* Add the closing of this node to the content */
-        if ($node instanceof DOMElement) {
-            $content .= '</' . $node->tagName . '>';
-        }
-
-        return $content;
-    }
-
-    /**
-     * Get content from RSS feeds (atom has its own implementation)
-     *
-     * The official way to include full content in an RSS1 entry is to use
-     * the content module's element 'encoded', and RSS2 feeds often duplicate that.
-     * Often, however, the 'description' element is used instead. We will offer that 
-     * as a fallback. Atom uses its own approach and overrides this method.
-     *
-     * @return  string|false
-     */
-    protected function getContent()
-    {
-        $options = array('encoded', 'description');
-        foreach ($options as $element) {
-            $test = $this->model->getElementsByTagName($element);
-            if ($test->length == 0) {
-                continue;
-            }
-            if ($test->item(0)->hasChildNodes()) {
-                $value = '';
-                foreach ($test->item(0)->childNodes as $child) {
-                    if ($child instanceof DOMText) {
-                        $value .= $child->nodeValue;
-                    } else {
-                        $simple = simplexml_import_dom($child);
-                        $value .= $simple->asXML();
-                    }
-                }
-                return $value;
-            } else if ($test->length > 0) {
-                return $test->item(0)->nodeValue;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Checks if this element has a particular child element.
-     *
-     * @param   String
-     * @param   Integer
-     * @return  bool
-     **/
-    function hasKey($name, $offset = 0)
-    {
-        $search = $this->model->getElementsByTagName($name);
-        return $search->length > $offset;
-    }
-
-    /**
-     * Return an XML serialization of the feed, should it be required. Most 
-     * users however, will already have a serialization that they used when 
-     * instantiating the object.
-     *
-     * @return    string    XML serialization of element
-     */    
-    function __toString()
-    {
-        $simple = simplexml_import_dom($this->model);
-        return $simple->asXML();
-    }
-    
-    /**
-     * Get directory holding RNG schemas. Method is based on that 
-     * found in Contact_AddressBook.
-     *
-     * @return string PEAR data directory.
-     * @access public
-     * @static
-     */
-    static function getSchemaDir()
-    {
-        require_once 'PEAR/Config.php';
-        $config = new PEAR_Config;
-        return $config->get('data_dir') . '/XML_Feed_Parser/schemas';
-    }
-}
-
-?>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-entryonly.xml b/plugins/FeedSub/extlib/XML/Feed/samples/atom10-entryonly.xml
deleted file mode 100755 (executable)
index 02e1c58..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<entry xmlns="http://www.w3.org/2005/Atom">
-    <title>Atom draft-07 snapshot</title>
-    <link rel="alternate" type="text/html" 
-     href="http://example.org/2005/04/02/atom"/>
-    <link rel='enclosure' type="audio/mpeg" length="1337"
-     href="http://example.org/audio/ph34r_my_podcast.mp3"/>
-    <id>tag:example.org,2003:3.2397</id>
-    <updated>2005-07-10T12:29:29Z</updated>
-    <published>2003-12-13T08:29:29-04:00</published>
-    <author>
-      <name>Mark Pilgrim</name>
-      <uri>http://example.org/</uri>
-      <email>f8dy@example.com</email>
-    </author>
-    <contributor>
-      <name>Sam Ruby</name>
-    </contributor>
-    <contributor>
-      <name>Joe Gregorio</name>
-    </contributor>
-    <content type="xhtml" xml:lang="en" 
-     xml:base="http://diveintomark.org/">
-      <div xmlns="http://www.w3.org/1999/xhtml">
-        <p><i>[Update: The Atom draft is finished.]</i></p>
-      </div>
-    </content>
-  </entry>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example1.xml b/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example1.xml
deleted file mode 100755 (executable)
index d181d2b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-
- <title>Example Feed</title>
- <link href="http://example.org/"/>
- <updated>2003-12-13T18:30:02Z</updated>
- <author>
-   <name>John Doe</name>
- </author>
- <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-
- <entry>
-   <title>Atom-Powered Robots Run Amok</title>
-   <link href="http://example.org/2003/12/13/atom03"/>
-   <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
-   <updated>2003-12-13T18:30:02Z</updated>
-   <summary>Some text.</summary>
- </entry>
-
-</feed>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example2.xml b/plugins/FeedSub/extlib/XML/Feed/samples/atom10-example2.xml
deleted file mode 100755 (executable)
index 98abf9d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-   <feed xmlns="http://www.w3.org/2005/Atom">
-     <title type="text">dive into mark</title>
-     <subtitle type="html">
-       A &lt;em&gt;lot&lt;/em&gt; of effort
-       went into making this effortless
-     </subtitle>
-     <updated>2005-07-31T12:29:29Z</updated>
-     <id>tag:example.org,2003:3</id>
-     <link rel="alternate" type="text/html"
-      hreflang="en" href="http://example.org/"/>
-     <link rel="self" type="application/atom+xml"
-      href="http://example.org/feed.atom"/>
-     <rights>Copyright (c) 2003, Mark Pilgrim</rights>
-     <generator uri="http://www.example.com/" version="1.0">
-       Example Toolkit
-     </generator>
-     <entry>
-       <title>Atom draft-07 snapshot</title>
-       <link rel="alternate" type="text/html"
-        href="http://example.org/2005/04/02/atom"/>
-       <link rel='enclosure' type="audio/mpeg" length="1337"
-        href="http://example.org/audio/ph34r_my_podcast.mp3"/>
-       <id>tag:example.org,2003:3.2397</id>
-       <updated>2005-07-31T12:29:29Z</updated>
-       <published>2003-12-13T08:29:29-04:00</published>
-       <author>
-         <name>Mark Pilgrim</name>
-         <uri>http://example.org/</uri>
-         <email>f8dy@example.com</email>
-       </author>
-       <contributor>
-         <name>Sam Ruby</name>
-       </contributor>
-       <contributor>
-         <name>Joe Gregorio</name>
-       </contributor>
-       <content type="xhtml" xml:lang="en"
-        xml:base="http://diveintomark.org/">
-         <div xmlns="http://www.w3.org/1999/xhtml">
-           <p><i>[Update: The Atom draft is finished.]</i></p>
-         </div>
-       </content>
-     </entry>
-   </feed>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/delicious.feed b/plugins/FeedSub/extlib/XML/Feed/samples/delicious.feed
deleted file mode 100755 (executable)
index 32f9fa4..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<rdf:RDF
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns="http://purl.org/rss/1.0/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
- xmlns:admin="http://webns.net/mvcb/"
->
-<channel rdf:about="http://del.icio.us/tag/greenbelt">
-<title>del.icio.us/tag/greenbelt</title>
-<link>http://del.icio.us/tag/greenbelt</link>
-<description>Text</description>
-<items>
- <rdf:Seq>
-  <rdf:li rdf:resource="http://www.greenbelt.org.uk/" />
-  <rdf:li rdf:resource="http://www.greenbelt.org.uk/" />
-  <rdf:li rdf:resource="http://www.natuerlichwien.at/rundumadum/dergruenguertel/" />
-  <rdf:li rdf:resource="http://www.flickerweb.co.uk/wiki/index.php/Tank#Seminars" />
-  <rdf:li rdf:resource="http://www.greenbelt.ca/home.htm" />
-  <rdf:li rdf:resource="http://pipwilsonbhp.blogspot.com/" />
-  <rdf:li rdf:resource="http://maggidawn.typepad.com/maggidawn/" />
-  <rdf:li rdf:resource="http://www.johndavies.org/" />
-  <rdf:li rdf:resource="http://jonnybaker.blogs.com/" />
- </rdf:Seq>
-</items>
-</channel>
-
-<item rdf:about="http://www.greenbelt.org.uk/">
-<dc:title>Greenbelt - Homepage Section</dc:title>
-<link>http://www.greenbelt.org.uk/</link>
-<dc:creator>jonnybaker</dc:creator>
-<dc:date>2005-05-16T16:30:38Z</dc:date>
-<dc:subject>greenbelt</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/greenbelt" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://www.greenbelt.org.uk/">
-<title>Greenbelt festival (uk)</title>
-<link>http://www.greenbelt.org.uk/</link>
-<dc:creator>sssshhhh</dc:creator>
-<dc:date>2005-05-14T18:19:40Z</dc:date>
-<dc:subject>audiology festival gigs greenbelt</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/gigs" />
-    <rdf:li resource="http://del.icio.us/tag/audiology" />
-    <rdf:li resource="http://del.icio.us/tag/festival" />
-    <rdf:li resource="http://del.icio.us/tag/greenbelt" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://www.natuerlichwien.at/rundumadum/dergruenguertel/">
-<title>Natuerlichwien.at - Rundumadum</title>
-<link>http://www.natuerlichwien.at/rundumadum/dergruenguertel/</link>
-<dc:creator>egmilman47</dc:creator>
-<dc:date>2005-05-06T21:33:41Z</dc:date>
-<dc:subject>Austria Vienna Wien greenbelt nature walking</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/Vienna" />
-    <rdf:li resource="http://del.icio.us/tag/Wien" />
-    <rdf:li resource="http://del.icio.us/tag/Austria" />
-    <rdf:li resource="http://del.icio.us/tag/walking" />
-    <rdf:li resource="http://del.icio.us/tag/nature" />
-    <rdf:li resource="http://del.icio.us/tag/greenbelt" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://www.flickerweb.co.uk/wiki/index.php/Tank#Seminars">
-<title>Tank - GBMediaWiki</title>
-<link>http://www.flickerweb.co.uk/wiki/index.php/Tank#Seminars</link>
-<dc:creator>jystewart</dc:creator>
-<dc:date>2005-03-21T22:44:11Z</dc:date>
-<dc:subject>greenbelt</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/greenbelt" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://www.greenbelt.ca/home.htm">
-<title>Greenbelt homepage</title>
-<link>http://www.greenbelt.ca/home.htm</link>
-<dc:creator>Gooberoo</dc:creator>
-<dc:date>2005-03-01T22:43:17Z</dc:date>
-<dc:subject>greenbelt ontario</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/ontario" />
-    <rdf:li resource="http://del.icio.us/tag/greenbelt" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://pipwilsonbhp.blogspot.com/">
-<title>Pip Wilson bhp ...... blog</title>
-<link>http://pipwilsonbhp.blogspot.com/</link>
-<dc:creator>sssshhhh</dc:creator>
-<dc:date>2004-12-27T11:20:51Z</dc:date>
-<dc:subject>Greenbelt friend ideas links thinking weblog</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/Greenbelt" />
-    <rdf:li resource="http://del.icio.us/tag/thinking" />
-    <rdf:li resource="http://del.icio.us/tag/ideas" />
-    <rdf:li resource="http://del.icio.us/tag/links" />
-    <rdf:li resource="http://del.icio.us/tag/friend" />
-    <rdf:li resource="http://del.icio.us/tag/weblog" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://maggidawn.typepad.com/maggidawn/">
-<title>maggi dawn</title>
-<link>http://maggidawn.typepad.com/maggidawn/</link>
-<dc:creator>sssshhhh</dc:creator>
-<dc:date>2004-12-27T11:20:11Z</dc:date>
-<dc:subject>Greenbelt ideas links thinking weblog</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/Greenbelt" />
-    <rdf:li resource="http://del.icio.us/tag/thinking" />
-    <rdf:li resource="http://del.icio.us/tag/ideas" />
-    <rdf:li resource="http://del.icio.us/tag/links" />
-    <rdf:li resource="http://del.icio.us/tag/weblog" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://www.johndavies.org/">
-<title>John Davies</title>
-<link>http://www.johndavies.org/</link>
-<dc:creator>sssshhhh</dc:creator>
-<dc:date>2004-12-27T11:18:37Z</dc:date>
-<dc:subject>Greenbelt ideas links thinking weblog</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/Greenbelt" />
-    <rdf:li resource="http://del.icio.us/tag/thinking" />
-    <rdf:li resource="http://del.icio.us/tag/ideas" />
-    <rdf:li resource="http://del.icio.us/tag/links" />
-    <rdf:li resource="http://del.icio.us/tag/weblog" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-<item rdf:about="http://jonnybaker.blogs.com/">
-<title>jonnybaker</title>
-<link>http://jonnybaker.blogs.com/</link>
-<dc:creator>sssshhhh</dc:creator>
-<dc:date>2004-12-27T11:18:17Z</dc:date>
-<dc:subject>Greenbelt event ideas links resources thinking weblog youth</dc:subject>
-<taxo:topics>
-  <rdf:Bag>
-    <rdf:li resource="http://del.icio.us/tag/Greenbelt" />
-    <rdf:li resource="http://del.icio.us/tag/thinking" />
-    <rdf:li resource="http://del.icio.us/tag/ideas" />
-    <rdf:li resource="http://del.icio.us/tag/links" />
-    <rdf:li resource="http://del.icio.us/tag/weblog" />
-    <rdf:li resource="http://del.icio.us/tag/youth" />
-    <rdf:li resource="http://del.icio.us/tag/event" />
-    <rdf:li resource="http://del.icio.us/tag/resources" />
-  </rdf:Bag>
-</taxo:topics>
-</item>
-
-</rdf:RDF>
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/flickr.feed b/plugins/FeedSub/extlib/XML/Feed/samples/flickr.feed
deleted file mode 100755 (executable)
index 57e83af..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>\r
-<feed version="0.3" xmlns="http://purl.org/atom/ns#" \r
-    xmlns:dc="http://purl.org/dc/elements/1.1/">\r
-\r
-       <title>jamesstewart - Everyone's Tagged Photos</title>\r
-       <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/tags/jamesstewart/"/>\r
-       <link rel="icon" type="image/jpeg" href="http://www.flickr.com/images/buddyicon.jpg"/>\r
-       <info type="text/html" mode="escaped">A feed of jamesstewart - Everyone's Tagged Photos</info>\r
-       <modified>2005-08-01T18:50:26Z</modified>\r
-       <generator url="http://www.flickr.com/">Flickr</generator>\r
-\r
-       <entry>\r
-               <title>Oma and James</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/30484029@N00/30367516/"/>\r
-               <link rel='enclosure' type="application/xml" href="http://james.anthropiccollective.org" />\r
-               <id>tag:flickr.com,2004:/photo/30367516</id>\r
-               <issued>2005-08-01T18:50:26Z</issued>\r
-               <modified>2005-08-01T18:50:26Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/30484029@N00/&quot;&gt;kstewart&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/30484029@N00/30367516/&quot; title=&quot;Oma and James&quot;&gt;&lt;img src=&quot;http://photos23.flickr.com/30367516_1f685a16e8_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Oma and James&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-&lt;p&gt;I have a beautiful Oma and a gorgeous husband.&lt;/p&gt;</content>\r
-               <author>\r
-                       <name>kstewart</name>\r
-                       <url>http://www.flickr.com/people/30484029@N00/</url>\r
-               </author>\r
-                               <dc:subject>jamesstewart oma stoelfamily</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title></title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/buddscreek/21376174/"/>\r
-               <id>tag:flickr.com,2004:/photo/21376174</id>\r
-               <issued>2005-06-25T02:00:35Z</issued>\r
-               <modified>2005-06-25T02:00:35Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/buddscreek/&quot;&gt;Lan Rover&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/buddscreek/21376174/&quot; title=&quot;&quot;&gt;&lt;img src=&quot;http://photos17.flickr.com/21376174_4314fd8d5c_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-&lt;p&gt;AMA Motocross Championship 2005, Budds Creek, Maryland&lt;/p&gt;</content>\r
-               <author>\r
-                       <name>Lan Rover</name>\r
-                       <url>http://www.flickr.com/people/buddscreek/</url>\r
-               </author>\r
-                               <dc:subject>amamotocrosschampionship buddscreek maryland 2005 fathersday motocrossnational rickycarmichael 259 jamesstewart 4</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title></title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/buddscreek/21375650/"/>\r
-               <id>tag:flickr.com,2004:/photo/21375650</id>\r
-               <issued>2005-06-25T01:56:24Z</issued>\r
-               <modified>2005-06-25T01:56:24Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/buddscreek/&quot;&gt;Lan Rover&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/buddscreek/21375650/&quot; title=&quot;&quot;&gt;&lt;img src=&quot;http://photos16.flickr.com/21375650_5c60e0dab1_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>Lan Rover</name>\r
-                       <url>http://www.flickr.com/people/buddscreek/</url>\r
-               </author>\r
-                               <dc:subject>amamotocrosschampionship buddscreek maryland 2005 fathersday motocrossnational 259 jamesstewart</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title></title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/buddscreek/21375345/"/>\r
-               <id>tag:flickr.com,2004:/photo/21375345</id>\r
-               <issued>2005-06-25T01:54:11Z</issued>\r
-               <modified>2005-06-25T01:54:11Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/buddscreek/&quot;&gt;Lan Rover&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/buddscreek/21375345/&quot; title=&quot;&quot;&gt;&lt;img src=&quot;http://photos15.flickr.com/21375345_4205fdd22b_m.jpg&quot; width=&quot;160&quot; height=&quot;240&quot; alt=&quot;&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>Lan Rover</name>\r
-                       <url>http://www.flickr.com/people/buddscreek/</url>\r
-               </author>\r
-                               <dc:subject>amamotocrosschampionship buddscreek maryland 2005 fathersday motocrossnational 259 jamesstewart</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>Lunch with Kari &amp; James, café in the crypt of St Martin in the fields</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/fidothe/16516618/"/>\r
-               <id>tag:flickr.com,2004:/photo/16516618</id>\r
-               <issued>2005-05-30T21:56:39Z</issued>\r
-               <modified>2005-05-30T21:56:39Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/fidothe/&quot;&gt;fidothe&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/fidothe/16516618/&quot; title=&quot;Lunch with Kari &amp;amp; James, café in the crypt of St Martin in the fields&quot;&gt;&lt;img src=&quot;http://photos14.flickr.com/16516618_afaa4a395e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Lunch with Kari &amp;amp; James, café in the crypt of St Martin in the fields&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>fidothe</name>\r
-                       <url>http://www.flickr.com/people/fidothe/</url>\r
-               </author>\r
-                               <dc:subject>nokia7610 london stmartininthefields clarepatterson jamesstewart parvinstewart jimstewart susanstewart</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>Stewart keeping it low over the obstacle.</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/pqbon/10224728/"/>\r
-               <id>tag:flickr.com,2004:/photo/10224728</id>\r
-               <issued>2005-04-21T07:30:29Z</issued>\r
-               <modified>2005-04-21T07:30:29Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/pqbon/&quot;&gt;pqbon&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/pqbon/10224728/&quot; title=&quot;Stewart keeping it low over the obstacle.&quot;&gt;&lt;img src=&quot;http://photos7.flickr.com/10224728_b756341957_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Stewart keeping it low over the obstacle.&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>pqbon</name>\r
-                       <url>http://www.flickr.com/people/pqbon/</url>\r
-               </author>\r
-                               <dc:subject>ama hangtown motocross jamesstewart bubba</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>king james stewart</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/jjlook/7152910/"/>\r
-               <id>tag:flickr.com,2004:/photo/7152910</id>\r
-               <issued>2005-03-22T21:53:37Z</issued>\r
-               <modified>2005-03-22T21:53:37Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/jjlook/&quot;&gt;jj look&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jjlook/7152910/&quot; title=&quot;king james stewart&quot;&gt;&lt;img src=&quot;http://photos7.flickr.com/7152910_a02ab5a750_m.jpg&quot; width=&quot;180&quot; height=&quot;240&quot; alt=&quot;king james stewart&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-&lt;p&gt;11th&lt;/p&gt;</content>\r
-               <author>\r
-                       <name>jj look</name>\r
-                       <url>http://www.flickr.com/people/jjlook/</url>\r
-               </author>\r
-                               <dc:subject>dilomar05 eastside austin texas 78702 kingjames stewart jamesstewart borrowed</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/fidothe/1586562/"/>\r
-               <id>tag:flickr.com,2004:/photo/1586562</id>\r
-               <issued>2004-11-20T09:34:28Z</issued>\r
-               <modified>2004-11-20T09:34:28Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/fidothe/&quot;&gt;fidothe&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/fidothe/1586562/&quot; title=&quot;It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)&quot;&gt;&lt;img src=&quot;http://photos2.flickr.com/1586562_0bc5313a3e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>fidothe</name>\r
-                       <url>http://www.flickr.com/people/fidothe/</url>\r
-               </author>\r
-                               <dc:subject>holiday grandrapids jamesstewart</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/fidothe/1586539/"/>\r
-               <id>tag:flickr.com,2004:/photo/1586539</id>\r
-               <issued>2004-11-20T09:28:16Z</issued>\r
-               <modified>2004-11-20T09:28:16Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/fidothe/&quot;&gt;fidothe&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/fidothe/1586539/&quot; title=&quot;It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)&quot;&gt;&lt;img src=&quot;http://photos2.flickr.com/1586539_c51e5f2e7a_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;It's a Grind, downtown Grand Rapids (James, Susan, Jim, Harv, Lawson)&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>fidothe</name>\r
-                       <url>http://www.flickr.com/people/fidothe/</url>\r
-               </author>\r
-                               <dc:subject>holiday grandrapids jamesstewart</dc:subject>\r
-       </entry>\r
-       <entry>\r
-               <title>It's a Grind, James and Jim can't decide)</title>\r
-               <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/fidothe/1586514/"/>\r
-               <id>tag:flickr.com,2004:/photo/1586514</id>\r
-               <issued>2004-11-20T09:25:05Z</issued>\r
-               <modified>2004-11-20T09:25:05Z</modified>\r
-               <content type="text/html" mode="escaped">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/fidothe/&quot;&gt;fidothe&lt;/a&gt; posted a photo:&lt;/p&gt;\r
-\r
-&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/fidothe/1586514/&quot; title=&quot;It's a Grind, James and Jim can't decide)&quot;&gt;&lt;img src=&quot;http://photos2.flickr.com/1586514_733c2dfa3e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;It's a Grind, James and Jim can't decide)&quot; style=&quot;border: 1px solid #000000;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;\r
-\r
-</content>\r
-               <author>\r
-                       <name>fidothe</name>\r
-                       <url>http://www.flickr.com/people/fidothe/</url>\r
-               </author>\r
-                               <dc:subject>holiday grandrapids jamesstewart johnkentish</dc:subject>\r
-       </entry>\r
-\r
-</feed>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/grwifi-atom.xml b/plugins/FeedSub/extlib/XML/Feed/samples/grwifi-atom.xml
deleted file mode 100755 (executable)
index c351d3c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>\r<feed xmlns="http://www.w3.org/2005/Atom"\r xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">\r<title>Updates to Grand Rapids WiFi hotspot details</title>\r<link rel="alternate" type="text/html" href="http://grwifi.net/"/>\r<link rel="self" type="application/atom+xml" href="http://grwifi.net/atom/locations"/>\r<updated>2005-09-01T15:43:01-05:00</updated>\r<subtitle>WiFi Hotspots in Grand Rapids, MI</subtitle>\r<id>http://grwifi.net/atom/locations</id>\r<rights>Creative Commons Attribution-NonCommercial-ShareAlike 2.0 http://creativecommons.org/licenses/by-nc-sa/2.0/ </rights>\r\r\r<entry>\r    <title>Hotspot Details Updated: Sweetwaters</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/sweetwaters"/>\r    <id>http://grwifi.net/location/sweetwaters</id>\r    <updated>2005-09-01T15:43:01-05:00</updated>\r\r        <summary type="html">\r          The details of the WiFi hotspot at: Sweetwaters have been updated. Find out more at:
-http://grwifi.net/location/sweetwaters\r        </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r\r<entry>\r    <title>Hotspot Details Updated: Common Ground Coffee Shop</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/common-ground"/>\r    <id>http://grwifi.net/location/common-ground</id>\r    <updated>2005-09-01T15:42:39-05:00</updated>\r\r     <summary type="html">\r          The details of the WiFi hotspot at: Common Ground Coffee Shop have been updated. Find out more at:
-http://grwifi.net/location/common-ground\r      </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r\r<entry>\r    <title>Hotspot Details Updated: Grand Rapids Public Library, Main Branch</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/grpl-main-branch"/>\r    <id>http://grwifi.net/location/grpl-main-branch</id>\r    <updated>2005-09-01T15:42:20-05:00</updated>\r\r        <summary type="html">\r          The details of the WiFi hotspot at: Grand Rapids Public Library, Main Branch have been updated. Find out more at:
-http://grwifi.net/location/grpl-main-branch\r   </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r\r<entry>\r    <title>Hotspot Details Updated: Four Friends Coffee House</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/four-friends"/>\r    <id>http://grwifi.net/location/four-friends</id>\r    <updated>2005-09-01T15:41:35-05:00</updated>\r\r       <summary type="html">\r          The details of the WiFi hotspot at: Four Friends Coffee House have been updated. Find out more at:
-http://grwifi.net/location/four-friends\r       </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r\r<entry>\r    <title>Hotspot Details Updated: Barnes and Noble, Rivertown Crossings</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/barnes-noble-rivertown"/>\r    <id>http://grwifi.net/location/barnes-noble-rivertown</id>\r    <updated>2005-09-01T15:40:41-05:00</updated>\r\r       <summary type="html">\r          The details of the WiFi hotspot at: Barnes and Noble, Rivertown Crossings have been updated. Find out more at:
-http://grwifi.net/location/barnes-noble-rivertown\r     </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r\r<entry>\r    <title>Hotspot Details Updated: The Boss Sports Bar &amp; Grille</title>\r    <link rel="alternate" type="text/html" href="http://grwifi.net/location/boss-sports-bar"/>\r    <id>http://grwifi.net/location/boss-sports-bar</id>\r    <updated>2005-09-01T15:40:19-05:00</updated>\r\r  <summary type="html">\r          The details of the WiFi hotspot at: The Boss Sports Bar &amp; Grille have been updated. Find out more at:
-http://grwifi.net/location/boss-sports-bar\r    </summary>\r\r    <author>\r               <name>James</name>\r             <uri>http://jystewart.net</uri>\r                <email>james@jystewart.net</email>      </author>\r      <dc:subject>wifi hotspot</dc:subject>\r</entry>\r</feed>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/hoder.xml b/plugins/FeedSub/extlib/XML/Feed/samples/hoder.xml
deleted file mode 100755 (executable)
index 0994635..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0" 
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
-  xmlns:admin="http://webns.net/mvcb/"
-  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-
-<channel>
-<title>Editor: Myself (Persian)</title>
-<link>http://editormyself.info</link>
-<description>This is a Persian (Farsi) weblog, written by Hossein Derakhshan (aka, Hoder), an Iranian Multimedia designer and a journalist who lives in Toronto since Dec 2000. He also keeps an English weblog with the same name.</description>
-<dc:language>en-us</dc:language>
-<dc:creator>hoder@hotmail.com</dc:creator>
-<dc:date>2005-10-12T19:45:32-05:00</dc:date>
-<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.15" />
-<sy:updatePeriod>hourly</sy:updatePeriod>
-<sy:updateFrequency>1</sy:updateFrequency>
-<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
-
-
-<item>
-<title>لينکدونی‌ | جلسه‌ی امریکن انترپرایز برای تقسیم قومی ایران</title>
-<link>http://www.aei.org/events/type.upcoming,eventID.1166,filter.all/event_detail.asp</link>
-<description>چطور بعضی‌ها فکر می‌کنند دست راستی‌های آمریکا از خامنه‌ای ملی‌گراترند</description>
-<guid isPermaLink="false">14645@http://i.hoder.com/</guid>
-<dc:subject>iran</dc:subject>
-<dc:date>2005-10-12T19:45:32-05:00</dc:date>
-</item>
-
-<item>
-<title>لينکدونی‌ | به صبحانه آگهی بدهید</title>
-<link>http://www.adbrite.com/mb/commerce/purchase_form.php?opid=24346&amp;afsid=1</link>
-<description>خیلی ارزان و راحت است</description>
-<guid isPermaLink="false">14644@http://i.hoder.com/</guid>
-<dc:subject>media/journalism</dc:subject>
-<dc:date>2005-10-12T17:23:15-05:00</dc:date>
-</item>
-
-<item>
-<title>لينکدونی‌ | نیروی انتظامی چگونه تابوهای هم‌جنس‌گرایانه را می‌شکند؛ فرنگوپولیس</title>
-<link>http://farangeopolis.blogspot.com/2005/10/blog-post_08.html</link>
-<description>از پس و پیش و حاشیه‌ی این ماجرا می‌توان یک مستند بی‌نظیر ساخت</description>
-<guid isPermaLink="false">14643@http://i.hoder.com/</guid>
-<dc:subject>soc_popculture</dc:subject>
-<dc:date>2005-10-12T17:06:40-05:00</dc:date>
-</item>
-
-<item>
-<title>لينکدونی‌ | بازتاب توقیف شد</title>
-<link>http://www.baztab.com/news/30201.php</link>
-<description>اگر گفتید یک وب‌سایت را چطور توقیف می‌کنند؟ لابد ماوس‌شان را قایم می‌کنند.</description>
-<guid isPermaLink="false">14642@http://i.hoder.com/</guid>
-<dc:subject>media/journalism</dc:subject>
-<dc:date>2005-10-12T14:41:57-05:00</dc:date>
-</item>
-
-<item>
-<title>لينکدونی‌ | رشد وب در سال 2005 از همیشه بیشتر بوده است&quot; بی.بی.سی</title>
-<link>http://news.bbc.co.uk/2/hi/technology/4325918.stm</link>
-<description></description>
-<guid isPermaLink="false">14640@http://i.hoder.com/</guid>
-<dc:subject>tech</dc:subject>
-<dc:date>2005-10-12T13:04:46-05:00</dc:date>
-</item>
-
-
-
-<item>
-<title>==قرعه کشی گرین کارد به زودی شروع می‌شود==</title>
-<link>http://nice.newsxphotos.biz/05/09/2007_dv_lottery_registration_to_begin_oct_5_14589.php</link>
-<description></description>
-<guid isPermaLink="false">14613@http://vagrantly.com</guid>
-<dc:subject>ads03</dc:subject>
-<dc:date>2005-09-27T04:49:22-05:00</dc:date>
-</item>
-
-
-
-
-
-
-<item>
-<title>پروژه‌ی هاروارد، قدم دوم</title>
-<link>http://editormyself.info/archives/2005/10/051012_014641.shtml</link>
-<description><![CDATA[<p>اگر یادتان باشد <a href="/archives/2005/09/050906_014504.shtml">چند وقت پیش نوشتم</a> که دانشگاه هاروارد پروژه‌ای دارد با نام آواهای جهانی که در آن به وبلاگ‌های غیر انگلیسی‌زبان می‌پردازد. خواشتم که اگر کسی علاقه دارد ایمیل بزند. تعداد زیادی جواب دادند و ابراز علاقه کردند. حالا وقت قدم دوم است.</p>
-
-<p>قدم دوم این است که برای اینکه مسوولین پروژه بتوانند تصمیم بگیرند که با چه کسی کار کنند، می‌خواهند نمونه‌ی کارهای علاقمندان مشارکت در این پرزو‌ه را ببینند.</p>
-
-<p>برای همین از همه‌ی علاقماندان، حتی کسانی که قبلا اعلام آمادگی نکرده بودند، می‌‌خواهم که یک موضوع رایج این روزهای وبلاگستان فارسی را انتخاب کنند و در هفتصد کلمه، به انگلیسی، بنویسند که وبلاگ‌دارهای درباره‌اش چه می‌گویند. لینک به پنج، شش وبلاگ و بازنویسی آنچه آنها از جنبه‌های گوناگون درباره‌ی آن موضوع نوشته‌اند با نقل قول مستقیم از آنها (البته ترجمه شده از فارسی) کافی است. دو سه جمله هم اول کار توضیح دهید که چرا این موضوع مهم است.</p>
-
-<p>متن نمونه را به آدرس ایمیل من hoder@hoder.com و نیز برای افراد زیر تا روز دوشنبه بفرستید:<br />
-ربکا : rmackinnon@cyber.law.harvard.edu<br />
-هیثم: haitham.sabbah@gmail.com</p>]]></description>
-<guid isPermaLink="false">14641@http://editormyself.info</guid>
-<dc:subject>weblog</dc:subject>
-<dc:date>2005-10-12T14:04:23-05:00</dc:date>
-</item>
-
-
-
-</channel>
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/illformed_atom10.xml b/plugins/FeedSub/extlib/XML/Feed/samples/illformed_atom10.xml
deleted file mode 100755 (executable)
index 6121868..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<!--\r
-Description: entry author name\r
-Expect:      bozo and entries[0]['author_detail']['name'] == u'Example author'\r
--->\r
-<feed xmlns="http://www.w3.org/2005/Atom">\r
-<entry>\r
-  <author>\r
-    <name>Example author</name>\r
-    <email>me@example.com</email>\r
-    <uri>http://example.com/</uri>\r
-  </author>\r
-</entry>\r
-</feed
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-complete.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss091-complete.xml
deleted file mode 100755 (executable)
index b0a1fee..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
-<channel>
-<copyright>Copyright 1997-1999 UserLand Software, Inc.</copyright>
-<pubDate>Thu, 08 Jul 1999 07:00:00 GMT</pubDate>
-<lastBuildDate>Thu, 08 Jul 1999 16:20:26 GMT</lastBuildDate>
-<docs>http://my.userland.com/stories/storyReader$11</docs>
-<description>News and commentary from the cross-platform scripting community.</description>
-<link>http://www.scripting.com/</link>
-<title>Scripting News</title>
-<image>
-<link>http://www.scripting.com/</link>
-<title>Scripting News</title>
-<url>http://www.scripting.com/gifs/tinyScriptingNews.gif</url>
-<height>40</height>
-<width>78</width>
-<description>What is this used for?</description>
-</image>
-<managingEditor>dave@userland.com (Dave Winer)</managingEditor>
-<webMaster>dave@userland.com (Dave Winer)</webMaster>
-<language>en-us</language>
-<skipHours>
-<hour>6</hour>
-<hour>7</hour>
-<hour>8</hour>
-<hour>9</hour>
-<hour>10</hour>
-<hour>11</hour>
-</skipHours>
-<skipDays>
-<day>Sunday</day>
-</skipDays>
-<rating>(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))</rating>
-<item>
-<title>stuff</title>
-<link>http://bar</link>
-<description>This is an article about some stuff</description>
-</item>
-<textinput>
-<title>Search Now!</title>
-<description>Enter your search &lt;terms&gt;</description>
-<name>find</name>
-<link>http://my.site.com/search.cgi</link>
-</textinput>
-</channel>
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-international.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss091-international.xml
deleted file mode 100755 (executable)
index cfe9169..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="EuC-JP"?>  
-<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
-<channel>
-<title>膮ŸÛë´é´Ì´×´è´ŒÁ¹´Õ</title>
-<link>http://www.mozilla.org</link>
-<description>膮ŸÛë´é´Ì´×´è´ŒÁ¹´Õ</description>
-<language>ja</language>  <!-- tagged as Japanese content -->
-<item>
-<title>NYÒ™Á¢¸»ÌêÛì15285.25´ƒ´‘Á£´Û´—´ÀÁ¹´ê´Ì´éÒ™Ûì¡êçÒÕ‰ÌêÁ£</title>
-<link>http://www.mozilla.org/status/</link>
-<description>This is an item description...</description>
-</item>
-<item>
-<title>‚§±Çç¡ËßÛÂÒ\8féøÓ¸Á£Ë²®Ÿè†Ûèå\8d±ÇÌ’¡Íæ—éøë‡Á£</title>
-<link>http://www.mozilla.org/status/</link>
-<description>This is an item description...</description>
-</item>
-<item>
-<title>ËÜË”\81ïÌëÈšÁ¢È†Ë§æàÀ豎ˉۂÁ¢Ë‚åܼšÛ˜íËüËÁ£</title>
-<link>http://www.mozilla.org/status/</link>
-<description>This is an item description...</description>
-</item>
-<item>
-<title>2000‚øíŠå\90Á¢«‘¦éÛë¹\8fÛ\90çéÛ§ÛÂè†ÒæÓ¸Á£Ì¾«…æ—ÕÝéøƒ¸Á£</title>
-<link>http://www.mozilla.org/status/</link>
-<description>This is an item description...</description>
-</item>
-</channel>
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss091-simple.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss091-simple.xml
deleted file mode 100755 (executable)
index f0964a2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
-<channel>
-<language>en</language>
-<description>News and commentary from the cross-platform scripting community.</description>
-<link>http://www.scripting.com/</link>
-<title>Scripting News</title>
-<image>
-<link>http://www.scripting.com/</link>
-<title>Scripting News</title>
-<url>http://www.scripting.com/gifs/tinyScriptingNews.gif</url>
-</image>
-</channel>
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss092-sample.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss092-sample.xml
deleted file mode 100755 (executable)
index 5d75c35..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-<!-- RSS generation done by 'Radio UserLand' on Fri, 13 Apr 2001 19:23:02 GMT -->
-<rss version="0.92">
-       <channel>
-               <title>Dave Winer: Grateful Dead</title>
-               <link>http://www.scripting.com/blog/categories/gratefulDead.html</link>
-               <description>A high-fidelity Grateful Dead song every day. This is where we&apos;re experimenting with enclosures on RSS news items that download when you&apos;re not using your computer. If it works (it will) it will be the end of the Click-And-Wait multimedia experience on the Internet. </description>
-               <lastBuildDate>Fri, 13 Apr 2001 19:23:02 GMT</lastBuildDate>
-               <docs>http://backend.userland.com/rss092</docs>
-               <managingEditor>dave@userland.com (Dave Winer)</managingEditor>
-               <webMaster>dave@userland.com (Dave Winer)</webMaster>
-               <cloud domain="data.ourfavoritesongs.com" port="80" path="/RPC2" registerProcedure="ourFavoriteSongs.rssPleaseNotify" protocol="xml-rpc"/>
-               <item>
-                       <description>It&apos;s been a few days since I added a song to the Grateful Dead channel. Now that there are all these new Radio users, many of whom are tuned into this channel (it&apos;s #16 on the hotlist of upstreaming Radio users, there&apos;s no way of knowing how many non-upstreaming users are subscribing, have to do something about this..). Anyway, tonight&apos;s song is a live version of Weather Report Suite from Dick&apos;s Picks Volume 7. It&apos;s wistful music. Of course a beautiful song, oft-quoted here on Scripting News. &lt;i&gt;A little change, the wind and rain.&lt;/i&gt;
-</description>
-                       <enclosure url="http://www.scripting.com/mp3s/weatherReportDicksPicsVol7.mp3" length="6182912" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Kevin Drennan started a &lt;a href=&quot;http://deadend.editthispage.com/&quot;&gt;Grateful Dead Weblog&lt;/a&gt;. Hey it&apos;s cool, he even has a &lt;a href=&quot;http://deadend.editthispage.com/directory/61&quot;&gt;directory&lt;/a&gt;. &lt;i&gt;A Frontier 7 feature.&lt;/i&gt;</description>
-                       <source url="http://scriptingnews.userland.com/xml/scriptingNews2.xml">Scripting News</source>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://arts.ucsc.edu/GDead/AGDL/other1.html&quot;&gt;The Other One&lt;/a&gt;, live instrumental, One From The Vault. Very rhythmic very spacy, you can listen to it many times, and enjoy something new every time.</description>
-                       <enclosure url="http://www.scripting.com/mp3s/theOtherOne.mp3" length="6666097" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>This is a test of a change I just made. Still diggin..</description>
-                       </item>
-               <item>
-                       <description>The HTML rendering almost &lt;a href=&quot;http://validator.w3.org/check/referer&quot;&gt;validates&lt;/a&gt;. Close. Hey I wonder if anyone has ever published a style guide for ALT attributes on images? What are you supposed to say in the ALT attribute? I sure don&apos;t know. If you&apos;re blind send me an email if u cn rd ths. </description>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.cs.cmu.edu/~mleone/gdead/dead-lyrics/Franklin&apos;s_Tower.txt&quot;&gt;Franklin&apos;s Tower&lt;/a&gt;, a live version from One From The Vault.</description>
-                       <enclosure url="http://www.scripting.com/mp3s/franklinsTower.mp3" length="6701402" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Moshe Weitzman says Shakedown Street is what I&apos;m lookin for for tonight. I&apos;m listening right now. It&apos;s one of my favorites. &quot;Don&apos;t tell me this town ain&apos;t got no heart.&quot; Too bright. I like the jazziness of Weather Report Suite. Dreamy and soft. How about The Other One? &quot;Spanish lady come to me..&quot;</description>
-                       <source url="http://scriptingnews.userland.com/xml/scriptingNews2.xml">Scripting News</source>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.scripting.com/mp3s/youWinAgain.mp3&quot;&gt;The news is out&lt;/a&gt;, all over town..&lt;p&gt;
-You&apos;ve been seen, out runnin round. &lt;p&gt;
-The lyrics are &lt;a href=&quot;http://www.cs.cmu.edu/~mleone/gdead/dead-lyrics/You_Win_Again.txt&quot;&gt;here&lt;/a&gt;, short and sweet. &lt;p&gt;
-&lt;i&gt;You win again!&lt;/i&gt;
-</description>
-                       <enclosure url="http://www.scripting.com/mp3s/youWinAgain.mp3" length="3874816" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.getlyrics.com/lyrics/grateful-dead/wake-of-the-flood/07.htm&quot;&gt;Weather Report Suite&lt;/a&gt;: &quot;Winter rain, now tell me why, summers fade, and roses die? The answer came. The wind and rain. Golden hills, now veiled in grey, summer leaves have blown away. Now what remains? The wind and rain.&quot;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://arts.ucsc.edu/gdead/agdl/darkstar.html&quot;&gt;Dark Star&lt;/a&gt; crashes, pouring its light into ashes.</description>
-                       <enclosure url="http://www.scripting.com/mp3s/darkStar.mp3" length="10889216" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>DaveNet: &lt;a href=&quot;http://davenet.userland.com/2001/01/21/theUsBlues&quot;&gt;The U.S. Blues&lt;/a&gt;.</description>
-                       </item>
-               <item>
-                       <description>Still listening to the US Blues. &lt;i&gt;&quot;Wave that flag, wave it wide and high..&quot;&lt;/i&gt; Mistake made in the 60s. We gave our country to the assholes. Ah ah. Let&apos;s take it back. Hey I&apos;m still a hippie. &lt;i&gt;&quot;You could call this song The United States Blues.&quot;&lt;/i&gt;</description>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.sixties.com/html/garcia_stack_0.html&quot;&gt;&lt;img src=&quot;http://www.scripting.com/images/captainTripsSmall.gif&quot; height=&quot;51&quot; width=&quot;42&quot; border=&quot;0&quot; hspace=&quot;10&quot; vspace=&quot;10&quot; align=&quot;right&quot;&gt;&lt;/a&gt;In celebration of today&apos;s inauguration, after hearing all those great patriotic songs, America the Beautiful, even The Star Spangled Banner made my eyes mist up. It made my choice of Grateful Dead song of the night realllly easy. Here are the &lt;a href=&quot;http://searchlyrics2.homestead.com/gd_usblues.html&quot;&gt;lyrics&lt;/a&gt;. Click on the audio icon to the left to give it a listen. &quot;Red and white, blue suede shoes, I&apos;m Uncle Sam, how do you do?&quot; It&apos;s a different kind of patriotic music, but man I love my country and I love Jerry and the band. &lt;i&gt;I truly do!&lt;/i&gt;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/usBlues.mp3" length="5272510" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Grateful Dead: &quot;Tennessee, Tennessee, ain&apos;t no place I&apos;d rather be.&quot;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/tennesseeJed.mp3" length="3442648" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Ed Cone: &quot;Had a nice Deadhead experience with my wife, who never was one but gets the vibe and knows and likes a lot of the music. Somehow she made it to the age of 40 without ever hearing Wharf Rat. We drove to Jersey and back over Christmas with the live album commonly known as Skull and Roses in the CD player much of the way, and it was cool to see her discover one the band&apos;s finest moments. That song is unique and underappreciated. Fun to hear that disc again after a few years off -- you get Jerry as blues-guitar hero on Big Railroad Blues and a nice version of Bertha.&quot;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/darkStarWharfRat.mp3" length="27503386" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://arts.ucsc.edu/GDead/AGDL/fotd.html&quot;&gt;Tonight&apos;s Song&lt;/a&gt;: &quot;If I get home before daylight I just might get some sleep tonight.&quot; </description>
-                       <enclosure url="http://www.scripting.com/mp3s/friendOfTheDevil.mp3" length="3219742" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://arts.ucsc.edu/GDead/AGDL/uncle.html&quot;&gt;Tonight&apos;s song&lt;/a&gt;: &quot;Come hear Uncle John&apos;s Band by the river side. Got some things to talk about here beside the rising tide.&quot;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/uncleJohnsBand.mp3" length="4587102" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.cs.cmu.edu/~mleone/gdead/dead-lyrics/Me_and_My_Uncle.txt&quot;&gt;Me and My Uncle&lt;/a&gt;: &quot;I loved my uncle, God rest his soul, taught me good, Lord, taught me all I know. Taught me so well, I grabbed that gold and I left his dead ass there by the side of the road.&quot;
-</description>
-                       <enclosure url="http://www.scripting.com/mp3s/meAndMyUncle.mp3" length="2949248" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Truckin, like the doo-dah man, once told me gotta play your hand. Sometimes the cards ain&apos;t worth a dime, if you don&apos;t lay em down.</description>
-                       <enclosure url="http://www.scripting.com/mp3s/truckin.mp3" length="4847908" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>Two-Way-Web: &lt;a href=&quot;http://www.thetwowayweb.com/payloadsForRss&quot;&gt;Payloads for RSS&lt;/a&gt;. &quot;When I started talking with Adam late last year, he wanted me to think about high quality video on the Internet, and I totally didn&apos;t want to hear about it.&quot;</description>
-                       </item>
-               <item>
-                       <description>A touch of gray, kinda suits you anyway..</description>
-                       <enclosure url="http://www.scripting.com/mp3s/touchOfGrey.mp3" length="5588242" type="audio/mpeg"/>
-                       </item>
-               <item>
-                       <description>&lt;a href=&quot;http://www.sixties.com/html/garcia_stack_0.html&quot;&gt;&lt;img src=&quot;http://www.scripting.com/images/captainTripsSmall.gif&quot; height=&quot;51&quot; width=&quot;42&quot; border=&quot;0&quot; hspace=&quot;10&quot; vspace=&quot;10&quot; align=&quot;right&quot;&gt;&lt;/a&gt;In celebration of today&apos;s inauguration, after hearing all those great patriotic songs, America the Beautiful, even The Star Spangled Banner made my eyes mist up. It made my choice of Grateful Dead song of the night realllly easy. Here are the &lt;a href=&quot;http://searchlyrics2.homestead.com/gd_usblues.html&quot;&gt;lyrics&lt;/a&gt;. Click on the audio icon to the left to give it a listen. &quot;Red and white, blue suede shoes, I&apos;m Uncle Sam, how do you do?&quot; It&apos;s a different kind of patriotic music, but man I love my country and I love Jerry and the band. &lt;i&gt;I truly do!&lt;/i&gt;</description>
-                       <enclosure url="http://www.scripting.com/mp3s/usBlues.mp3" length="5272510" type="audio/mpeg"/>
-                       </item>
-               </channel>
-       </rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example1.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example1.xml
deleted file mode 100755 (executable)
index 0edecf5..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-
-<rdf:RDF 
-  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-  xmlns="http://purl.org/rss/1.0/"
->
-
-  <channel rdf:about="http://www.xml.com/xml/news.rss">
-    <title>XML.com</title>
-    <link>http://xml.com/pub</link>
-    <description>
-      XML.com features a rich mix of information and services 
-      for the XML community.
-    </description>
-
-    <image rdf:resource="http://xml.com/universal/images/xml_tiny.gif" />
-
-    <items>
-      <rdf:Seq>
-        <rdf:li resource="http://xml.com/pub/2000/08/09/xslt/xslt.html" />
-        <rdf:li resource="http://xml.com/pub/2000/08/09/rdfdb/index.html" />
-      </rdf:Seq>
-    </items>
-
-    <textinput rdf:resource="http://search.xml.com" />
-
-  </channel>
-  
-  <image rdf:about="http://xml.com/universal/images/xml_tiny.gif">
-    <title>XML.com</title>
-    <link>http://www.xml.com</link>
-    <url>http://xml.com/universal/images/xml_tiny.gif</url>
-  </image>
-  
-  <item rdf:about="http://xml.com/pub/2000/08/09/xslt/xslt.html">
-    <title>Processing Inclusions with XSLT</title>
-    <link>http://xml.com/pub/2000/08/09/xslt/xslt.html</link>
-    <description>
-     Processing document inclusions with general XML tools can be 
-     problematic. This article proposes a way of preserving inclusion 
-     information through SAX-based processing.
-    </description>
-  </item>
-  
-  <item rdf:about="http://xml.com/pub/2000/08/09/rdfdb/index.html">
-    <title>Putting RDF to Work</title>
-    <link>http://xml.com/pub/2000/08/09/rdfdb/index.html</link>
-    <description>
-     Tool and API support for the Resource Description Framework 
-     is slowly coming of age. Edd Dumbill takes a look at RDFDB, 
-     one of the most exciting new RDF toolkits.
-    </description>
-  </item>
-
-  <textinput rdf:about="http://search.xml.com">
-    <title>Search XML.com</title>
-    <description>Search XML.com's XML collection</description>
-    <name>s</name>
-    <link>http://search.xml.com</link>
-  </textinput>
-
-</rdf:RDF>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example2.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss10-example2.xml
deleted file mode 100755 (executable)
index 26235f7..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?> 
-
-<rdf:RDF 
-  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
-  xmlns:co="http://purl.org/rss/1.0/modules/company/"
-  xmlns:ti="http://purl.org/rss/1.0/modules/textinput/"
-  xmlns="http://purl.org/rss/1.0/"
-> 
-
-  <channel rdf:about="http://meerkat.oreillynet.com/?_fl=rss1.0">
-    <title>Meerkat</title>
-    <link>http://meerkat.oreillynet.com</link>
-    <description>Meerkat: An Open Wire Service</description>
-    <dc:publisher>The O'Reilly Network</dc:publisher>
-    <dc:creator>Rael Dornfest (mailto:rael@oreilly.com)</dc:creator>
-    <dc:rights>Copyright &#169; 2000 O'Reilly &amp; Associates, Inc.</dc:rights>
-    <dc:date>2000-01-01T12:00+00:00</dc:date>
-    <sy:updatePeriod>hourly</sy:updatePeriod>
-    <sy:updateFrequency>2</sy:updateFrequency>
-    <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
-
-    <image rdf:resource="http://meerkat.oreillynet.com/icons/meerkat-powered.jpg" />
-
-    <items>
-      <rdf:Seq>
-        <rdf:li resource="http://c.moreover.com/click/here.pl?r123" />
-      </rdf:Seq>
-    </items>
-
-    <textinput rdf:resource="http://meerkat.oreillynet.com" />
-
-  </channel>
-
-  <image rdf:about="http://meerkat.oreillynet.com/icons/meerkat-powered.jpg">
-    <title>Meerkat Powered!</title>
-    <url>http://meerkat.oreillynet.com/icons/meerkat-powered.jpg</url>
-    <link>http://meerkat.oreillynet.com</link>
-  </image>
-
-  <item rdf:about="http://c.moreover.com/click/here.pl?r123">
-    <title>XML: A Disruptive Technology</title> 
-    <link>http://c.moreover.com/click/here.pl?r123</link>
-    <dc:description>
-      XML is placing increasingly heavy loads on the existing technical
-      infrastructure of the Internet.
-    </dc:description>
-    <dc:publisher>The O'Reilly Network</dc:publisher>
-    <dc:creator>Simon St.Laurent (mailto:simonstl@simonstl.com)</dc:creator>
-    <dc:rights>Copyright &#169; 2000 O'Reilly &amp; Associates, Inc.</dc:rights>
-    <dc:subject>XML</dc:subject>
-    <co:name>XML.com</co:name>
-    <co:market>NASDAQ</co:market>
-    <co:symbol>XML</co:symbol>
-  </item> 
-
-  <textinput rdf:about="http://meerkat.oreillynet.com">
-    <title>Search Meerkat</title>
-    <description>Search Meerkat's RSS Database...</description>
-    <name>s</name>
-    <link>http://meerkat.oreillynet.com/</link>
-    <ti:function>search</ti:function>
-    <ti:inputType>regex</ti:inputType>
-  </textinput>
-
-</rdf:RDF>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/rss2sample.xml b/plugins/FeedSub/extlib/XML/Feed/samples/rss2sample.xml
deleted file mode 100755 (executable)
index 53483cc..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>\r
-<rss version="2.0" xmlns:content="http://purl.org/rss/1.0.modules/content/">\r
-   <channel>\r
-      <title>Liftoff News</title>\r
-      <link>http://liftoff.msfc.nasa.gov/</link>\r
-      <description>Liftoff to Space Exploration.</description>\r
-      <language>en-us</language>\r
-      <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>\r
-      <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>\r
-      <docs>http://blogs.law.harvard.edu/tech/rss</docs>\r
-      <generator>Weblog Editor 2.0</generator>\r
-      <managingEditor>editor@example.com</managingEditor>\r
-      <webMaster>webmaster@example.com</webMaster>\r
-      <item>\r
-         <title>Star City</title>\r
-         <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>\r
-         <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &lt;a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm"&gt;Star City&lt;/a&gt;.</description>\r
-         <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>\r
-         <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>\r
-      </item>\r
-      <item>\r
-         <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a &lt;a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm"&gt;partial eclipse of the Sun&lt;/a&gt; on Saturday, May 31st.</description>\r
-         <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>\r
-         <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>\r
-      </item>\r
-      <item>\r
-         <title>The Engine That Does More</title>\r
-         <link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>\r
-         <description>Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly.  The proposed VASIMR engine would do that.</description>\r
-         <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>\r
-         <guid>http://liftoff.msfc.nasa.gov/2003/05/27.html#item571</guid>\r
-                <content:encoded><![CDATA[<p>Test content</p>]]></content:encoded>\r
-      </item>\r
-      <item>\r
-         <title>Astronauts' Dirty Laundry</title>\r
-         <link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>\r
-         <description>Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them.  Instead, astronauts have other options.</description>\r
-         <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>\r
-         <guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>\r
-      </item>\r
-   </channel>\r
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/sixapart-jp.xml b/plugins/FeedSub/extlib/XML/Feed/samples/sixapart-jp.xml
deleted file mode 100755 (executable)
index f8a04bb..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0">
-<channel>
-<title>Six Apart - News</title>
-<link>http://www.sixapart.jp/</link>
-<description></description>
-<language>ja</language>
-<copyright>Copyright 2005</copyright>
-<lastBuildDate>Fri, 07 Oct 2005 19:09:34 +0900</lastBuildDate>
-<generator>http://www.movabletype.org/?v=3.2-ja</generator>
-<docs>http://blogs.law.harvard.edu/tech/rss</docs> 
-
-<item>
-<title>ファイブ・ディーが、Movable Typeでブログプロモーションをスタート</title>
-<description><![CDATA[<p><img alt="MIYAZAWAblog_banner.jpg" src="http://www.sixapart.jp/MIYAZAWAblog_banner.jpg" width="200" height="88" align="right" /><br />
-ファイブ・ディーは、Movable Typeで構築したプロモーション ブログ『宮沢和史 中南米ツアーblog Latin America 2005』を開設しました。</p>
-
-<p>9月21日に開設されたこのブログは、ブラジル、ホンジュラス、ニカラグア、メキシコ、キューバの5か国を巡る「Latin America 2005」ツアーに合わせ、そのツアーの模様を同行マネージャーがレポートしていきます。<br />
-さらに今月2日からは宮沢和史自身が日々録音した声をPodcastingするという点でも、ブログを使ったユニークなプロモーションとなっています。</p>
-
-<p><a href="http://www.five-d.co.jp/miyazawa/jp/blog/la2005/">「宮沢和史 中南米ツアーblog Latin America 2005」</a></p>
-
-<p>※シックス・アパートではこうしたブログを使ったプロモーションに最適な製品をご用意しております。<br />
-<ul><li><a href="/movabletype/">Movable Type</a><br />
-<li><a href="/typepad/typepad_promotion.html">TypePad Promotion</a><br />
-</ul></p>]]></description>
-<link>http://www.sixapart.jp/news/2005/10/07-1909.html</link>
-<guid>http://www.sixapart.jp/news/2005/10/07-1909.html</guid>
-<category>news</category>
-<pubDate>Fri, 07 Oct 2005 19:09:34 +0900</pubDate>
-</item>
-<item>
-<title>Movable Type 3.2日本語版の提供を開始</title>
-<description><![CDATA[<p><img alt="Movable Type Logo" src="/images/mt3-logo-small.gif" width="151" height="37"/></p>
-<p>シックス・アパートは、Movable Type 3.2日本語版の提供を開始いたしました。<br />
-ベータテストにご協力いただいた多くの皆様に、スタッフ一同、心から感謝いたします。</p>
-<p>製品概要など、詳しくは<a href="http://www.sixapart.jp/press_releases/2005/09/29-1529.html" title="Six Apart - News: シックス・アパートが、スパム対策強化の「Movable Type 3.2 日本語版」を提供開始">プレスリリース</a>をご参照下さい。</p>
-<p>ご購入のご検討は、<a href="http://www.sixapart.jp/movabletype/purchase-mt.html">Movable Typeのご購入</a>からどうぞ。</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/29-1530.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/29-1530.html</guid>
-<category>news</category>
-<pubDate>Thu, 29 Sep 2005 15:30:00 +0900</pubDate>
-</item>
-<item>
-<title>シックス・アパートが、スパム対策強化の「Movable Type 3.2 日本語版」を提供開始</title>
-<description><![CDATA[<p><プレスリリース資料></p>
-<ul>
-  <li><a href="http://www.sixapart.jp/sixapart20050929.pdf">印刷用(PDF版)</a></li>
-</ul>
-<p><strong>シックス・アパートが、スパム対策強化の「Movable Type 3.2 日本語版」を提供開始 ~ スパムの自動判別機能や新ユーザー・インターフェースで、運用管理の機能を強化 ~</strong></p>
-<p>2005年9月29日<br />
-シックス・アパート株式会社</p>
-<p>ブログ・ソフトウェア大手のシックス・アパート株式会社(本社:東京都港区、代表取締役:関 信浩)は、「Movable Type(ムーバブル・タイプ) 3.2 日本語版」(URL:<a href="http://www.sixapart.jp/movabletype/">http://www.sixapart.jp/movabletype/</a>)を9月29日より提供開始いたします。</p>]]></description>
-<link>http://www.sixapart.jp/press_releases/2005/09/29-1529.html</link>
-<guid>http://www.sixapart.jp/press_releases/2005/09/29-1529.html</guid>
-<category>Press Releases</category>
-<pubDate>Thu, 29 Sep 2005 15:29:00 +0900</pubDate>
-</item>
-<item>
-<title>スタッフを募集しています</title>
-<description><![CDATA[<p>シックス・アパートはMovable TypeやTypePadの開発エンジニアなど、スタッフを広く募集しています。具体的な募集職種は次の通りです。</p>
-
-<ul>
-<li><a href="http://www.sixapart.jp/jobs/2005/09/13-0007.html">Movable Type開発エンジニア</a></li>
-<li><a href="http://www.sixapart.jp/jobs/2005/09/13-0004.html">TypePad開発エンジニア</a></li>
-<li><a href="http://www.sixapart.jp/jobs/2005/09/13-0003.html">カスタマーサポート・ディレクター</a></li>
-<li><a href="http://www.sixapart.jp/jobs/2005/09/13-0002.html">マーケティング・広報アシスタント</a></li>
-<li><a href="http://www.sixapart.jp/jobs/2005/09/13-0001.html">開発アシスタント</a></li>
-</ul>
-
-<p>拡大を続ける、日本のブログ市場を積極的にリードする人材を、シックス・アパートは募集しています。上記以外の職種につきましても、お気軽にお問い合わせください。詳しい募集要項や応募方法については、<a href="/jobs/">求人情報のページ</a>をご覧ください。<br />
-</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/27-0906.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/27-0906.html</guid>
-<category>news</category>
-<pubDate>Tue, 27 Sep 2005 09:06:10 +0900</pubDate>
-</item>
-<item>
-<title>サイト接続不具合に関するお詫びと復旧のお知らせ</title>
-<description><![CDATA[<p>9月24日(土)の14:45ごろから、同日18:30ごろまで、シックス・アパート社のウェブサイトが不安定になっており、断続的に接続できない不具合が発生しておりました。このため、この期間中にウェブサイトの閲覧や製品のダウンロードができませんでした。</p>
-
-<p>なお現在は不具合は解消しております。みなさまにご迷惑をおかけしたことをお詫びいたします。</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/26-1000.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/26-1000.html</guid>
-<category>news</category>
-<pubDate>Mon, 26 Sep 2005 10:00:56 +0900</pubDate>
-</item>
-<item>
-<title>企業ブログ向けパッケージ「TypePad Promotion」を新発売</title>
-<description><![CDATA[<p>シックス・アパートは、ウェブログ・サービスTypePadの企業ブログ向けパッケージ「TypePad Promotion」(タイプパッド・プロモーションの発売を10月下旬から開始いたします。</p>
-
-<p>詳しくは、<a href="http://www.sixapart.jp/press_releases/2005/09/20-1500.html" title="プレスリリース: 「TypePad Promotion」新発売">プレスリリース</a>をご参照下さい。</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/20-1500.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/20-1500.html</guid>
-<category>news</category>
-<pubDate>Tue, 20 Sep 2005 15:00:01 +0900</pubDate>
-</item>
-<item>
-<title>シックス・アパートが、法人向けブログパッケージ「TypePad Promotion」を発売</title>
-<description><![CDATA[<p><プレスリリース資料><br />
-<a href="http://www.sixapart.jp/sixapart20050920.pdf">印刷用(PDF版)</a></p>
-
-<p><br />
-<strong>シックス・アパートが、法人向けブログパッケージ「TypePad Promotion」を発売<br />
-~PR/IRサイトやキャンペーンサイトなど企業のプロモーションニーズに特化~<br />
-</strong><br />
-2005年9月20日<br />
-シックス・アパート株式会社</p>
-
-<p>ブログ・サービス大手のシックス・アパート株式会社(本社:東京都港区、代表取締役:関 信浩)は、法人向けプロモーションブログ・パッケージ「TypePad Promotion(タイプパッド・プロモーション)」(URL:<a href="http://www.sixapart.jp/typepad/typepad_promotion.html">http://www.sixapart.jp/typepad/typepad_promotion.html</a>)を10月下旬より販売開始いたします。</p>]]></description>
-<link>http://www.sixapart.jp/press_releases/2005/09/20-1500.html</link>
-<guid>http://www.sixapart.jp/press_releases/2005/09/20-1500.html</guid>
-<category>Press Releases</category>
-<pubDate>Tue, 20 Sep 2005 15:00:00 +0900</pubDate>
-</item>
-<item>
-<title>Six [days] Apart Week</title>
-<description><![CDATA[<p>本日、9月16日はSix Apartの創業者ミナ・トロットの誕生日です。<br />
-私たちの会社は、創業者のトロット夫妻(ベンとミナ)の誕生日が、6日離れていることからSix  [days] Apart →Six Apartという風に名付けられています。本日から22日までの6日間を社名の由来となる Six [days] Apart Weekとして、私たちのプロダクトをご紹介させていただきます。</p>
-
-<p>今日は、ブログ・サービスのTypePad(タイプパッド)をご紹介します。<br />
-<img alt="tp-logo.gif" src="http://www.sixapart.jp/tp-logo.gif" width="227" height="52" /></p>
-
-<p>TypePadは、米国PC MAGAZINE誌の2003年EDITOR'S CHOICE とBEST OF THE YEARに選ばれております。<br />
-<img alt="pcmag-ad.gif" src="http://www.sixapart.jp/pcmag-ad.gif" width="297" height="100" /><br />
-</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/16-1941.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/16-1941.html</guid>
-<category>news</category>
-<pubDate>Fri, 16 Sep 2005 19:41:47 +0900</pubDate>
-</item>
-<item>
-<title>ハイパーワークスが商用フォントを利用できるMovable Typeホスティングサービスを開始</title>
-<description><![CDATA[<p>ソフト開発会社の<a href="http://www.hyperwrx.co.jp/">有限会社ハイパーワークス</a>は、商用フォントなど多彩なフォントをブログ上で利用できるブログ・サービス「<a href="http://glyph-on.jp/">Glyph-On!(グリフォン) Movable Type ホスティング サービス</a>」の提供を開始しました。<br />
-</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/14-1700.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/14-1700.html</guid>
-<category>news</category>
-<pubDate>Wed, 14 Sep 2005 17:00:00 +0900</pubDate>
-</item>
-<item>
-<title>Movable Type開発エンジニアの募集</title>
-<description><![CDATA[<p>
-勤務形態: フルタイム<br />
-勤務地: 東京 (赤坂)<br />
-職種: ソフトウェア・エンジニア<br />
-職務内容: Movable Typeの開発業務全般<br />
-募集人数: 若干名
-</p>]]></description>
-<link>http://www.sixapart.jp/jobs/2005/09/13-0007.html</link>
-<guid>http://www.sixapart.jp/jobs/2005/09/13-0007.html</guid>
-<category>Jobs</category>
-<pubDate>Tue, 13 Sep 2005 00:07:00 +0900</pubDate>
-</item>
-<item>
-<title>TypePad開発エンジニアの募集</title>
-<description><![CDATA[<p>
-勤務形態: フルタイム<br />
-勤務地: 東京 (赤坂)<br />
-職種: アプリケーション・エンジニア<br />
-職務内容: TypePadのカスタマイズ、周辺開発<br />
-募集人数: 若干名
-</p>]]></description>
-<link>http://www.sixapart.jp/jobs/2005/09/13-0004.html</link>
-<guid>http://www.sixapart.jp/jobs/2005/09/13-0004.html</guid>
-<category>Jobs</category>
-<pubDate>Tue, 13 Sep 2005 00:04:00 +0900</pubDate>
-</item>
-<item>
-<title>カスタマーサポート・ディレクターの募集</title>
-<description><![CDATA[<p>勤務形態: フルタイム<br />
-勤務地: 東京(赤坂)<br />
-職種: カスタマーサポート・ディレクター<br />
-職務内容: TypePadやMovable Typeのカスタマーサポート業務の統括<br />
-募集人数: 若干名
-</p>
-]]></description>
-<link>http://www.sixapart.jp/jobs/2005/09/13-0003.html</link>
-<guid>http://www.sixapart.jp/jobs/2005/09/13-0003.html</guid>
-<category>Jobs</category>
-<pubDate>Tue, 13 Sep 2005 00:03:30 +0900</pubDate>
-</item>
-<item>
-<title>アルバイト(マーケティング・広報アシスタント)の募集</title>
-<description><![CDATA[<p>勤務形態: アルバイト<br />
-勤務地: 東京(港区)<br />
-職種:マーケティング・PRのアシスタント業務<br />
-募集人数: 若干名<br />
-時給:1000円~(但し、試用期間終了後に応相談)。交通費支給<br />
-時間:平日10時30分~18時30分まで。週3日以上(応相談)<br />
-</p>]]></description>
-<link>http://www.sixapart.jp/jobs/2005/09/13-0002.html</link>
-<guid>http://www.sixapart.jp/jobs/2005/09/13-0002.html</guid>
-<category>Jobs</category>
-<pubDate>Tue, 13 Sep 2005 00:02:00 +0900</pubDate>
-</item>
-<item>
-<title>アルバイト(開発アシスタント)の募集</title>
-<description><![CDATA[<p>勤務形態: アルバイト<br />
-勤務地: 東京(港区)<br />
-職種: アプリケーション開発のアシスタント業務<br />
-募集人数: 若干名<br />
-時給:1000円~(但し、試用期間終了後に応相談)。交通費支給<br />
-時間:平日10時30分~18時30分まで。週3日以上(応相談)
-</p>]]></description>
-<link>http://www.sixapart.jp/jobs/2005/09/13-0001.html</link>
-<guid>http://www.sixapart.jp/jobs/2005/09/13-0001.html</guid>
-<category>Jobs</category>
-<pubDate>Tue, 13 Sep 2005 00:01:00 +0900</pubDate>
-</item>
-<item>
-<title>TypePad Japan がバージョンアップしました。</title>
-<description><![CDATA[<p><a href="http://www.sixapart.jp/typepad/">「TypePad Japan(タイプパッドジャパン)」</a>において、本日、「TypePad 1.6 日本語版」へのバージョンアップを行いました。最新版となる「TypePad 1.6 日本語版」では、ブログデザインの機能強化、ポッドキャスティング対応、モブログ対応に加え、今回新たに大幅な容量アップが行われております。皆様、新しくなった<a href="http://www.sixapart.jp/typepad/">TypePad Japan</a>にどうぞご期待ください。</p>
-
-<p>なお、TypePadの携帯対応強化に関しましては、本日よりTypePad Japanのお客様を対象にオープン・ベータを開始しております。</p>
-
-<p>2005年9月5日発表のTypePad日本語版 1.6プレスリリースは<a href="http://www.sixapart.jp/press_releases/2005/09/05-1420.html">こちら</a>をご覧下さい。</p>]]></description>
-<link>http://www.sixapart.jp/news/2005/09/12-1953.html</link>
-<guid>http://www.sixapart.jp/news/2005/09/12-1953.html</guid>
-<category>news</category>
-<pubDate>Mon, 12 Sep 2005 19:53:07 +0900</pubDate>
-</item>
-
-
-</channel>
-</rss>
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/samples/technorati.feed b/plugins/FeedSub/extlib/XML/Feed/samples/technorati.feed
deleted file mode 100755 (executable)
index 6274a32..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0"
-    xmlns:tapi="http://api.technorati.com/dtd/tapi-002.xml">
-    <channel>
-        <title>[Technorati] Tag results for greenbelt</title>
-        <link>http://www.technorati.com/tag/greenbelt</link>
-        <description>Posts tagged with "greenbelt" on Technorati.</description>
-        <pubDate>Mon, 08 Aug 2005 15:15:08 GMT</pubDate>
-        <category domain="http://www.technorati.com/tag">greenbelt</category>
-        <tapi:inboundblogs>2</tapi:inboundblogs>
-        <tapi:inboundlinks>2</tapi:inboundlinks>
-        <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />
-        <generator>Technorati v1.0</generator>
-        <image>
-            <url>http://static.technorati.com/pix/logos/logo_reverse_sm.gif</url>
-            <title>Technorati logo</title>
-            <link>http://www.technorati.com</link>
-        </image>
-        <skipHours>
-            <hour>1</hour>
-            <hour>7</hour>
-            <hour>9</hour>
-        </skipHours>
-        <webMaster>support@technorati.com (Technorati Support)</webMaster>
-        <docs>http://blogs.law.harvad.edu/tech/rss</docs>
-        <ttl>60</ttl>
-        <item>
-            <title>Greenbelt</title>
-            <link>http://maggidawn.typepad.com/maggidawn/2005/07/greenbelt.html</link>
-            <description>So if the plan goes according to plan (!)... I'll be speaking at Greenbelt at these times: Slot 1...</description>
-            <guid isPermaLink="true">http://maggidawn.typepad.com/maggidawn/2005/07/greenbelt.html</guid>
-            <pubDate>Mon, 18 Jul 2005 02:11:42 GMT</pubDate>
-            <category>James</category>
-            <tapi:linkcreated>2005-07-11 02:08:12</tapi:linkcreated>
-            <comments>http://www.technorati.com/cosmos/search.html?url=http%3A%2F%2Fmaggidawn.typepad.com%2Fmaggidawn%2F2005%2F07%2Fgreenbelt.html</comments>
-            <tapi:inboundblogs>190</tapi:inboundblogs>
-            <tapi:inboundlinks>237</tapi:inboundlinks>
-            <source url="http://maggidawn.typepad.com/maggidawn/index.rdf">maggi dawn</source>
-        </item>
-
-        <item>
-            <title>Walking along the Greenbelt</title>
-            <link>http://pictureshomeless.blogspot.com/2005/06/walking-along-greenbelt.html</link>
-            <description>[IMG] Photo of homeless man walking near the greenbelt in Boise, Idaho Tags: photo homeless greenbelt Boise Idaho picture</description>
-            <guid isPermaLink="true">http://pictureshomeless.blogspot.com/2005/06/walking-along-greenbelt.html</guid>
-            <pubDate>Tue, 28 Jun 2005 01:41:24 GMT</pubDate>
-            <tapi:linkcreated>2005-06-26 17:24:03</tapi:linkcreated>
-            <comments>http://www.technorati.com/cosmos/search.html?url=http%3A%2F%2Fpictureshomeless.blogspot.com%2F2005%2F06%2Fwalking-along-greenbelt.html</comments>
-            <tapi:inboundblogs>2</tapi:inboundblogs>
-            <tapi:inboundlinks>2</tapi:inboundlinks>
-        </item>
-
-    </channel>
-</rss>
diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/atom.rnc b/plugins/FeedSub/extlib/XML/Feed/schemas/atom.rnc
deleted file mode 100755 (executable)
index e662d26..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-# -*- rnc -*-
-# RELAX NG Compact Syntax Grammar for the
-# Atom Format Specification Version 11
-
-namespace atom = "http://www.w3.org/2005/Atom"
-namespace xhtml = "http://www.w3.org/1999/xhtml"
-namespace s = "http://www.ascc.net/xml/schematron"
-namespace local = ""
-
-start = atomFeed | atomEntry
-
-# Common attributes
-
-atomCommonAttributes =
-   attribute xml:base { atomUri }?,
-   attribute xml:lang { atomLanguageTag }?,
-   undefinedAttribute*
-
-# Text Constructs
-
-atomPlainTextConstruct =
-   atomCommonAttributes,
-   attribute type { "text" | "html" }?,
-   text
-
-atomXHTMLTextConstruct =
-   atomCommonAttributes,
-   attribute type { "xhtml" },
-   xhtmlDiv
-
-atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
-
-# Person Construct
-
-atomPersonConstruct =
-   atomCommonAttributes,
-   (element atom:name { text }
-    & element atom:uri { atomUri }?
-    & element atom:email { atomEmailAddress }?
-    & extensionElement*)
-
-# Date Construct
-
-atomDateConstruct =
-   atomCommonAttributes,
-   xsd:dateTime
-
-# atom:feed
-
-atomFeed =
-   [
-      s:rule [
-         context = "atom:feed"
-         s:assert [
-            test = "atom:author or not(atom:entry[not(atom:author)])"
-            "An atom:feed must have an atom:author unless all "
-            ~ "of its atom:entry children have an atom:author."
-         ]
-      ]
-   ]
-   element atom:feed {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContributor*
-       & atomGenerator?
-       & atomIcon?
-       & atomId
-       & atomLink*
-       & atomLogo?
-       & atomRights?
-       & atomSubtitle?
-       & atomTitle
-       & atomUpdated
-       & extensionElement*),
-      atomEntry*
-   }
-
-# atom:entry
-
-atomEntry =
-   [
-      s:rule [
-         context = "atom:entry"
-         s:assert [
-            test = "atom:link[@rel='alternate'] "
-            ~ "or atom:link[not(@rel)] "
-            ~ "or atom:content"
-            "An atom:entry must have at least one atom:link element "
-            ~ "with a rel attribute of 'alternate' "
-            ~ "or an atom:content."
-         ]
-      ]
-      s:rule [
-         context = "atom:entry"
-         s:assert [
-            test = "atom:author or "
-            ~ "../atom:author or atom:source/atom:author"
-            "An atom:entry must have an atom:author "
-            ~ "if its feed does not."
-         ]
-      ]
-   ]
-   element atom:entry {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContent?
-       & atomContributor*
-       & atomId
-       & atomLink*
-       & atomPublished?
-       & atomRights?
-       & atomSource?
-       & atomSummary?
-       & atomTitle
-       & atomUpdated
-       & extensionElement*)
-   }
-
-# atom:content
-
-atomInlineTextContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { "text" | "html" }?,
-      (text)*
-   }
-
-atomInlineXHTMLContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { "xhtml" },
-      xhtmlDiv
-   }
-
-atomInlineOtherContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { atomMediaType }?,
-      (text|anyElement)*
-   }
-
-atomOutOfLineContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { atomMediaType }?,
-      attribute src { atomUri },
-      empty
-   }
-
-atomContent = atomInlineTextContent
- | atomInlineXHTMLContent
- | atomInlineOtherContent
- | atomOutOfLineContent
-
-# atom:author
-
-atomAuthor = element atom:author { atomPersonConstruct }
-
-# atom:category
-
-atomCategory =
-   element atom:category {
-      atomCommonAttributes,
-      attribute term { text },
-      attribute scheme { atomUri }?,
-      attribute label { text }?,
-      undefinedContent
-   }
-
-# atom:contributor
-
-atomContributor = element atom:contributor { atomPersonConstruct }
-
-# atom:generator
-
-atomGenerator = element atom:generator {
-   atomCommonAttributes,
-   attribute uri { atomUri }?,
-   attribute version { text }?,
-   text
-}
-
-# atom:icon
-
-atomIcon = element atom:icon {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:id
-
-atomId = element atom:id {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:logo
-
-atomLogo = element atom:logo {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:link
-
-atomLink =
-   element atom:link {
-      atomCommonAttributes,
-      attribute href { atomUri },
-      attribute rel { atomNCName | atomUri }?,
-      attribute type { atomMediaType }?,
-      attribute hreflang { atomLanguageTag }?,
-      attribute title { text }?,
-      attribute length { text }?,
-      undefinedContent
-   }
-
-# atom:published
-
-atomPublished = element atom:published { atomDateConstruct }
-
-# atom:rights
-
-atomRights = element atom:rights { atomTextConstruct }
-
-# atom:source
-
-atomSource =
-   element atom:source {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContributor*
-       & atomGenerator?
-       & atomIcon?
-       & atomId?
-       & atomLink*
-       & atomLogo?
-       & atomRights?
-       & atomSubtitle?
-       & atomTitle?
-       & atomUpdated?
-       & extensionElement*)
-   }
-
-# atom:subtitle
-
-atomSubtitle = element atom:subtitle { atomTextConstruct }
-
-# atom:summary
-
-atomSummary = element atom:summary { atomTextConstruct }
-
-# atom:title
-
-atomTitle = element atom:title { atomTextConstruct }
-
-# atom:updated
-
-atomUpdated = element atom:updated { atomDateConstruct }
-
-# Low-level simple types
-
-atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
-
-# Whatever a media type is, it contains at least one slash
-atomMediaType = xsd:string { pattern = ".+/.+" }
-
-# As defined in RFC 3066
-atomLanguageTag = xsd:string {
-   pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"
-}
-
-# Unconstrained; it's not entirely clear how IRI fit into
-# xsd:anyURI so let's not try to constrain it here
-atomUri = text
-
-# Whatever an email address is, it contains at least one @
-atomEmailAddress = xsd:string { pattern = ".+@.+" }
-
-# Simple Extension
-
-simpleExtensionElement =
-   element * - atom:* {
-      text
-   }
-
-# Structured Extension
-
-structuredExtensionElement =
-   element * - atom:* {
-      (attribute * { text }+,
-         (text|anyElement)*)
-    | (attribute * { text }*,
-       (text?, anyElement+, (text|anyElement)*))
-   }
-
-# Other Extensibility
-
-extensionElement =
-   simpleExtensionElement | structuredExtensionElement
-
-undefinedAttribute =
-  attribute * - (xml:base | xml:lang | local:*) { text }
-
-undefinedContent = (text|anyForeignElement)*
-
-anyElement =
-   element * {
-      (attribute * { text }
-       | text
-       | anyElement)*
-   }
-
-anyForeignElement =
-   element * - atom:* {
-      (attribute * { text }
-       | text
-       | anyElement)*
-   }
-
-# XHTML
-
-anyXHTML = element xhtml:* {
-   (attribute * { text }
-    | text
-    | anyXHTML)*
-}
-
-xhtmlDiv = element xhtml:div {
-   (attribute * { text }
-    | text
-    | anyXHTML)*
-}
-
-# EOF
\ No newline at end of file
diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/rss10.rnc b/plugins/FeedSub/extlib/XML/Feed/schemas/rss10.rnc
deleted file mode 100755 (executable)
index 7250947..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
-<!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
-<!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
-
-<grammar xmlns='http://relaxng.org/ns/structure/1.0'
-        xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
-        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
-        ns='http://purl.org/rss/1.0/'
-        datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'>
-
-    <start>
-        <element name='RDF' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-            <ref name='RDFContent'/>
-        </element>
-    </start>   
-
-    <define name='RDFContent' ns='http://purl.org/rss/1.0/'>
-        <interleave>
-            <element name='channel'>
-                <ref name='channelContent'/>
-            </element>
-            <optional>
-                <element name='image'><ref name='imageContent'/></element>
-            </optional>
-            <oneOrMore>
-                <element name='item'><ref name='itemContent'/></element>
-            </oneOrMore>
-        </interleave>
-    </define>
-
-     <define name='channelContent' combine="interleave">
-        <interleave>
-            <element name='title'><data type='string'/></element>
-            <element name='link'><data type='anyURI'/></element>
-            <element name='description'><data type='string'/></element>
-            <element name='image'>
-                <attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                    <data type='anyURI'/>
-                </attribute>
-            </element>
-            <element name='items'>
-                    <ref name='itemsContent'/>
-            </element>
-            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                <data type='anyURI'/>
-            </attribute>
-        </interleave>
-    </define>
-    
-        <define name="itemsContent">
-            <element name="Seq" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                <oneOrMore>
-                    <element name="li" ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                        <choice>
-                            <attribute name='resource'>    <!-- Why doesn't RDF/RSS1.0 ns qualify this attribute? -->
-                                <data type='anyURI'/>
-                            </attribute>
-                            <attribute name='resource' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                                <data type='anyURI'/>
-                            </attribute>
-                        </choice>
-                    </element>
-                </oneOrMore>
-            </element>
-        </define>
-        
-    <define name='imageContent'>
-        <interleave>
-            <element name='title'><data type='string'/></element>
-            <element name='link'><data type='anyURI'/></element>
-            <element name='url'><data type='anyURI'/></element>
-            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                <data type='anyURI'/>
-            </attribute>
-        </interleave>
-    </define>
-
-    <define name='itemContent'>
-        <interleave>
-            <element name='title'><data type='string'/></element>
-            <element name='link'><data type='anyURI'/></element>
-            <optional><element name='description'><data type='string'/></element></optional>
-            <ref name="anyThing"/>
-            <attribute name='about' ns='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
-                <data type='anyURI'/>
-            </attribute>
-        </interleave>
-    </define>            
-            
-
-        <define name='anyThing'>
-            <zeroOrMore>
-                <choice>
-                    <text/>
-                    <element>
-                        <anyName>
-                            <except>
-                                <nsName/>
-                            </except>
-                        </anyName>
-                        <ref name='anyThing'/>
-                        <zeroOrMore>
-                            <attribute>
-                              <anyName/>
-                            </attribute>
-                        </zeroOrMore>
-                    </element>
-                </choice>
-            </zeroOrMore>
-            </define>
-            
-</grammar>
diff --git a/plugins/FeedSub/extlib/XML/Feed/schemas/rss11.rnc b/plugins/FeedSub/extlib/XML/Feed/schemas/rss11.rnc
deleted file mode 100755 (executable)
index c863376..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  RELAX NG Compact Schema for RSS 1.1
-  Sean B. Palmer, inamidst.com
-  Christopher Schmidt, crschmidt.net
-  License: This schema is in the public domain
--->
-<grammar xmlns:rss="http://purl.org/net/rss1.1#" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ns="http://purl.org/net/rss1.1#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-  <start>
-    <ref name="Channel"/>
-  </start>
-  <define name="Channel">
-    <a:documentation>http://purl.org/net/rss1.1#Channel</a:documentation>
-    <element name="Channel">
-      <ref name="Channel.content"/>
-
-    </element>
-  </define>
-  <define name="Channel.content">
-    <optional>
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <optional>
-      <ref name="AttrXMLBase"/>
-    </optional>
-
-    <ref name="AttrRDFAbout"/>
-    <interleave>
-      <ref name="title"/>
-      <ref name="link"/>
-      <ref name="description"/>
-      <optional>
-        <ref name="image"/>
-      </optional>
-      <zeroOrMore>
-
-        <ref name="Any"/>
-      </zeroOrMore>
-      <ref name="items"/>
-    </interleave>
-  </define>
-  <define name="title">
-    <a:documentation>http://purl.org/net/rss1.1#title</a:documentation>
-    <element name="title">
-
-      <ref name="title.content"/>
-    </element>
-  </define>
-  <define name="title.content">
-    <optional>
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <text/>
-  </define>
-
-  <define name="link">
-    <a:documentation>http://purl.org/net/rss1.1#link</a:documentation>
-    <element name="link">
-      <ref name="link.content"/>
-    </element>
-  </define>
-  <define name="link.content">
-    <data type="anyURI"/>
-
-  </define>
-  <define name="description">
-    <a:documentation>http://purl.org/net/rss1.1#description</a:documentation>
-    <element name="description">
-      <ref name="description.content"/>
-    </element>
-  </define>
-  <define name="description.content">
-
-    <optional>
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <text/>
-  </define>
-  <define name="image">
-    <a:documentation>http://purl.org/net/rss1.1#image</a:documentation>
-    <element name="image">
-
-      <ref name="image.content"/>
-    </element>
-  </define>
-  <define name="image.content">
-    <optional>
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <ref name="AttrRDFResource"/>
-    <interleave>
-
-      <ref name="title"/>
-      <optional>
-        <ref name="link"/>
-      </optional>
-      <ref name="url"/>
-      <zeroOrMore>
-        <ref name="Any"/>
-      </zeroOrMore>
-    </interleave>
-
-  </define>
-  <define name="url">
-    <a:documentation>http://purl.org/net/rss1.1#url</a:documentation>
-    <element name="url">
-      <ref name="url.content"/>
-    </element>
-  </define>
-  <define name="url.content">
-
-    <data type="anyURI"/>
-  </define>
-  <define name="items">
-    <a:documentation>http://purl.org/net/rss1.1#items</a:documentation>
-    <element name="items">
-      <ref name="items.content"/>
-    </element>
-  </define>
-
-  <define name="items.content">
-    <optional>
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <ref name="AttrRDFCollection"/>
-    <zeroOrMore>
-      <ref name="item"/>
-    </zeroOrMore>
-  </define>
-
-  <define name="item">
-    <a:documentation>http://purl.org/net/rss1.1#item</a:documentation>
-    <element name="item">
-      <ref name="item.content"/>
-    </element>
-  </define>
-  <define name="item.content">
-    <optional>
-
-      <ref name="AttrXMLLang"/>
-    </optional>
-    <ref name="AttrRDFAbout"/>
-    <interleave>
-      <ref name="title"/>
-      <ref name="link"/>
-      <optional>
-        <ref name="description"/>
-      </optional>
-
-      <optional>
-        <ref name="image"/>
-      </optional>
-      <zeroOrMore>
-        <ref name="Any"/>
-      </zeroOrMore>
-    </interleave>
-  </define>
-  <define name="Any">
-
-    <a:documentation>http://purl.org/net/rss1.1#Any</a:documentation>
-    <element>
-      <anyName>
-        <except>
-          <nsName/>
-        </except>
-      </anyName>
-      <ref name="Any.content"/>
-
-    </element>
-  </define>
-  <define name="Any.content">
-    <zeroOrMore>
-      <attribute>
-        <anyName>
-          <except>
-            <nsName/>
-            <nsName ns=""/>
-
-          </except>
-        </anyName>
-      </attribute>
-    </zeroOrMore>
-    <mixed>
-      <zeroOrMore>
-        <ref name="Any"/>
-      </zeroOrMore>
-    </mixed>
-
-  </define>
-  <define name="AttrXMLLang">
-    <attribute name="xml:lang">
-      <data type="language"/>
-    </attribute>
-  </define>
-  <define name="AttrXMLBase">
-    <attribute name="xml:base">
-      <data type="anyURI"/>
-
-    </attribute>
-  </define>
-  <define name="AttrRDFAbout">
-    <attribute name="rdf:about">
-      <data type="anyURI"/>
-    </attribute>
-  </define>
-  <define name="AttrRDFResource">
-    <attribute name="rdf:parseType">
-
-      <value>Resource</value>
-    </attribute>
-  </define>
-  <define name="AttrRDFCollection">
-    <attribute name="rdf:parseType">
-      <value>Collection</value>
-    </attribute>
-  </define>
-
-</grammar>
diff --git a/plugins/FeedSub/extlib/xml-feed-parser-bug-16416.patch b/plugins/FeedSub/extlib/xml-feed-parser-bug-16416.patch
deleted file mode 100644 (file)
index c53bd97..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/htdocs/lib/pear/XML/Feed/Parser/RSS2.php b/htdocs/lib/pear/XML/Feed/Parser/RSS2.php
-index c5d79d1..308a4ab 100644
---- a/htdocs/lib/pear/XML/Feed/Parser/RSS2.php
-+++ b/htdocs/lib/pear/XML/Feed/Parser/RSS2.php
-@@ -321,7 +321,8 @@ class XML_Feed_Parser_RSS2 extends XML_Feed_Parser_Type
-      */
-     function getLink($offset, $attribute = 'href', $params = array())
-     {
--        $links = $this->model->getElementsByTagName('link');
-+        $xPath = new DOMXPath($this->model);
-+        $links = $xPath->query('//link');
-         if ($links->length <= $offset) {
-             return false;
diff --git a/plugins/FeedSub/feeddiscovery.php b/plugins/FeedSub/feeddiscovery.php
deleted file mode 100644 (file)
index 35edaca..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-<?php
-/*
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * @package FeedSubPlugin
- * @maintainer Brion Vibber <brion@status.net>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-class FeedSubBadURLException extends FeedSubException
-{
-}
-
-class FeedSubBadResponseException extends FeedSubException
-{
-}
-
-class FeedSubEmptyException extends FeedSubException
-{
-}
-
-class FeedSubBadHTMLException extends FeedSubException
-{
-}
-
-class FeedSubUnrecognizedTypeException extends FeedSubException
-{
-}
-
-class FeedSubNoFeedException extends FeedSubException
-{
-}
-
-class FeedDiscovery
-{
-    public $uri;
-    public $type;
-    public $body;
-
-
-    public function feedMunger()
-    {
-        require_once 'XML/Feed/Parser.php';
-        $feed = new XML_Feed_Parser($this->body, false, false, true); // @fixme
-        return new FeedMunger($feed, $this->uri);
-    }
-
-    /**
-     * @param string $url
-     * @param bool $htmlOk
-     * @return string with validated URL
-     * @throws FeedSubBadURLException
-     * @throws FeedSubBadHtmlException
-     * @throws FeedSubNoFeedException
-     * @throws FeedSubEmptyException
-     * @throws FeedSubUnrecognizedTypeException
-     */
-    function discoverFromURL($url, $htmlOk=true)
-    {
-        try {
-            $client = new HTTPClient();
-            $response = $client->get($url);
-        } catch (HTTP_Request2_Exception $e) {
-            throw new FeedSubBadURLException($e);
-        }
-
-        if ($htmlOk) {
-            $type = $response->getHeader('Content-Type');
-            $isHtml = preg_match('!^(text/html|application/xhtml\+xml)!i', $type);
-            if ($isHtml) {
-                $target = $this->discoverFromHTML($response->getUrl(), $response->getBody());
-                if (!$target) {
-                    throw new FeedSubNoFeedException($url);
-                }
-                return $this->discoverFromURL($target, false);
-            }
-        }
-        
-        return $this->initFromResponse($response);
-    }
-    
-    function initFromResponse($response)
-    {
-        if (!$response->isOk()) {
-            throw new FeedSubBadResponseException($response->getCode());
-        }
-
-        $sourceurl = $response->getUrl();
-        $body = $response->getBody();
-        if (!$body) {
-            throw new FeedSubEmptyException($sourceurl);
-        }
-
-        $type = $response->getHeader('Content-Type');
-        if (preg_match('!^(text/xml|application/xml|application/(rss|atom)\+xml)!i', $type)) {
-            $this->uri = $sourceurl;
-            $this->type = $type;
-            $this->body = $body;
-            return true;
-        } else {
-            common_log(LOG_WARNING, "Unrecognized feed type $type for $sourceurl");
-            throw new FeedSubUnrecognizedTypeException($type);
-        }
-    }
-
-    /**
-     * @param string $url source URL, used to resolve relative links
-     * @param string $body HTML body text
-     * @return mixed string with URL or false if no target found
-     */
-    function discoverFromHTML($url, $body)
-    {
-        // DOMDocument::loadHTML may throw warnings on unrecognized elements.
-        $old = error_reporting(error_reporting() & ~E_WARNING);
-        $dom = new DOMDocument();
-        $ok = $dom->loadHTML($body);
-        error_reporting($old);
-
-        if (!$ok) {
-            throw new FeedSubBadHtmlException();
-        }
-
-        // Autodiscovery links may be relative to the page's URL or <base href>
-        $base = false;
-        $nodes = $dom->getElementsByTagName('base');
-        for ($i = 0; $i < $nodes->length; $i++) {
-            $node = $nodes->item($i);
-            if ($node->hasAttributes()) {
-                $href = $node->attributes->getNamedItem('href');
-                if ($href) {
-                    $base = trim($href->value);
-                }
-            }
-        }
-        if ($base) {
-            $base = $this->resolveURI($base, $url);
-        } else {
-            $base = $url;
-        }
-
-        // Ok... now on to the links!
-        // @fixme merge with the munger link checks
-        $nodes = $dom->getElementsByTagName('link');
-        for ($i = 0; $i < $nodes->length; $i++) {
-            $node = $nodes->item($i);
-            if ($node->hasAttributes()) {
-                $rel = $node->attributes->getNamedItem('rel');
-                $type = $node->attributes->getNamedItem('type');
-                $href = $node->attributes->getNamedItem('href');
-                if ($rel && $type && $href) {
-                    $rel = trim($rel->value);
-                    $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);
-                    }
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Resolve a possibly relative URL against some absolute base URL
-     * @param string $rel relative or absolute URL
-     * @param string $base absolute URL
-     * @return string absolute URL, or original URL if could not be resolved.
-     */
-    function resolveURI($rel, $base)
-    {
-        require_once "Net/URL2.php";
-        try {
-            $relUrl = new Net_URL2($rel);
-            if ($relUrl->isAbsolute()) {
-                return $rel;
-            }
-            $baseUrl = new Net_URL2($base);
-            $absUrl = $baseUrl->resolve($relUrl);
-            return $absUrl->getURL();
-        } catch (Exception $e) {
-            common_log(LOG_WARNING, 'Unable to resolve relative link "' .
-                $rel . '" against base "' . $base . '": ' . $e->getMessage());
-            return $rel;
-        }
-    }
-}
diff --git a/plugins/FeedSub/feedinfo.php b/plugins/FeedSub/feedinfo.php
deleted file mode 100644 (file)
index b166bd6..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-
-/*
-
-Subscription flow:
-
-    $feedinfo->subscribe()
-        generate random verification token
-            save to verify_token
-        sends a sub request to the hub...
-    
-    feedsub/callback
-        hub sends confirmation back to us via GET
-        We verify the request, then echo back the challenge.
-        On our end, we save the time we subscribed and the lease expiration
-    
-    feedsub/callback
-        hub sends us updates via POST
-        ?
-    
-*/
-
-class FeedDBException extends FeedSubException
-{
-    public $obj;
-
-    function __construct($obj)
-    {
-        parent::__construct('Database insert failure');
-        $this->obj = $obj;
-    }
-}
-
-class Feedinfo extends Memcached_DataObject
-{
-    public $__table = 'feedinfo';
-
-    public $id;
-    public $profile_id;
-
-    public $feeduri;
-    public $homeuri;
-    public $huburi;
-
-    // PuSH subscription data
-    public $verify_token;
-    public $sub_start;
-    public $sub_end;
-
-    public $created;
-    public $lastupdate;
-
-
-    public /*static*/ function staticGet($k, $v=null)
-    {
-        return parent::staticGet(__CLASS__, $k, $v);
-    }
-
-    /**
-     * return table definition for DB_DataObject
-     *
-     * DB_DataObject needs to know something about the table to manipulate
-     * instances. This method provides all the DB_DataObject needs to know.
-     *
-     * @return array array of column definitions
-     */
-
-    function table()
-    {
-        return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'feeduri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'homeuri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'huburi' =>  DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'verify_token' => DB_DATAOBJECT_STR,
-                     'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-                     'sub_end' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-                     'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
-                     'lastupdate' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
-    }
-    
-    static function schemaDef()
-    {
-        return array(new ColumnDef('id', 'integer',
-                                   /*size*/ null,
-                                   /*nullable*/ false,
-                                   /*key*/ 'PRI',
-                                   /*default*/ '0',
-                                   /*extra*/ null,
-                                   /*auto_increment*/ true),
-                     new ColumnDef('profile_id', 'integer',
-                                   null, false),
-                     new ColumnDef('feeduri', 'varchar',
-                                   255, false, 'UNI'),
-                     new ColumnDef('homeuri', 'varchar',
-                                   255, false),
-                     new ColumnDef('huburi', 'varchar',
-                                   255, false),
-                     new ColumnDef('verify_token', 'varchar',
-                                   32, true),
-                     new ColumnDef('sub_start', 'datetime',
-                                   null, true),
-                     new ColumnDef('sub_end', 'datetime',
-                                   null, true),
-                     new ColumnDef('created', 'datetime',
-                                   null, false),
-                     new ColumnDef('lastupdate', 'datetime',
-                                   null, false));
-    }
-
-    /**
-     * return key definitions for DB_DataObject
-     *
-     * DB_DataObject needs to know about keys that the table has; this function
-     * defines them.
-     *
-     * @return array key definitions
-     */
-
-    function keys()
-    {
-        return array('id' => 'P'); //?
-    }
-
-    /**
-     * return key definitions for Memcached_DataObject
-     *
-     * Our caching system uses the same key definitions, but uses a different
-     * method to get them.
-     *
-     * @return array key definitions
-     */
-
-    function keyTypes()
-    {
-        return $this->keys();
-    }
-
-    /**
-     * Fetch the StatusNet-side profile for this feed
-     * @return Profile
-     */
-    public function getProfile()
-    {
-        return Profile::staticGet('id', $this->profile_id);
-    }
-
-    /**
-     * @param FeedMunger $munger
-     * @return Feedinfo
-     */
-    public static function ensureProfile($munger)
-    {
-        $feedinfo = $munger->feedinfo();
-
-        $current = self::staticGet('feeduri', $feedinfo->feeduri);
-        if ($current) {
-            // @fixme we should probably update info as necessary
-            return $current;
-        }
-
-        $feedinfo->query('BEGIN');
-
-        try {
-            $profile = $munger->profile();
-            $result = $profile->insert();
-            if (empty($result)) {
-                throw new FeedDBException($profile);
-            }
-
-            $feedinfo->profile_id = $profile->id;
-            $result = $feedinfo->insert();
-            if (empty($result)) {
-                throw new FeedDBException($feedinfo);
-            }
-
-            $feedinfo->query('COMMIT');
-        } catch (FeedDBException $e) {
-            common_log_db_error($e->obj, 'INSERT', __FILE__);
-            $feedinfo->query('ROLLBACK');
-            return false;
-        }
-        return $feedinfo;
-    }
-
-    /**
-     * Send a subscription request to the hub for this feed.
-     * The hub will later send us a confirmation POST to /feedsub/callback.
-     *
-     * @return bool true on success, false on failure
-     */
-    public function subscribe()
-    {
-        // @fixme use the verification token
-        #$token = md5(mt_rand() . ':' . $this->feeduri);
-        #$this->verify_token = $token;
-        #$this->update(); // @fixme
-        
-        try {
-            $callback = common_local_url('feedsubcallback', array('feed' => $this->id));
-            $headers = array('Content-Type: application/x-www-form-urlencoded');
-            $post = array('hub.mode' => 'subscribe',
-                          'hub.callback' => $callback,
-                          'hub.verify' => 'async',
-                          //'hub.verify_token' => $token,
-                          //'hub.lease_seconds' => 0,
-                          'hub.topic' => $this->feeduri);
-            $client = new HTTPClient();
-            $response = $client->post($this->huburi, $headers, $post);
-            if ($response->getStatus() >= 200 && $response->getStatus() < 300) {
-                common_log(LOG_INFO, __METHOD__ . ': sub req ok');
-                return true;
-            } else {
-                common_log(LOG_INFO, __METHOD__ . ': sub req failed');
-                return false;
-            }
-        } catch (Exception $e) {
-            // wtf!
-            common_log(LOG_ERR, __METHOD__ . ": error \"{$e->getMessage()}\" hitting hub $this->huburi subscribing to $this->feeduri");
-            return false;
-        }
-    }
-
-    /**
-     * Read and post notices for updates from the feed.
-     * Currently assumes that all items in the feed are new,
-     * coming from a PuSH hub.
-     *
-     * @param string $xml source of Atom or RSS feed
-     */
-    public function postUpdates($xml)
-    {
-        common_log(LOG_INFO, __METHOD__ . ": packet for \"$this->feeduri\"! $xml");
-        require_once "XML/Feed/Parser.php";
-        $feed = new XML_Feed_Parser($xml, false, false, true);
-        $munger = new FeedMunger($feed);
-        
-        $hits = 0;
-        foreach ($feed as $index => $entry) {
-            // @fixme this might sort in wrong order if we get multiple updates
-            
-            $notice = $munger->notice($index);
-            $notice->profile_id = $this->profile_id;
-            
-            // Double-check for oldies
-            // @fixme this could explode horribly for multiple feeds on a blog. sigh
-            $dupe = new Notice();
-            $dupe->uri = $notice->uri;
-            $dupe->find();
-            if ($dupe->fetch()) {
-                common_log(LOG_WARNING, __METHOD__ . ": tried to save dupe notice for entry {$notice->uri} of feed {$this->feeduri}");
-                continue;
-            }
-            
-            if (Event::handle('StartNoticeSave', array(&$notice))) {
-                $id = $notice->insert();
-                Event::handle('EndNoticeSave', array($notice));
-            }
-            $notice->addToInboxes();
-
-            common_log(LOG_INFO, __METHOD__ . ": saved notice {$notice->id} for entry $index of update to \"{$this->feeduri}\"");
-            $hits++;
-        }
-        if ($hits == 0) {
-            common_log(LOG_INFO, __METHOD__ . ": no updates in packet for \"$this->feeduri\"! $xml");
-        }
-    }
-}
diff --git a/plugins/FeedSub/feedinfo.sql b/plugins/FeedSub/feedinfo.sql
deleted file mode 100644 (file)
index e9b53d2..0000000
+++ /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/FeedSub/feedmunger.php b/plugins/FeedSub/feedmunger.php
deleted file mode 100644 (file)
index f3618b8..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-<?php
-/*
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * @package FeedSubPlugin
- * @maintainer Brion Vibber <brion@status.net>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-class FeedSubPreviewNotice extends Notice
-{
-    protected $fetched = true;
-
-    function __construct($profile)
-    {
-        //parent::__construct(); // uhhh?
-        $this->profile = $profile;
-    }
-    
-    function getProfile()
-    {
-        return $this->profile;
-    }
-    
-    function find()
-    {
-        return true;
-    }
-    
-    function fetch()
-    {
-        $got = $this->fetched;
-        $this->fetched = false;
-        return $got;
-    }
-}
-
-class FeedSubPreviewProfile extends Profile
-{
-    function getAvatar($width, $height=null)
-    {
-        return new FeedSubPreviewAvatar($width, $height);
-    }
-}
-
-class FeedSubPreviewAvatar extends Avatar
-{
-    function displayUrl() {
-        return common_path('plugins/FeedSub/images/48px-Feed-icon.svg.png');
-    }
-}
-
-class FeedMunger
-{
-    /**
-     * @param XML_Feed_Parser $feed
-     */
-    function __construct($feed, $url=null)
-    {
-        $this->feed = $feed;
-        $this->url = $url;
-    }
-    
-    function feedinfo()
-    {
-        $feedinfo = new Feedinfo();
-        $feedinfo->feeduri = $this->url;
-        $feedinfo->homeuri = $this->feed->link;
-        $feedinfo->huburi = $this->getHubLink();
-        return $feedinfo;
-    }
-
-    function getAtomLink($item, $attribs=array())
-    {
-        // XML_Feed_Parser gets confused by multiple <link> elements.
-        $dom = $item->model;
-
-        // Note that RSS feeds would embed an <atom:link> so this should work for both.
-        /// http://code.google.com/p/pubsubhubbub/wiki/RssFeeds
-        // <link rel='hub' href='http://pubsubhubbub.appspot.com/'/>
-        $links = $dom->getElementsByTagNameNS('http://www.w3.org/2005/Atom', 'link');
-        for ($i = 0; $i < $links->length; $i++) {
-            $node = $links->item($i);
-            if ($node->hasAttributes()) {
-                $href = $node->attributes->getNamedItem('href');
-                if ($href) {
-                    $matches = 0;
-                    foreach ($attribs as $name => $val) {
-                        $attrib = $node->attributes->getNamedItem($name);
-                        if ($attrib && $attrib->value == $val) {
-                            $matches++;
-                        }
-                    }
-                    if ($matches == count($attribs)) {
-                        return $href->value;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    function getRssLink($item)
-    {
-        // XML_Feed_Parser gets confused by multiple <link> elements.
-        $dom = $item->model;
-
-        // Note that RSS feeds would embed an <atom:link> so this should work for both.
-        /// http://code.google.com/p/pubsubhubbub/wiki/RssFeeds
-        // <link rel='hub' href='http://pubsubhubbub.appspot.com/'/>
-        $links = $dom->getElementsByTagName('link');
-        for ($i = 0; $i < $links->length; $i++) {
-            $node = $links->item($i);
-            if (!$node->hasAttributes()) {
-                return $node->textContent;
-            }
-        }
-        return false;
-    }
-
-    function getAltLink($item)
-    {
-        // Check for an atom link...
-        $link = $this->getAtomLink($item, array('rel' => 'alternate', 'type' => 'text/html'));
-        if (!$link) {
-            $link = $this->getRssLink($item);
-        }
-        return $link;
-    }
-
-    function getHubLink()
-    {
-        return $this->getAtomLink($this->feed, array('rel' => 'hub'));
-    }
-
-    function profile($preview=false)
-    {
-        if ($preview) {
-            $profile = new FeedSubPreviewProfile();
-        } else {
-            $profile = new Profile();
-        }
-        
-        // @todo validate/normalize nick?
-        $profile->nickname   = $this->feed->title;
-        $profile->fullname   = $this->feed->title;
-        $profile->homepage   = $this->getAltLink($this->feed);
-        $profile->bio        = $this->feed->description;
-        $profile->profileurl = $this->getAltLink($this->feed);
-        
-        // @todo tags from categories
-        // @todo lat/lon/location?
-
-        return $profile;
-    }
-
-    function notice($index=1, $preview=false)
-    {
-        $entry = $this->feed->getEntryByOffset($index);
-        if (!$entry) {
-            return null;
-        }
-        
-        if ($preview) {
-            $notice = new FeedSubPreviewNotice($this->profile(true));
-            $notice->id = -1;
-        } else {
-            $notice = new Notice();
-        }
-
-        $link = $this->getAltLink($entry);
-        $notice->uri = $link;
-        $notice->url = $link;
-        $notice->content = $this->noticeFromEntry($entry);
-        $notice->rendered = common_render_content($notice->content, $notice);
-        $notice->created = common_sql_date($entry->updated); // @fixme
-        $notice->is_local = Notice::GATEWAY;
-        $notice->source = 'feed';
-        
-        return $notice;
-    }
-
-    /**
-     * @param XML_Feed_Type $entry
-     * @return string notice text, within post size limit
-     */
-    function noticeFromEntry($entry)
-    {
-        $title = $entry->title;
-        $link = $entry->link;
-        
-        // @todo We can get <category> 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);
-            $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);
-        }
-        
-        return $out;
-    }
-}
diff --git a/plugins/FeedSub/images/24px-Feed-icon.svg.png b/plugins/FeedSub/images/24px-Feed-icon.svg.png
deleted file mode 100644 (file)
index 3172258..0000000
Binary files a/plugins/FeedSub/images/24px-Feed-icon.svg.png and /dev/null differ
diff --git a/plugins/FeedSub/images/48px-Feed-icon.svg.png b/plugins/FeedSub/images/48px-Feed-icon.svg.png
deleted file mode 100644 (file)
index bd1da4f..0000000
Binary files a/plugins/FeedSub/images/48px-Feed-icon.svg.png and /dev/null differ
diff --git a/plugins/FeedSub/images/96px-Feed-icon.svg.png b/plugins/FeedSub/images/96px-Feed-icon.svg.png
deleted file mode 100644 (file)
index bf16571..0000000
Binary files a/plugins/FeedSub/images/96px-Feed-icon.svg.png and /dev/null differ
diff --git a/plugins/FeedSub/images/README b/plugins/FeedSub/images/README
deleted file mode 100644 (file)
index d9379c2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Feed icon rendered from http://commons.wikimedia.org/wiki/File:Feed-icon.svg
-
-Originally distributed by the Mozilla Foundation under a MPL/GPL/LGPL tri-license:
-
-http://www.mozilla.org/MPL/boilerplate-1.1/mpl-tri-license-html
diff --git a/plugins/FeedSub/locale/FeedSub.po b/plugins/FeedSub/locale/FeedSub.po
deleted file mode 100644 (file)
index dedc018..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-07 20:38-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: tests/gettext-speedtest.php:57 FeedSubPlugin.php:76
-msgid "Feeds"
-msgstr ""
-
-#: FeedSubPlugin.php:77
-msgid "Feed subscription options"
-msgstr ""
-
-#: feedmunger.php:215
-#, php-format
-msgid "New post: \"%1$s\" %2$s"
-msgstr ""
-
-#: actions/feedsubsettings.php:41
-msgid "Feed subscriptions"
-msgstr ""
-
-#: actions/feedsubsettings.php:52
-msgid ""
-"You can subscribe to feeds from other sites; updates will appear in your "
-"personal timeline."
-msgstr ""
-
-#: actions/feedsubsettings.php:96
-msgid "Subscribe"
-msgstr ""
-
-#: actions/feedsubsettings.php:98
-msgid "Continue"
-msgstr ""
-
-#: actions/feedsubsettings.php:151
-msgid "Empty feed URL!"
-msgstr ""
-
-#: actions/feedsubsettings.php:161
-msgid "Invalid URL or could not reach server."
-msgstr ""
-
-#: actions/feedsubsettings.php:164
-msgid "Cannot read feed; server returned error."
-msgstr ""
-
-#: actions/feedsubsettings.php:167
-msgid "Cannot read feed; server returned an empty page."
-msgstr ""
-
-#: actions/feedsubsettings.php:170
-msgid "Bad HTML, could not find feed link."
-msgstr ""
-
-#: actions/feedsubsettings.php:173
-msgid "Could not find a feed linked from this URL."
-msgstr ""
-
-#: actions/feedsubsettings.php:176
-msgid "Not a recognized feed type."
-msgstr ""
-
-#: actions/feedsubsettings.php:180
-msgid "Bad feed URL."
-msgstr ""
-
-#: actions/feedsubsettings.php:188
-msgid "Feed is not PuSH-enabled; cannot subscribe."
-msgstr ""
-
-#: actions/feedsubsettings.php:208
-msgid "Feed subscription failed! Bad response from hub."
-msgstr ""
-
-#: actions/feedsubsettings.php:218
-msgid "Already subscribed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:220
-msgid "Feed subscribed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:222
-msgid "Feed subscription failed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:231
-msgid "Previewing feed:"
-msgstr ""
diff --git a/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po b/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po
deleted file mode 100644 (file)
index f17dfa5..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-07 14:14-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: FeedSubPlugin.php:77
-msgid "Feeds"
-msgstr "Flux"
-
-#: FeedSubPlugin.php:78
-msgid "Feed subscription options"
-msgstr "Préférences pour abonnement flux"
-
-#: feedmunger.php:215
-#, php-format
-msgid "New post: \"%1$s\" %2$s"
-msgstr "Nouveau: \"%1$s\" %2$s"
-
-#: actions/feedsubsettings.php:41
-msgid "Feed subscriptions"
-msgstr "Abonnements aux fluxes"
-
-#: actions/feedsubsettings.php:52
-msgid ""
-"You can subscribe to feeds from other sites; updates will appear in your "
-"personal timeline."
-msgstr ""
-"Abonner aux fluxes RSS ou Atom des autres sites web; les temps se trouverair"
-"en votre flux personnel."
-
-#: actions/feedsubsettings.php:96
-msgid "Subscribe"
-msgstr "Abonner"
-
-#: actions/feedsubsettings.php:98
-msgid "Continue"
-msgstr "Prochaine"
-
-#: actions/feedsubsettings.php:151
-msgid "Empty feed URL!"
-msgstr ""
-
-#: actions/feedsubsettings.php:161
-msgid "Invalid URL or could not reach server."
-msgstr ""
-
-#: actions/feedsubsettings.php:164
-msgid "Cannot read feed; server returned error."
-msgstr ""
-
-#: actions/feedsubsettings.php:167
-msgid "Cannot read feed; server returned an empty page."
-msgstr ""
-
-#: actions/feedsubsettings.php:170
-msgid "Bad HTML, could not find feed link."
-msgstr ""
-
-#: actions/feedsubsettings.php:173
-msgid "Could not find a feed linked from this URL."
-msgstr ""
-
-#: actions/feedsubsettings.php:176
-msgid "Not a recognized feed type."
-msgstr ""
-
-#: actions/feedsubsettings.php:180
-msgid "Bad feed URL."
-msgstr ""
-
-#: actions/feedsubsettings.php:188
-msgid "Feed is not PuSH-enabled; cannot subscribe."
-msgstr ""
-
-#: actions/feedsubsettings.php:208
-msgid "Feed subscription failed! Bad response from hub."
-msgstr ""
-
-#: actions/feedsubsettings.php:218
-msgid "Already subscribed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:220
-msgid "Feed subscribed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:222
-msgid "Feed subscription failed!"
-msgstr ""
-
-#: actions/feedsubsettings.php:231
-msgid "Previewing feed:"
-msgstr ""
diff --git a/plugins/FeedSub/tests/FeedDiscoveryTest.php b/plugins/FeedSub/tests/FeedDiscoveryTest.php
deleted file mode 100644 (file)
index 1c52497..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
-    print "This script must be run from the command line\n";
-    exit();
-}
-
-define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
-define('STATUSNET', true);
-define('LACONICA', true);
-
-require_once INSTALLDIR . '/lib/common.php';
-require_once INSTALLDIR . '/plugins/FeedSub/feedsub.php';
-
-class FeedDiscoveryTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @dataProvider provider
-     *
-     */
-    public function testProduction($url, $html, $expected)
-    {
-        $sub = new FeedDiscovery();
-        $url = $sub->discoverFromHTML($url, $html);
-        $this->assertEquals($expected, $url);
-    }
-
-    static public function provider()
-    {
-        $sampleHeader = <<<END
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head profile="http://gmpg.org/xfn/11">
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-
-<title>leŭksman  </title>
-
-<meta name="generator" content="WordPress 2.8.6" /> <!-- leave this for stats -->
-
-<link rel="stylesheet" href="http://leuksman.com/log/wp-content/themes/leuksman/style.css" type="text/css" media="screen" />
-<link rel="alternate" type="application/rss+xml" title="leŭksman RSS Feed" href="http://leuksman.com/log/feed/" />
-<link rel="pingback" href="http://leuksman.com/log/xmlrpc.php" />
-
-<meta name="viewport" content="width = 640" />
-
-<xmeta name="viewport" content="initial-scale=2.3, user-scalable=no" />
-
-<style type="text/css" media="screen">
-
-       #page { background: url("http://leuksman.com/log/wp-content/themes/leuksman/images/kubrickbg.jpg") repeat-y top; border: none; }
-
-</style>
-
-<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://leuksman.com/log/xmlrpc.php?rsd" />
-<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://leuksman.com/log/wp-includes/wlwmanifest.xml" /> 
-<link rel='index' title='leŭksman' href='http://leuksman.com/log' />
-<meta name="generator" content="WordPress 2.8.6" />
-</head>
-<body>
-</body>
-</html>
-END;
-        return array(
-                     array('http://example.com/',
-                           '<html><link rel="alternate" href="http://example.com/feed/rss" type="application/rss+xml">',
-                           'http://example.com/feed/rss'),
-                     array('http://example.com/atom',
-                           '<html><link rel="alternate" href="http://example.com/feed/atom" type="application/atom+xml">',
-                           'http://example.com/feed/atom'),
-                     array('http://example.com/empty',
-                           '<html><link rel="alternate" href="http://example.com/index.pdf" type="application/pdf">',
-                           false),
-                     array('http://example.com/tagsoup',
-                           '<body><pre><LINK rel=alternate hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
-                           'http://example.com/feed/rss'),
-                     // 'rel' attribute must be lowercase, alone per http://www.rssboard.org/rss-autodiscovery
-                     array('http://example.com/tagsoup2',
-                           '<body><pre><LINK rel=" feeders    alternate 467" hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
-                           false),
-                     array('http://example.com/tagsoup3',
-                           '<body><pre><LINK rel=ALTERNATE hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
-                           false),
-                     array('http://example.com/relative/link1',
-                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml">',
-                           'http://example.com/feed/rss'),
-                     array('http://example.com/relative/link2',
-                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml">',
-                           'http://example.com/feed/rss'),
-                     array('http://example.com/relative/link3',
-                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml">',
-                           'http://example.com/feed/rss'),
-                     array('http://example.com/base/link1',
-                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
-                           'http://target.example.com/feed/rss'),
-                     array('http://example.com/base/link2',
-                           '<html><link rel="alternate" href="feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
-                           'http://target.example.com/feed/rss'),
-                     array('http://example.com/base/link3',
-                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
-                           'http://target.example.com/feed/rss'),
-                     // Trick question! There's a <base> but no href on it
-                     array('http://example.com/relative/fauxbase',
-                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml"><base target="top">',
-                           'http://example.com/feed/rss'),
-                     // Actual WordPress blog header example
-                     array('http://leuksman.com/log/',
-                           $sampleHeader,
-                           'http://leuksman.com/log/feed/'));
-    }
-}
diff --git a/plugins/FeedSub/tests/FeedMungerTest.php b/plugins/FeedSub/tests/FeedMungerTest.php
deleted file mode 100644 (file)
index 0ce24c9..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
-    print "This script must be run from the command line\n";
-    exit();
-}
-
-define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
-define('STATUSNET', true);
-define('LACONICA', true);
-
-require_once INSTALLDIR . '/lib/common.php';
-require_once INSTALLDIR . '/plugins/FeedSub/feedsub.php';
-
-require_once 'XML/Feed/Parser.php';
-
-class FeedMungerTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @dataProvider profileProvider
-     *
-     */
-    public function testProfiles($xml, $expected)
-    {
-        $feed = new XML_Feed_Parser($xml, false, false, true);
-        
-        $munger = new FeedMunger($feed);
-        $profile = $munger->profile();
-
-        foreach ($expected as $field => $val) {
-            $this->assertEquals($expected[$field], $profile->$field, "profile->$field");
-        }
-    }
-
-    static public function profileProvider()
-    {
-        return array(
-                     array(self::samplefeed(),
-                           array('nickname' => 'leŭksman', // @todo does this need to be asciified?
-                                 'fullname' => 'leŭksman',
-                                 'bio' => 'reticula, electronica, & oddities',
-                                 'homepage' => 'http://leuksman.com/log')));
-    }
-
-    /**
-     * @dataProvider noticeProvider
-     *
-     */
-    public function testNotices($xml, $entryIndex, $expected)
-    {
-        $feed = new XML_Feed_Parser($xml, false, false, true);
-        $entry = $feed->getEntryByOffset($entryIndex);
-
-        $munger = new FeedMunger($feed);
-        $notice = $munger->noticeFromEntry($entry);
-
-        $this->assertTrue(mb_strlen($notice) <= Notice::maxContent());
-        $this->assertEquals($expected, $notice);
-    }
-
-    static public function noticeProvider()
-    {
-        return array(
-                     array('<rss version="2.0"><channel><item><title>A fairly short title</title><link>http://example.com/short/link</link></item></channel></rss>', 0,
-                           'New post: "A fairly short title" http://example.com/short/link'),
-                     // Requires URL shortening ...
-                     array('<rss version="2.0"><channel><item><title>A fairly short title</title><link>http://example.com/but/a/very/long/link/indeed/this/is/far/too/long/for/mere/humans/to/comprehend/oh/my/gosh</link></item></channel></rss>', 0,
-                           'New post: "A fairly short title" http://ur1.ca/g2o1'),
-                     array('<rss version="2.0"><channel><item><title>A fairly long title in this case, which will have to get cut down at some point alongside its very long link. Really who even makes titles this long? It\'s just ridiculous imo...</title><link>http://example.com/but/a/very/long/link/indeed/this/is/far/too/long/for/mere/humans/to/comprehend/oh/my/gosh</link></item></channel></rss>', 0,
-                           'New post: "A fairly long title in this case, which will have to get cut down at some point alongside its very long li…" http://ur1.ca/g2o1'),
-                     // Some real sample feeds
-                     array(self::samplefeed(), 0,
-                           'New post: "Compiling PHP on Snow Leopard" http://leuksman.com/log/2009/11/12/compiling-php-on-snow-leopard/'),
-                     array(self::samplefeedBlogspot(), 0,
-                           'New post: "I love posting" http://briontest.blogspot.com/2009/11/i-love-posting.html'),
-                     array(self::samplefeedBlogspot(), 1,
-                           'New post: "Hey dude" http://briontest.blogspot.com/2009/11/hey-dude.html'),
-        );
-    }
-
-    static protected function samplefeed()
-    {
-        $xml = '<' . '?xml version="1.0" encoding="UTF-8"?' . ">\n";
-        $samplefeed = $xml . <<<END
-<rss version="2.0"
-       xmlns:content="http://purl.org/rss/1.0/modules/content/"
-       xmlns:wfw="http://wellformedweb.org/CommentAPI/"
-       xmlns:dc="http://purl.org/dc/elements/1.1/"
-       xmlns:atom="http://www.w3.org/2005/Atom"
-       xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
-       xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
-       >
-
-<channel>
-       <title>leŭksman</title>
-       <atom:link href="http://leuksman.com/log/feed/" rel="self" type="application/rss+xml" />
-       <link>http://leuksman.com/log</link>
-       <description>reticula, electronica, &#38; oddities</description>
-
-       <lastBuildDate>Thu, 12 Nov 2009 17:44:42 +0000</lastBuildDate>
-       <generator>http://wordpress.org/?v=2.8.6</generator>
-       <language>en</language>
-       <sy:updatePeriod>hourly</sy:updatePeriod>
-       <sy:updateFrequency>1</sy:updateFrequency>
-                       <item>
-
-               <title>Compiling PHP on Snow Leopard</title>
-               <link>http://leuksman.com/log/2009/11/12/compiling-php-on-snow-leopard/</link>
-               <comments>http://leuksman.com/log/2009/11/12/compiling-php-on-snow-leopard/#comments</comments>
-               <pubDate>Thu, 12 Nov 2009 17:44:42 +0000</pubDate>
-               <dc:creator>brion</dc:creator>
-                               <category><![CDATA[apple]]></category>
-
-               <category><![CDATA[devel]]></category>
-
-               <guid isPermaLink="false">http://leuksman.com/log/?p=649</guid>
-               <description><![CDATA[If you&#8217;ve been having trouble compiling your own PHP installations on Mac OS X 10.6, here&#8217;s the secret to making it not suck! After running the configure script, edit the generated Makefile and make these fixes:
-
-Find the EXTRA_LIBS definition and add -lresolv to the end
-Find the EXE_EXT definition and remove .dSYM
-
-Standard make and make install [...]]]></description>
-                       <content:encoded><![CDATA[<p>If you&#8217;ve been having trouble compiling your own PHP installations on Mac OS X 10.6, here&#8217;s the secret to making it not suck! After running the configure script, edit the generated Makefile and make these fixes:</p>
-<ul>
-<li>Find the <strong>EXTRA_LIBS</strong> definition and add <strong>-lresolv</strong> to the end</li>
-<li>Find the <strong>EXE_EXT</strong> definition and remove <strong>.dSYM</strong></li>
-</ul>
-<p>Standard make and make install should work from here&#8230;</p>
-<p>For reference, here&#8217;s the whole configure line I currently use; MySQL is installed from the downloadable installer; other deps from MacPorts:</p>
-<p>&#8216;./configure&#8217; &#8216;&#8211;prefix=/opt/php52&#8242; &#8216;&#8211;with-mysql=/usr/local/mysql&#8217; &#8216;&#8211;with-zlib&#8217; &#8216;&#8211;with-bz2&#8242; &#8216;&#8211;enable-mbstring&#8217; &#8216;&#8211;enable-exif&#8217; &#8216;&#8211;enable-fastcgi&#8217; &#8216;&#8211;with-xmlrpc&#8217; &#8216;&#8211;with-xsl&#8217; &#8216;&#8211;with-readline=/opt/local&#8217; &#8211;without-iconv &#8211;with-gd &#8211;with-png-dir=/opt/local &#8211;with-jpeg-dir=/opt/local &#8211;with-curl &#8211;with-gettext=/opt/local &#8211;with-mysqli=/usr/local/mysql/bin/mysql_config &#8211;with-tidy=/opt/local &#8211;enable-pcntl &#8211;with-openssl</p>
-]]></content:encoded>
-                       <wfw:commentRss>http://leuksman.com/log/2009/11/12/compiling-php-on-snow-leopard/feed/</wfw:commentRss>
-               <slash:comments>0</slash:comments>
-               </item>
-</channel>
-</rss>
-END;
-        return $samplefeed;
-    }
-    
-    static protected function samplefeedBlogspot()
-    {
-        return <<<END
-<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7780083508531697167</id><updated>2009-11-19T12:56:11.233-08:00</updated><title type='text'>Brion's Cool Test Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://briontest.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7780083508531697167/posts/default'/><link rel='alternate' type='text/html' href='http://briontest.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>brion</name><uri>http://www.blogger.com/profile/12932299467049762017</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7780083508531697167.post-8456671879000290677</id><published>2009-11-19T12:55:00.000-08:00</published><updated>2009-11-19T12:56:11.241-08:00</updated><title type='text'>I love posting</title><content type='html'>It's pretty awesome, if you like that sort of thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7780083508531697167-8456671879000290677?l=briontest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://briontest.blogspot.com/feeds/8456671879000290677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://briontest.blogspot.com/2009/11/i-love-posting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7780083508531697167/posts/default/8456671879000290677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7780083508531697167/posts/default/8456671879000290677'/><link rel='alternate' type='text/html' href='http://briontest.blogspot.com/2009/11/i-love-posting.html' title='I love posting'/><author><name>brion</name><uri>http://www.blogger.com/profile/12932299467049762017</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05912464053145602436'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7780083508531697167.post-8202296917897346633</id><published>2009-11-18T13:52:00.001-08:00</published><updated>2009-11-18T13:52:48.444-08:00</updated><title type='text'>Hey dude</title><content type='html'>testingggggggggg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7780083508531697167-8202296917897346633?l=briontest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://briontest.blogspot.com/feeds/8202296917897346633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://briontest.blogspot.com/2009/11/hey-dude.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7780083508531697167/posts/default/8202296917897346633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7780083508531697167/posts/default/8202296917897346633'/><link rel='alternate' type='text/html' href='http://briontest.blogspot.com/2009/11/hey-dude.html' title='Hey dude'/><author><name>brion</name><uri>http://www.blogger.com/profile/12932299467049762017</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05912464053145602436'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>
-END;
-    }
-}
diff --git a/plugins/FeedSub/tests/gettext-speedtest.php b/plugins/FeedSub/tests/gettext-speedtest.php
deleted file mode 100644 (file)
index 8bbdf5e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
-    print "This script must be run from the command line\n";
-    exit();
-}
-
-define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
-define('STATUSNET', true);
-define('LACONICA', true);
-
-require_once INSTALLDIR . '/scripts/commandline.inc';
-require_once INSTALLDIR . '/extlib/php-gettext/gettext.inc';
-
-common_init_locale("en_US");
-common_init_locale('fr');
-
-
-putenv("LANG=fr");
-putenv("LANGUAGE=fr");
-setlocale('fr.utf8');
-_setlocale('fr.utf8');
-
-_bindtextdomain("statusnet", INSTALLDIR . '/locale');
-_bindtextdomain("FeedSub", INSTALLDIR . '/plugins/FeedSub/locale');
-
-$times = 10000;
-$delta = array();
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = _("Send");
-}
-$delta["_"] = array((microtime(true) - $start) / $times, $result);
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = __("Send");
-}
-$delta["__"] = array((microtime(true) - $start) / $times, $result);
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = dgettext("FeedSub", "Feeds");
-}
-$delta["dgettext"] = array((microtime(true) - $start) / $times, $result);
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = _dgettext("FeedSub", "Feeds");
-}
-$delta["_dgettext"] = array((microtime(true) - $start) / $times, $result);
-
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = _m("Feeds");
-}
-$delta["_m"] = array((microtime(true) - $start) / $times, $result);
-
-
-$start = microtime(true);
-for($i = 0; $i < $times; $i++) {
-    $result = fake("Feeds");
-}
-$delta["fake"] = array((microtime(true) - $start) / $times, $result);
-
-foreach ($delta as $func => $bits) {
-    list($time, $result) = $bits;
-    $ms = $time * 1000.0;
-    printf("%10s %2.4fms %s\n", $func, $ms, $result);
-}
-
-
-function fake($str) {
-    return $str;
-}
-
index 93a0583fe8e703527bc715066ffbf5c4c891a214..c3ca5c135928e52e9c4d5a897f2b030f227a84f1 100644 (file)
@@ -115,7 +115,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
      *
@@ -128,7 +128,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;
@@ -228,6 +228,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',
index 5c913836dccd7db6f6375e88bf24626ee596c8d2..cd2531fa727a8f3b7d4d2fd41ed645a8f3d4dc7d 100644 (file)
@@ -240,6 +240,8 @@ class MobileProfilePlugin extends WAP20Plugin
             return true;
         }
 
+        $action->cssLink('css/display.css');
+
         if (file_exists(Theme::file('css/mp-screen.css'))) {
             $action->cssLink('css/mp-screen.css', null, 'screen');
         } else {
@@ -256,6 +258,14 @@ class MobileProfilePlugin extends WAP20Plugin
     }
 
 
+    function onStartShowUAStyles($action) {
+        if (!$this->serveMobile) {
+            return true;
+        }
+
+        return false;
+    }
+
     function onStartShowHeader($action)
     {
         if (!$this->serveMobile) {
index 04fa5fb0021054e871bfd81673b2e15dd0a580eb..0fc801612be9d4848bc4318057c5ea29741d6fef 100644 (file)
@@ -1,15 +1,12 @@
 /** theme: mobile profile screen
  *
  * @package   StatusNet
- * @author Sarven Capadisli <csarven@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
  * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
  */
 
-@import url(../../theme/base/css/display.css);
-@import url(../../theme/identica/css/display.css);
-
 #wrap {
 min-width:0;
 max-width:100%;
diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php
new file mode 100644 (file)
index 0000000..7f75b7b
--- /dev/null
@@ -0,0 +1,724 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009-2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+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]+'));
+
+        // Salmon endpoint
+        $m->connect('main/salmon/user/:id',
+                    array('action' => 'usersalmon'),
+                    array('id' => '[0-9]+'));
+        $m->connect('main/salmon/group/:id',
+                    array('action' => 'groupsalmon'),
+                    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)
+    {
+        // Prepare outgoing distributions after notice save.
+        $qm->connect('ostatus', 'OStatusQueueHandler');
+
+        // Outgoing from our internal PuSH hub
+        $qm->connect('hubconf', 'HubConfQueueHandler');
+        $qm->connect('hubout', 'HubOutQueueHandler');
+
+        // Outgoing Salmon replies (when we don't need a return value)
+        $qm->connect('salmon', 'SalmonQueueHandler');
+
+        // Incoming from a foreign PuSH hub
+        $qm->connect('pushin', 'PushInQueueHandler');
+        return true;
+    }
+
+    /**
+     * Put saved notices into the queue for pubsub distribution.
+     */
+    function onStartEnqueueNotice($notice, &$transports)
+    {
+        $transports[] = 'ostatus';
+        return true;
+    }
+
+    /**
+     * Set up a PuSH hub link to our internal link for canonical timeline
+     * Atom feeds for users and groups.
+     */
+    function onStartApiAtom($feed)
+    {
+        $id = null;
+
+        if ($feed instanceof AtomUserNoticeFeed) {
+            $salmonAction = 'usersalmon';
+            $user = $feed->getUser();
+            $id   = $user->id;
+            $profile = $user->getProfile();
+            $feed->setActivitySubject($profile->asActivityNoun('subject'));
+        } else if ($feed instanceof AtomGroupNoticeFeed) {
+            $salmonAction = 'groupsalmon';
+            $group = $feed->getGroup();
+            $id = $group->id;
+            $feed->setActivitySubject($group->asActivitySubject());
+        } else {
+            return true;
+        }
+
+        if (!empty($id)) {
+            $hub = common_config('ostatus', 'hub');
+            if (empty($hub)) {
+                // Updates will be handled through our internal PuSH hub.
+                $hub = common_local_url('pushhub');
+            }
+            $feed->addLink($hub, array('rel' => 'hub'));
+
+            // Also, we'll add in the salmon link
+            $salmon = common_local_url($salmonAction, array('id' => $id));
+            $feed->addLink($salmon, array('rel' => 'salmon'));
+        }
+
+        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);
+        $map = array('activityverb' => 'activity',
+                     'activityobject' => 'activity',
+                     'activityutils' => 'activity');
+        if (isset($map[$lower])) {
+            $lower = $map[$lower];
+        }
+        $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 onStartProfileRemoteSubscribe($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('Subscribe'));
+
+            $output->elementEnd('li');
+        }
+
+        return false;
+    }
+
+    /**
+     * 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)
+    {
+    }
+
+    /**
+     *
+     */
+
+    function onEndFindMentions($sender, $text, &$mentions)
+    {
+        preg_match_all('/(?:^|\s+)@((?:\w+\.)*\w+@(?:\w+\.)*\w+(?:\w+\-\w+)*\.\w+)/',
+                       $text,
+                       $wmatches,
+                       PREG_OFFSET_CAPTURE);
+
+        foreach ($wmatches[1] as $wmatch) {
+
+            $webfinger = $wmatch[0];
+
+            $this->log(LOG_INFO, "Checking Webfinger for address '$webfinger'");
+
+            $oprofile = Ostatus_profile::ensureWebfinger($webfinger);
+
+            if (empty($oprofile)) {
+
+                $this->log(LOG_INFO, "No Ostatus_profile found for address '$webfinger'");
+
+            } else {
+
+                $this->log(LOG_INFO, "Ostatus_profile found for address '$webfinger'");
+
+                if ($oprofile->isGroup()) {
+                    continue;
+                }
+                $profile = $oprofile->localProfile();
+
+                $pos = $wmatch[1];
+                foreach ($mentions as $i => $other) {
+                    // If we share a common prefix with a local user, override it!
+                    if ($other['position'] == $pos) {
+                        unset($mentions[$i]);
+                    }
+                }
+                $mentions[] = array('mentioned' => array($profile),
+                                    'text' => $wmatch[0],
+                                    'position' => $pos,
+                                    'url' => $profile->profileurl);
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Make sure necessary tables are filled out.
+     */
+    function onCheckSchema() {
+        $schema = Schema::get();
+        $schema->ensureTable('ostatus_profile', Ostatus_profile::schemaDef());
+        $schema->ensureTable('ostatus_source', Ostatus_source::schemaDef());
+        $schema->ensureTable('feedsub', FeedSub::schemaDef());
+        $schema->ensureTable('hubsub', HubSub::schemaDef());
+        $schema->ensureTable('magicsig', Magicsig::schemaDef());
+        return true;
+    }
+
+    function onEndShowStatusNetStyles($action) {
+        $action->cssLink(common_path('plugins/OStatus/theme/base/css/ostatus.css'));
+        return true;
+    }
+
+    function onEndShowStatusNetScripts($action) {
+        $action->script(common_path('plugins/OStatus/js/ostatus.js'));
+        return true;
+    }
+
+    /**
+     * Override the "from ostatus" bit in notice lists to link to the
+     * original post and show the domain it came from.
+     *
+     * @param Notice in $notice
+     * @param string out &$name
+     * @param string out &$url
+     * @param string out &$title
+     * @return mixed hook return code
+     */
+    function onStartNoticeSourceLink($notice, &$name, &$url, &$title)
+    {
+        if ($notice->source == 'ostatus') {
+            if ($notice->url) {
+                $bits = parse_url($notice->url);
+                $domain = $bits['host'];
+                if (substr($domain, 0, 4) == 'www.') {
+                    $name = substr($domain, 4);
+                } else {
+                    $name = $domain;
+                }
+
+                $url = $notice->url;
+                $title = sprintf(_m("Sent from %s via OStatus"), $domain);
+                return false;
+            }
+        }
+    }
+
+    /**
+     * Send incoming PuSH feeds for OStatus endpoints in for processing.
+     *
+     * @param FeedSub $feedsub
+     * @param DOMDocument $feed
+     * @return mixed hook return code
+     */
+    function onStartFeedSubReceive($feedsub, $feed)
+    {
+        $oprofile = Ostatus_profile::staticGet('feeduri', $feedsub->uri);
+        if ($oprofile) {
+            $oprofile->processFeed($feed, 'push');
+        } else {
+            common_log(LOG_DEBUG, "No ostatus profile for incoming feed $feedsub->uri");
+        }
+    }
+
+    /**
+     * When about to subscribe to a remote user, start a server-to-server
+     * PuSH subscription if needed. If we can't establish that, abort.
+     *
+     * @fixme If something else aborts later, we could end up with a stray
+     *        PuSH subscription. This is relatively harmless, though.
+     *
+     * @param Profile $subscriber
+     * @param Profile $other
+     *
+     * @return hook return code
+     *
+     * @throws Exception
+     */
+    function onStartSubscribe($subscriber, $other)
+    {
+        $user = User::staticGet('id', $subscriber->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $other->id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        if (!$oprofile->subscribe()) {
+            throw new Exception(_m('Could not set up remote subscription.'));
+        }
+    }
+
+    /**
+     * Having established a remote subscription, send a notification to the
+     * remote OStatus profile's endpoint.
+     *
+     * @param Profile $subscriber
+     * @param Profile $other
+     *
+     * @return hook return code
+     *
+     * @throws Exception
+     */
+    function onEndSubscribe($subscriber, $other)
+    {
+        $user = User::staticGet('id', $subscriber->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $other->id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::FOLLOW;
+
+        $act->id   = TagURI::mint('follow:%d:%d:%s',
+                                  $subscriber->id,
+                                  $other->id,
+                                  common_date_iso8601(time()));
+
+        $act->time    = time();
+        $act->title   = _("Follow");
+        $act->content = sprintf(_("%s is now following %s."),
+                               $subscriber->getBestName(),
+                               $other->getBestName());
+
+        $act->actor   = ActivityObject::fromProfile($subscriber);
+        $act->object  = ActivityObject::fromProfile($other);
+
+        $oprofile->notifyActivity($act);
+
+        return true;
+    }
+
+    /**
+     * Notify remote server and garbage collect unused feeds on unsubscribe.
+     * @fixme send these operations to background queues
+     *
+     * @param User $user
+     * @param Profile $other
+     * @return hook return value
+     */
+    function onEndUnsubscribe($profile, $other)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $other->id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        // Drop the PuSH subscription if there are no other subscribers.
+        $oprofile->garbageCollect();
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::UNFOLLOW;
+
+        $act->id   = TagURI::mint('unfollow:%d:%d:%s',
+                                  $profile->id,
+                                  $other->id,
+                                  common_date_iso8601(time()));
+
+        $act->time    = time();
+        $act->title   = _("Unfollow");
+        $act->content = sprintf(_("%s stopped following %s."),
+                               $profile->getBestName(),
+                               $other->getBestName());
+
+        $act->actor   = ActivityObject::fromProfile($profile);
+        $act->object  = ActivityObject::fromProfile($other);
+
+        $oprofile->notifyActivity($act);
+
+        return true;
+    }
+
+    /**
+     * When one of our local users tries to join a remote group,
+     * notify the remote server. If the notification is rejected,
+     * deny the join.
+     *
+     * @param User_group $group
+     * @param User $user
+     *
+     * @return mixed hook return value
+     */
+
+    function onStartJoinGroup($group, $user)
+    {
+        $oprofile = Ostatus_profile::staticGet('group_id', $group->id);
+        if ($oprofile) {
+            if (!$oprofile->subscribe()) {
+                throw new Exception(_m('Could not set up remote group membership.'));
+            }
+
+            $member = Profile::staticGet($user->id);
+
+            $act = new Activity();
+            $act->id = TagURI::mint('join:%d:%d:%s',
+                                    $member->id,
+                                    $group->id,
+                                    common_date_iso8601(time()));
+
+            $act->actor = ActivityObject::fromProfile($member);
+            $act->verb = ActivityVerb::JOIN;
+            $act->object = $oprofile->asActivityObject();
+
+            $act->time = time();
+            $act->title = _m("Join");
+            $act->content = sprintf(_m("%s has joined group %s."),
+                                    $member->getBestName(),
+                                    $oprofile->getBestName());
+
+            if ($oprofile->notifyActivity($act)) {
+                return true;
+            } else {
+                $oprofile->garbageCollect();
+                throw new Exception(_m("Failed joining remote group."));
+            }
+        }
+    }
+
+    /**
+     * When one of our local users leaves a remote group, notify the remote
+     * server.
+     *
+     * @fixme Might be good to schedule a resend of the leave notification
+     * if it failed due to a transitory error. We've canceled the local
+     * membership already anyway, but if the remote server comes back up
+     * it'll be left with a stray membership record.
+     *
+     * @param User_group $group
+     * @param User $user
+     *
+     * @return mixed hook return value
+     */
+
+    function onEndLeaveGroup($group, $user)
+    {
+        $oprofile = Ostatus_profile::staticGet('group_id', $group->id);
+        if ($oprofile) {
+            // Drop the PuSH subscription if there are no other subscribers.
+            $oprofile->garbageCollect();
+
+
+            $member = Profile::staticGet($user->id);
+
+            $act = new Activity();
+            $act->id = TagURI::mint('leave:%d:%d:%s',
+                                    $member->id,
+                                    $group->id,
+                                    common_date_iso8601(time()));
+
+            $act->actor = ActivityObject::fromProfile($member);
+            $act->verb = ActivityVerb::LEAVE;
+            $act->object = $oprofile->asActivityObject();
+
+            $act->time = time();
+            $act->title = _m("Leave");
+            $act->content = sprintf(_m("%s has left group %s."),
+                                    $member->getBestName(),
+                                    $oprofile->getBestName());
+
+            $oprofile->notifyActivity($act);
+        }
+    }
+
+    /**
+     * Notify remote users when their notices get favorited.
+     *
+     * @param Profile or User $profile of local user doing the faving
+     * @param Notice $notice being favored
+     * @return hook return value
+     */
+
+    function onEndFavorNotice(Profile $profile, Notice $notice)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $notice->profile_id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::FAVORITE;
+        $act->id   = TagURI::mint('favor:%d:%d:%s',
+                                  $profile->id,
+                                  $notice->id,
+                                  common_date_iso8601(time()));
+
+        $act->time    = time();
+        $act->title   = _("Favor");
+        $act->content = sprintf(_("%s marked notice %s as a favorite."),
+                               $profile->getBestName(),
+                               $notice->uri);
+
+        $act->actor   = ActivityObject::fromProfile($profile);
+        $act->object  = ActivityObject::fromNotice($notice);
+
+        $oprofile->notifyActivity($act);
+
+        return true;
+    }
+
+    /**
+     * Notify remote users when their notices get de-favorited.
+     *
+     * @param Profile $profile Profile person doing the de-faving
+     * @param Notice  $notice  Notice being favored
+     *
+     * @return hook return value
+     */
+
+    function onEndDisfavorNotice(Profile $profile, Notice $notice)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $notice->profile_id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::UNFAVORITE;
+        $act->id   = TagURI::mint('disfavor:%d:%d:%s',
+                                  $profile->id,
+                                  $notice->id,
+                                  common_date_iso8601(time()));
+        $act->time    = time();
+        $act->title   = _("Disfavor");
+        $act->content = sprintf(_("%s marked notice %s as no longer a favorite."),
+                               $profile->getBestName(),
+                               $notice->uri);
+
+        $act->actor   = ActivityObject::fromProfile($profile);
+        $act->object  = ActivityObject::fromNotice($notice);
+
+        $oprofile->notifyActivity($act);
+
+        return true;
+    }
+
+    function onStartGetProfileUri($profile, &$uri)
+    {
+        $oprofile = Ostatus_profile::staticGet('profile_id', $profile->id);
+        if (!empty($oprofile)) {
+            $uri = $oprofile->uri;
+            return false;
+        }
+        return true;
+    }
+
+    function onStartUserGroupHomeUrl($group, &$url)
+    {
+        return $this->onStartUserGroupPermalink($group, &$url);
+    }
+
+    function onStartUserGroupPermalink($group, &$url)
+    {
+        $oprofile = Ostatus_profile::staticGet('group_id', $group->id);
+        if ($oprofile) {
+            // @fixme this should probably be in the user_group table
+            // @fixme this uri not guaranteed to be a profile page
+            $url = $oprofile->uri;
+            return false;
+        }
+    }
+
+    function onStartShowSubscriptionsContent($action)
+    {
+        $user = common_current_user();
+        if ($user && ($user->id == $action->profile->id)) {
+            $action->elementStart('div', 'entity_actions');
+            $action->elementStart('p', array('id' => 'entity_remote_subscribe',
+                                             'class' => 'entity_subscribe'));
+            $action->element('a', array('href' => common_local_url('ostatussub'),
+                                        'class' => 'entity_remote_subscribe')
+                                , _m('Subscribe to remote user'));
+            $action->elementEnd('p');
+            $action->elementEnd('div');
+        }
+
+        return true;
+    }
+
+    /**
+     * Ping remote profiles with updates to this profile.
+     * Salmon pings are queued for background processing.
+     */
+    function onEndBroadcastProfile(Profile $profile)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        // Find foreign accounts I'm subscribed to that support Salmon pings.
+        //
+        // @fixme we could run updates through the PuSH feed too,
+        // in which case we can skip Salmon pings to folks who
+        // are also subscribed to me.
+        $sql = "SELECT * FROM ostatus_profile " .
+               "WHERE profile_id IN " .
+               "(SELECT subscribed FROM subscription WHERE subscriber=%d) " .
+               "OR group_id IN " .
+               "(SELECT group_id FROM group_member WHERE profile_id=%d)";
+        $oprofile = new Ostatus_profile();
+        $oprofile->query(sprintf($sql, $profile->id, $profile->id));
+
+        if ($oprofile->N == 0) {
+            common_log(LOG_DEBUG, "No OStatus remote subscribees for $profile->nickname");
+            return true;
+        }
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::UPDATE_PROFILE;
+        $act->id   = TagURI::mint('update-profile:%d:%s',
+                                  $profile->id,
+                                  common_date_iso8601(time()));
+        $act->time    = time();
+        $act->title   = _m("Profile update");
+        $act->content = sprintf(_m("%s has updated their profile page."),
+                               $profile->getBestName());
+
+        $act->actor   = ActivityObject::fromProfile($profile);
+        $act->object  = $act->actor;
+
+        while ($oprofile->fetch()) {
+            $oprofile->notifyDeferred($act);
+        }
+
+        return true;
+    }
+}
diff --git a/plugins/OStatus/README b/plugins/OStatus/README
new file mode 100644 (file)
index 0000000..3a98b7b
--- /dev/null
@@ -0,0 +1,34 @@
+Plugin to support importing updates from external RSS and Atom feeds into your timeline.
+
+Uses PubSubHubbub for push feed updates; currently non-PuSH feeds cannot be subscribed.
+
+Configuration options available:
+
+$config['ostatus']['hub']
+    (default internal hub)
+    Set to URL of an external PuSH hub to use it instead of our internal hub.
+
+$config['ostatus']['hub_retries']
+    (default 0)
+    Number of times to retry a PuSH send to consumers if using internal hub
+
+
+For testing, shouldn't be used in production:
+
+$config['ostatus']['skip_signatures']
+    (default use signatures)
+    Disable generation and validation of Salmon magicenv signatures
+
+$config['feedsub']['nohub']
+    (default require hub)
+    Allow low-level feed subscription setup for feeds without hubs.
+    Not actually usable at this stage, OStatus will check for hubs too
+    and we have no polling backend.
+
+
+Todo:
+* fully functional l10n
+* redo non-OStatus feed support
+** rssCloud support?
+** possibly a polling daemon to support non-PuSH feeds?
+* make use of tags/categories from feeds
diff --git a/plugins/OStatus/actions/groupsalmon.php b/plugins/OStatus/actions/groupsalmon.php
new file mode 100644 (file)
index 0000000..29377b5
--- /dev/null
@@ -0,0 +1,188 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @author James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class GroupsalmonAction extends SalmonAction
+{
+    var $group = null;
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $id = $this->trimmed('id');
+
+        if (!$id) {
+            $this->clientError(_('No ID.'));
+        }
+
+        $this->group = User_group::staticGet('id', $id);
+
+        if (empty($this->group)) {
+            $this->clientError(_('No such group.'));
+        }
+
+        $oprofile = Ostatus_profile::staticGet('group_id', $id);
+        if ($oprofile) {
+            $this->clientError(_m("Can't accept remote posts for a remote group."));
+        }
+
+        return true;
+    }
+
+    /**
+     * We've gotten a post event on the Salmon backchannel, probably a reply.
+     */
+
+    function handlePost()
+    {
+        switch ($this->act->object->type) {
+        case ActivityObject::ARTICLE:
+        case ActivityObject::BLOGENTRY:
+        case ActivityObject::NOTE:
+        case ActivityObject::STATUS:
+        case ActivityObject::COMMENT:
+            break;
+        default:
+            throw new ClientException("Can't handle that kind of post.");
+        }
+
+        // Notice must be to the attention of this group
+
+        $context = $this->act->context;
+
+        if (empty($context->attention)) {
+            throw new ClientException("Not to the attention of anyone.");
+        } else {
+            $uri = common_local_url('groupbyid', array('id' => $this->group->id));
+            if (!in_array($uri, $context->attention)) {
+                throw new ClientException("Not to the attention of this group.");
+            }
+        }
+
+        $profile = $this->ensureProfile();
+        $this->saveNotice();
+    }
+
+    /**
+     * We've gotten a follow/subscribe notification from a remote user.
+     * Save a subscription relationship for them.
+     */
+
+    /**
+     * Postel's law: consider a "follow" notification as a "join".
+     */
+    function handleFollow()
+    {
+        $this->handleJoin();
+    }
+
+    /**
+     * Postel's law: consider an "unfollow" notification as a "leave".
+     */
+    function handleUnfollow()
+    {
+        $this->handleLeave();
+    }
+
+    /**
+     * A remote user joined our group.
+     * @fixme move permission checks and event call into common code,
+     *        currently we're doing the main logic in joingroup action
+     *        and so have to repeat it here.
+     */
+
+    function handleJoin()
+    {
+        $oprofile = $this->ensureProfile();
+        if (!$oprofile) {
+            $this->clientError(_m("Can't read profile to set up group membership."));
+        }
+        if ($oprofile->isGroup()) {
+            $this->clientError(_m("Groups can't join groups."));
+        }
+
+        common_log(LOG_INFO, "Remote profile {$oprofile->uri} joining local group {$this->group->nickname}");
+        $profile = $oprofile->localProfile();
+
+        if ($profile->isMember($this->group)) {
+            // Already a member; we'll take it silently to aid in resolving
+            // inconsistencies on the other side.
+            return true;
+        }
+
+        if (Group_block::isBlocked($this->group, $profile)) {
+            $this->clientError(_('You have been blocked from that group by the admin.'), 403);
+            return false;
+        }
+
+        try {
+            // @fixme that event currently passes a user from main UI
+            // Event should probably move into Group_member::join
+            // and take a Profile object.
+            //
+            //if (Event::handle('StartJoinGroup', array($this->group, $profile))) {
+                Group_member::join($this->group->id, $profile->id);
+                //Event::handle('EndJoinGroup', array($this->group, $profile));
+            //}
+        } catch (Exception $e) {
+            $this->serverError(sprintf(_m('Could not join remote user %1$s to group %2$s.'),
+                                       $oprofile->uri, $this->group->nickname));
+        }
+    }
+
+    /**
+     * A remote user left our group.
+     */
+
+    function handleLeave()
+    {
+        $oprofile = $this->ensureProfile();
+        if (!$oprofile) {
+            $this->clientError(_m("Can't read profile to cancel group membership."));
+        }
+        if ($oprofile->isGroup()) {
+            $this->clientError(_m("Groups can't join groups."));
+        }
+
+        common_log(LOG_INFO, "Remote profile {$oprofile->uri} leaving local group {$this->group->nickname}");
+        $profile = $oprofile->localProfile();
+
+        try {
+            // @fixme event needs to be refactored as above
+            //if (Event::handle('StartLeaveGroup', array($this->group, $profile))) {
+                Group_member::leave($this->group->id, $profile->id);
+                //Event::handle('EndLeaveGroup', array($this->group, $profile));
+            //}
+        } catch (Exception $e) {
+            $this->serverError(sprintf(_m('Could not remove remote user %1$s from group %2$s.'),
+                                       $oprofile->uri, $this->group->nickname));
+            return;
+        }
+    }
+
+}
diff --git a/plugins/OStatus/actions/hostmeta.php b/plugins/OStatus/actions/hostmeta.php
new file mode 100644 (file)
index 0000000..850b8a0
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+class HostMetaAction extends Action
+{
+
+    function handle()
+    {
+        parent::handle();
+
+        $w = new Webfinger();
+
+
+        $domain = common_config('site', 'server');
+        $url = common_local_url('webfinger');
+        $url.= '?uri={uri}';
+        print $w->getHostMeta($domain, $url);
+    }
+}
diff --git a/plugins/OStatus/actions/ostatusinit.php b/plugins/OStatus/actions/ostatusinit.php
new file mode 100644 (file)
index 0000000..3f2f636
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+
+class OStatusInitAction extends Action
+{
+
+    var $nickname;
+    var $profile;
+    var $err;
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        if (common_logged_in()) {
+            $this->clientError(_m('You can use the local subscription!'));
+            return false;
+        }
+
+        // Local user the remote wants to subscribe to
+        $this->nickname = $this->trimmed('nickname');
+        
+        // Webfinger or profile URL of the remote user
+        $this->profile = $this->trimmed('profile');
+
+        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(_m('There was a problem with your session token. '.
+                                  'Try again, please.'));
+                return;
+            }
+            $this->ostatusConnect();
+        } else {
+            $this->showForm();
+        }
+    }
+    
+    function showForm($err = null)
+    {
+        $this->err = $err;
+        if ($this->boolean('ajax')) {
+            header('Content-Type: text/xml;charset=utf-8');
+            $this->xw->startDocument('1.0', 'UTF-8');
+            $this->elementStart('html');
+            $this->elementStart('head');
+            $this->element('title', null, _m('Subscribe to user'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $this->showContent();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $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', null,  sprintf(_m('Subscribe to %s'), $this->nickname));
+        $this->hidden('token', common_session_token());
+
+        $this->elementStart('ul', 'form_data');
+        $this->elementStart('li', array('id' => 'ostatus_nickname'));
+        $this->input('nickname', _m('User nickname'), $this->nickname,
+                     _m('Nickname of the user you want to follow'));
+        $this->elementEnd('li');
+        $this->elementStart('li', array('id' => 'ostatus_profile'));
+        $this->input('profile', _m('Profile Account'), $this->profile,
+                     _m('Your account id (i.e. user@identi.ca)'));
+        $this->elementEnd('li');
+        $this->elementEnd('ul');
+        $this->submit('submit', _m('Subscribe'));
+        $this->elementEnd('fieldset');
+        $this->elementEnd('form');
+    }
+
+    function ostatusConnect()
+    {
+        $opts = array('allowed_schemes' => array('http', 'https', 'acct'));
+        if (Validate::uri($this->profile, $opts)) {
+            $bits = parse_url($this->profile);
+            if ($bits['scheme'] == 'acct') {
+                $this->connectWebfinger($bits['path']);
+            } else {
+                $this->connectProfile($this->profile);
+            }
+        } elseif (strpos($this->profile, '@') !== false) {
+            $this->connectWebfinger($this->profile);
+        } else {
+            $this->clientError(_m("Must provide a remote profile."));
+        }
+    }
+
+    function connectWebfinger($acct)
+    {
+        $w = new Webfinger;
+
+        $result = $w->lookup($acct);
+        if (!$result) {
+            $this->clientError(_m("Couldn't look up OStatus account profile."));
+        }
+        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);
+                $target_profile = common_local_url('userbyid', array('id' => $user->id));
+
+                $url = $w->applyTemplate($link['template'], $target_profile);
+                common_log(LOG_INFO, "Sending remote subscriber $acct to $url");
+                common_redirect($url, 303);
+            }
+
+        }
+        $this->clientError(_m("Couldn't confirm remote profile address."));
+    }
+
+    function connectProfile($subscriber_profile)
+    {
+        $user = User::staticGet('nickname', $this->nickname);
+        $target_profile = common_local_url('userbyid', array('id' => $user->id));
+
+        // @fixme hack hack! We should look up the remote sub URL from XRDS
+        $suburl = preg_replace('!^(.*)/(.*?)$!', '$1/main/ostatussub', $subscriber_profile);
+        $suburl .= '?profile=' . urlencode($target_profile);
+
+        common_log(LOG_INFO, "Sending remote subscriber $subscriber_profile to $suburl");
+        common_redirect($suburl, 303);
+    }
+
+    function title()
+    {
+      return _m('OStatus Connect');  
+    }
+  
+}
diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php
new file mode 100644 (file)
index 0000000..12832cd
--- /dev/null
@@ -0,0 +1,489 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+/**
+ * Key UI methods:
+ *
+ *  showInputForm() - form asking for a remote profile account or URL
+ *                    We end up back here on errors
+ *
+ *  showPreviewForm() - surrounding form for preview-and-confirm
+ *    previewUser() - display profile for a remote user
+ *    previewGroup() - display profile for a remote group
+ *
+ *  successUser() - redirects to subscriptions page on subscribe
+ *  successGroup() - redirects to groups page on join
+ */
+class OStatusSubAction extends Action
+{
+    protected $profile_uri; // provided acct: or URI of remote entity
+    protected $oprofile; // Ostatus_profile of remote entity, if valid
+
+    /**
+     * Show the initial form, when we haven't yet been given a valid
+     * remote profile.
+     */
+    function showInputForm()
+    {
+        $user = common_current_user();
+
+        $profile = $user->getProfile();
+
+        $this->elementStart('form', array('method' => 'post',
+                                          'id' => 'form_ostatus_sub',
+                                          'class' => 'form_settings',
+                                          'action' =>
+                                          common_local_url('ostatussub')));
+
+        $this->hidden('token', common_session_token());
+
+        $this->elementStart('fieldset', array('id' => 'settings_feeds'));
+
+        $this->elementStart('ul', 'form_data');
+        $this->elementStart('li');
+        $this->input('profile',
+                     _m('Address or profile URL'),
+                     $this->profile_uri,
+                     _m('Enter the profile URL of a PubSubHubbub-enabled feed'));
+        $this->elementEnd('li');
+        $this->elementEnd('ul');
+
+        $this->submit('validate', _m('Continue'));
+
+        $this->elementEnd('fieldset');
+
+        $this->elementEnd('form');
+    }
+
+    /**
+     * Show the preview-and-confirm form. We've got a valid remote
+     * profile and are ready to poke it!
+     *
+     * This controls the wrapper form; actual profile display will
+     * be in previewUser() or previewGroup() depending on the type.
+     */
+    function showPreviewForm()
+    {
+        if ($this->oprofile->isGroup()) {
+            $ok = $this->previewGroup();
+        } else {
+            $ok = $this->previewUser();
+        }
+        if (!$ok) {
+            // @fixme maybe provide a cancel button or link back?
+            return;
+        }
+
+        $this->elementStart('div', 'entity_actions');
+        $this->elementStart('ul');
+        $this->elementStart('li', 'entity_subscribe');
+        $this->elementStart('form', array('method' => 'post',
+                                          'id' => 'form_ostatus_sub',
+                                          'class' => 'form_remote_authorize',
+                                          'action' =>
+                                          common_local_url('ostatussub')));
+        $this->elementStart('fieldset');
+        $this->hidden('token', common_session_token());
+        $this->hidden('profile', $this->profile_uri);
+        if ($this->oprofile->isGroup()) {
+            $this->submit('submit', _m('Join'), 'submit', null,
+                         _m('Join this group'));
+        } else {
+            $this->submit('submit', _m('Subscribe'), 'submit', null,
+                         _m('Subscribe to this user'));
+        }
+        $this->elementEnd('fieldset');
+        $this->elementEnd('form');
+        $this->elementEnd('li');
+        $this->elementEnd('ul');
+        $this->elementEnd('div');
+    }
+
+    /**
+     * Show a preview for a remote user's profile
+     * @return boolean true if we're ok to try subscribing
+     */
+    function previewUser()
+    {
+        $oprofile = $this->oprofile;
+        $profile = $oprofile->localProfile();
+
+        $cur = common_current_user();
+        if ($cur->isSubscribed($profile)) {
+            $this->element('div', array('class' => 'error'),
+                           _m("You are already subscribed to this user."));
+            $ok = false;
+        } else {
+            $ok = true;
+        }
+
+        $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
+        $avatarUrl = $avatar ? $avatar->displayUrl() : false;
+
+        $this->showEntity($profile,
+                          $profile->profileurl,
+                          $avatarUrl,
+                          $profile->bio);
+        return $ok;
+    }
+
+    /**
+     * Show a preview for a remote group's profile
+     * @return boolean true if we're ok to try joining
+     */
+    function previewGroup()
+    {
+        $oprofile = $this->oprofile;
+        $group = $oprofile->localGroup();
+
+        $cur = common_current_user();
+        if ($cur->isMember($group)) {
+            $this->element('div', array('class' => 'error'),
+                           _m("You are already a member of this group."));
+            $ok = false;
+        } else {
+            $ok = true;
+        }
+
+        $this->showEntity($group,
+                          $group->getProfileUrl(),
+                          $group->homepage_logo,
+                          $group->description);
+        return $ok;
+    }
+
+
+    function showEntity($entity, $profile, $avatar, $note)
+    {
+        $nickname = $entity->nickname;
+        $fullname = $entity->fullname;
+        $homepage = $entity->homepage;
+        $location = $entity->location;
+        
+        if (!$avatar) {
+            $avatar = Avatar::defaultImage(AVATAR_PROFILE_SIZE);
+        }
+
+        $this->elementStart('div', 'entity_profile vcard');
+        $this->elementStart('dl', 'entity_depiction');
+        $this->element('dt', null, _('Photo'));
+        $this->elementStart('dd');
+        $this->element('img', array('src' => $avatar,
+                                    'class' => 'photo avatar',
+                                    'width' => AVATAR_PROFILE_SIZE,
+                                    'height' => AVATAR_PROFILE_SIZE,
+                                    'alt' => $nickname));
+        $this->elementEnd('dd');
+        $this->elementEnd('dl');
+
+        $this->elementStart('dl', 'entity_nickname');
+        $this->element('dt', null, _('Nickname'));
+        $this->elementStart('dd');
+        $hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname';
+        $this->elementStart('a', array('href' => $profile,
+                                       'class' => 'url '.$hasFN));
+        $this->raw($nickname);
+        $this->elementEnd('a');
+        $this->elementEnd('dd');
+        $this->elementEnd('dl');
+
+        if (!is_null($fullname)) {
+            $this->elementStart('dl', 'entity_fn');
+            $this->elementStart('dd');
+            $this->elementStart('span', 'fn');
+            $this->raw($fullname);
+            $this->elementEnd('span');
+            $this->elementEnd('dd');
+            $this->elementEnd('dl');
+        }
+        if (!is_null($location)) {
+            $this->elementStart('dl', 'entity_location');
+            $this->element('dt', null, _('Location'));
+            $this->elementStart('dd', 'label');
+            $this->raw($location);
+            $this->elementEnd('dd');
+            $this->elementEnd('dl');
+        }
+
+        if (!is_null($homepage)) {
+            $this->elementStart('dl', 'entity_url');
+            $this->element('dt', null, _('URL'));
+            $this->elementStart('dd');
+            $this->elementStart('a', array('href' => $homepage,
+                                                'class' => 'url'));
+            $this->raw($homepage);
+            $this->elementEnd('a');
+            $this->elementEnd('dd');
+            $this->elementEnd('dl');
+        }
+
+        if (!is_null($note)) {
+            $this->elementStart('dl', 'entity_note');
+            $this->element('dt', null, _('Note'));
+            $this->elementStart('dd', 'note');
+            $this->raw($note);
+            $this->elementEnd('dd');
+            $this->elementEnd('dl');
+        }
+        $this->elementEnd('div');
+    }
+
+    /**
+     * Redirect on successful remote user subscription
+     */
+    function successUser()
+    {
+        $cur = common_current_user();
+        $url = common_local_url('subscriptions', array('nickname' => $cur->nickname));
+        common_redirect($url, 303);
+    }
+
+    /**
+     * Redirect on successful remote group join
+     */
+    function successGroup()
+    {
+        $cur = common_current_user();
+        $url = common_local_url('usergroups', array('nickname' => $cur->nickname));
+        common_redirect($url, 303);
+    }
+
+    /**
+     * Pull data for a remote profile and check if it's valid.
+     * Fills out error UI string in $this->error
+     * Fills out $this->oprofile on success.
+     *
+     * @return boolean
+     */
+    function validateFeed()
+    {
+        $profile_uri = trim($this->arg('profile'));
+
+        if ($profile_uri == '') {
+            $this->showForm(_m('Empty remote profile URL!'));
+            return;
+        }
+        $this->profile_uri = $profile_uri;
+
+        try {
+            if (Validate::email($this->profile_uri)) {
+                $this->oprofile = Ostatus_profile::ensureWebfinger($this->profile_uri);
+            } else if (Validate::uri($this->profile_uri)) {
+                $this->oprofile = Ostatus_profile::ensureProfile($this->profile_uri);
+            } else {
+                $this->error = _m("Invalid address format.");
+                return false;
+            }
+            return true;
+        } catch (FeedSubBadURLException $e) {
+            $this->error = _m('Invalid URL or could not reach server.');
+        } catch (FeedSubBadResponseException $e) {
+            $this->error = _m('Cannot read feed; server returned error.');
+        } catch (FeedSubEmptyException $e) {
+            $this->error = _m('Cannot read feed; server returned an empty page.');
+        } catch (FeedSubBadHTMLException $e) {
+            $this->error = _m('Bad HTML, could not find feed link.');
+        } catch (FeedSubNoFeedException $e) {
+            $this->error = _m('Could not find a feed linked from this URL.');
+        } catch (FeedSubUnrecognizedTypeException $e) {
+            $this->error = _m('Not a recognized feed type.');
+        } catch (FeedSubException $e) {
+            // Any new ones we forgot about
+            $this->error = sprintf(_m('Bad feed URL: %s %s'), get_class($e), $e->getMessage());
+        }
+
+        return false;
+    }
+
+    /**
+     * Attempt to finalize subscription.
+     * validateFeed must have been run first.
+     *
+     * Calls showForm on failure or successUser/successGroup on success.
+     */
+    function saveFeed()
+    {
+        // And subscribe the current user to the local profile
+        $user = common_current_user();
+
+        if ($this->oprofile->isGroup()) {
+            $group = $this->oprofile->localGroup();
+            if ($user->isMember($group)) {
+                $this->showForm(_m('Already a member!'));
+            } elseif (Group_member::join($this->oprofile->group_id, $user->id)) {
+                $this->successGroup();
+            } else {
+                $this->showForm(_m('Remote group join failed!'));
+            }
+        } else {
+            $local = $this->oprofile->localProfile();
+            if ($user->isSubscribed($local)) {
+                $this->showForm(_m('Already subscribed!'));
+            } elseif ($this->oprofile->subscribeLocalToRemote($user)) {
+                $this->successUser();
+            } else {
+                $this->showForm(_m('Remote subscription failed!'));
+            }
+        }
+    }
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        if (!common_logged_in()) {
+            // XXX: selfURL() didn't work. :<
+            common_set_returnto($_SERVER['REQUEST_URI']);
+            if (Event::handle('RedirectToLogin', array($this, null))) {
+                common_redirect(common_local_url('login'), 303);
+            }
+            return false;
+        }
+
+        $this->profile_uri = $this->arg('profile');
+
+        return true;
+    }
+
+    /**
+     * Handle the submission.
+     */
+    function handle($args)
+    {
+        parent::handle($args);
+        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+            $this->handlePost();
+        } else {
+            if ($this->arg('profile')) {
+                $this->validateFeed();
+            }
+            $this->showForm();
+        }
+    }
+
+
+    /**
+     * Handle posts to this form
+     *
+     * @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->validateFeed()) {
+            if ($this->arg('submit')) {
+                $this->saveFeed();
+                return;
+            }
+        }
+        $this->showForm();
+    }
+
+    /**
+     * Show the appropriate form based on our input state.
+     */
+    function showForm($err=null)
+    {
+        if ($err) {
+            $this->error = $err;
+        }
+        if ($this->boolean('ajax')) {
+            header('Content-Type: text/xml;charset=utf-8');
+            $this->xw->startDocument('1.0', 'UTF-8');
+            $this->elementStart('html');
+            $this->elementStart('head');
+            $this->element('title', null, _m('Subscribe to user'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $this->showContent();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $this->showPage();
+        }
+    }
+
+    /**
+     * Title of the page
+     *
+     * @return string Title of the page
+     */
+
+    function title()
+    {
+        return _m('Authorize subscription');
+    }
+
+    /**
+     * Instructions for use
+     *
+     * @return instructions for use
+     */
+
+    function getInstructions()
+    {
+        return _m('You can subscribe to users from other supported sites. Paste their address or profile URI below:');
+    }
+
+    function showPageNotice()
+    {
+        if (!empty($this->error)) {
+            $this->element('p', 'error', $this->error);
+        }
+    }
+
+    /**
+     * Content area of the page
+     *
+     * Shows a form for associating a remote OStatus account with this
+     * StatusNet account.
+     *
+     * @return void
+     */
+
+    function showContent()
+    {
+        if ($this->oprofile) {
+            $this->showPreviewForm();
+        } else {
+            $this->showInputForm();
+        }
+    }
+
+    function showScripts()
+    {
+        parent::showScripts();
+        $this->autofocus('feedurl');
+    }
+}
diff --git a/plugins/OStatus/actions/pushcallback.php b/plugins/OStatus/actions/pushcallback.php
new file mode 100644 (file)
index 0000000..9a2067b
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package FeedSubPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+
+class PushCallbackAction extends Action
+{
+    function handle()
+    {
+        StatusNet::setApi(true); // Minimize error messages to aid in debugging
+        parent::handle();
+        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+            $this->handlePost();
+        } else {
+            $this->handleGet();
+        }
+    }
+    
+    /**
+     * Handler for POST content updates from the hub
+     */
+    function handlePost()
+    {
+        $feedid = $this->arg('feed');
+        common_log(LOG_INFO, "POST for feed id $feedid");
+        if (!$feedid) {
+            throw new ServerException('Empty or invalid feed id', 400);
+        }
+
+        $feedsub = FeedSub::staticGet('id', $feedid);
+        if (!$feedsub) {
+            throw new ServerException('Unknown 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');
+
+        // Queue this to a background process; we should return
+        // as quickly as possible from a distribution POST.
+        // If queues are disabled this'll process immediately.
+        $data = array('feedsub_id' => $feedsub->id,
+                      'post' => $post,
+                      'hmac' => $hmac);
+        $qm = QueueManager::get();
+        $qm->enqueue($data, 'pushin');
+    }
+    
+    /**
+     * Handler for GET verification requests from the hub.
+     */
+    function handleGet()
+    {
+        $mode = $this->arg('hub_mode');
+        $topic = $this->arg('hub_topic');
+        $challenge = $this->arg('hub_challenge');
+        $lease_seconds = $this->arg('hub_lease_seconds');
+        $verify_token = $this->arg('hub_verify_token');
+
+        if ($mode != 'subscribe' && $mode != 'unsubscribe') {
+            throw new ClientException("Bad hub.mode $mode", 404);
+        }
+
+        $feedsub = FeedSub::staticGet('uri', $topic);
+        if (!$feedsub) {
+            throw new ClientException("Bad hub.topic feed $topic", 404);
+        }
+
+        if ($feedsub->verify_token !== $verify_token) {
+            throw new ClientException("Bad hub.verify_token $token for $topic", 404);
+        }
+
+        if ($mode == 'subscribe') {
+            // We may get re-sub requests legitimately.
+            if ($feedsub->sub_state != 'subscribe' && $feedsub->sub_state != 'active') {
+                throw new ClientException("Unexpected subscribe request for $topic.", 404);
+            }
+        } else {
+            if ($feedsub->sub_state != 'unsubscribe') {
+                throw new ClientException("Unexpected unsubscribe request for $topic.", 404);
+            }
+        }
+
+        if ($mode == 'subscribe') {
+            if ($feedsub->sub_state == 'active') {
+                common_log(LOG_INFO, __METHOD__ . ': sub update confirmed');
+            } else {
+                common_log(LOG_INFO, __METHOD__ . ': sub confirmed');
+            }
+            $feedsub->confirmSubscribe($lease_seconds);
+        } else {
+            common_log(LOG_INFO, __METHOD__ . ": unsub confirmed; deleting sub record for $topic");
+            $feedsub->confirmUnsubscribe();
+        }
+        print $challenge;
+    }
+}
diff --git a/plugins/OStatus/actions/pushhub.php b/plugins/OStatus/actions/pushhub.php
new file mode 100644 (file)
index 0000000..f33690b
--- /dev/null
@@ -0,0 +1,202 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Integrated PuSH hub; lets us only ping them what need it.
+ * @package Hub
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+/**
+
+
+Things to consider...
+* should we purge incomplete subscriptions that never get a verification pingback?
+* when can we send subscription renewal checks?
+    - at next send time probably ok
+* when can we handle trimming of subscriptions?
+    - at next send time probably ok
+* should we keep a fail count?
+
+*/
+
+
+class PushHubAction extends Action
+{
+    function arg($arg, $def=null)
+    {
+        // PHP converts '.'s in incoming var names to '_'s.
+        // It also merges multiple values, which'll break hub.verify and hub.topic for publishing
+        // @fixme handle multiple args
+        $arg = str_replace('hub.', 'hub_', $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":
+        case "unsubscribe":
+            $this->subunsub($mode);
+            break;
+        case "publish":
+            throw new ClientException("Publishing outside feeds not supported.", 400);
+        default:
+            throw new ClientException("Unrecognized mode '$mode'.", 400);
+        }
+    }
+
+    /**
+     * Process a request for a new or modified PuSH feed subscription.
+     * If asynchronous verification is requested, updates won't be saved immediately.
+     *
+     * HTTP return codes:
+     *   202 Accepted - request saved and awaiting verification
+     *   204 No Content - already subscribed
+     *   400 Bad Request - rejecting this (not specifically spec'd)
+     */
+    function subunsub($mode)
+    {
+        $callback = $this->argUrl('hub.callback');
+
+        $topic = $this->argUrl('hub.topic');
+        if (!$this->recognizedFeed($topic)) {
+            throw new ClientException("Unsupported hub.topic $topic; this hub only serves local user and group Atom feeds.");
+        }
+
+        $verify = $this->arg('hub.verify'); // @fixme may be multiple
+        if ($verify != 'sync' && $verify != 'async') {
+            throw new ClientException("Invalid hub.verify $verify; must be sync or async.");
+        }
+
+        $lease = $this->arg('hub.lease_seconds', null);
+        if ($mode == 'subscribe' && $lease != '' && !preg_match('/^\d+$/', $lease)) {
+            throw new ClientException("Invalid hub.lease $lease; must be empty or positive integer.");
+        }
+
+        $token = $this->arg('hub.verify_token', null);
+
+        $secret = $this->arg('hub.secret', null);
+        if ($secret != '' && strlen($secret) >= 200) {
+            throw new ClientException("Invalid hub.secret $secret; must be under 200 bytes.");
+        }
+
+        $sub = HubSub::staticGet($sub->topic, $sub->callback);
+        if (!$sub) {
+            // Creating a new one!
+            $sub = new HubSub();
+            $sub->topic = $topic;
+            $sub->callback = $callback;
+        }
+        if ($mode == 'subscribe') {
+            if ($secret) {
+                $sub->secret = $secret;
+            }
+            if ($lease) {
+                $sub->setLease(intval($lease));
+            }
+        }
+
+        if (!common_config('queue', 'enabled')) {
+            // Won't be able to background it.
+            $verify = 'sync';
+        }
+        if ($verify == 'async') {
+            $sub->scheduleVerify($mode, $token);
+            header('HTTP/1.1 202 Accepted');
+        } else {
+            $sub->verify($mode, $token);
+            header('HTTP/1.1 204 No Content');
+        }
+    }
+
+    /**
+     * Check whether the given URL represents one of our canonical
+     * user or group Atom feeds.
+     *
+     * @param string $feed URL
+     * @return boolean true if it matches
+     */
+    function recognizedFeed($feed)
+    {
+        $matches = array();
+        if (preg_match('!/(\d+)\.atom$!', $feed, $matches)) {
+            $id = $matches[1];
+            $params = array('id' => $id, 'format' => 'atom');
+            $userFeed = common_local_url('ApiTimelineUser', $params);
+            $groupFeed = common_local_url('ApiTimelineGroup', $params);
+
+            if ($feed == $userFeed) {
+                $user = User::staticGet('id', $id);
+                if (!$user) {
+                    throw new ClientException("Invalid hub.topic $feed; user doesn't exist.");
+                } else {
+                    return true;
+                }
+            }
+            if ($feed == $groupFeed) {
+                $user = User_group::staticGet('id', $id);
+                if (!$user) {
+                    throw new ClientException("Invalid hub.topic $feed; group doesn't exist.");
+                } else {
+                    return true;
+                }
+            }
+            common_log(LOG_DEBUG, "Not a user or group feed? $feed $userFeed $groupFeed");
+        }
+        common_log(LOG_DEBUG, "LOST $feed");
+        return false;
+    }
+
+    /**
+     * Grab and validate a URL from POST parameters.
+     * @throws ClientException 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 ClientException("Invalid URL passed for $arg: '$url'");
+        }
+    }
+
+    /**
+     * 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/usersalmon.php b/plugins/OStatus/actions/usersalmon.php
new file mode 100644 (file)
index 0000000..c8a16e0
--- /dev/null
@@ -0,0 +1,212 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @author James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class UsersalmonAction extends SalmonAction
+{
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $id = $this->trimmed('id');
+
+        if (!$id) {
+            $this->clientError(_('No ID.'));
+        }
+
+        $this->user = User::staticGet('id', $id);
+
+        if (empty($this->user)) {
+            $this->clientError(_('No such user.'));
+        }
+
+        return true;
+    }
+
+    /**
+     * We've gotten a post event on the Salmon backchannel, probably a reply.
+     *
+     * @todo validate if we need to handle this post, then call into
+     * ostatus_profile's general incoming-post handling.
+     */
+    function handlePost()
+    {
+        common_log(LOG_INFO, "Received post of '{$this->act->object->id}' from '{$this->act->actor->id}'");
+
+        switch ($this->act->object->type) {
+        case ActivityObject::ARTICLE:
+        case ActivityObject::BLOGENTRY:
+        case ActivityObject::NOTE:
+        case ActivityObject::STATUS:
+        case ActivityObject::COMMENT:
+            break;
+        default:
+            throw new ClientException("Can't handle that kind of post.");
+        }
+
+        // Notice must either be a) in reply to a notice by this user
+        // or b) to the attention of this user
+
+        $context = $this->act->context;
+
+        if (!empty($context->replyToID)) {
+            $notice = Notice::staticGet('uri', $context->replyToID);
+            if (empty($notice)) {
+                throw new ClientException("In reply to unknown notice");
+            }
+            if ($notice->profile_id != $this->user->id) {
+                throw new ClientException("In reply to a notice not by this user");
+            }
+        } else if (!empty($context->attention)) {
+            if (!in_array($this->user->uri, $context->attention)) {
+                common_log(LOG_ERR, "{$this->user->uri} not in attention list (".implode(',', $context->attention).")");
+                throw new ClientException("To the attention of user(s) not including this one!");
+            }
+        } else {
+            throw new ClientException("Not to anyone in reply to anything!");
+        }
+
+        $existing = Notice::staticGet('uri', $this->act->object->id);
+
+        if (!empty($existing)) {
+            common_log(LOG_ERR, "Not saving notice '{$existing->uri}'; already exists.");
+            return;
+        }
+
+        $this->saveNotice();
+    }
+
+    /**
+     * We've gotten a follow/subscribe notification from a remote user.
+     * Save a subscription relationship for them.
+     */
+
+    function handleFollow()
+    {
+        $oprofile = $this->ensureProfile();
+        if ($oprofile) {
+            common_log(LOG_INFO, "Setting up subscription from remote {$oprofile->uri} to local {$this->user->nickname}");
+            Subscription::start($oprofile->localProfile(),
+                                $this->user->getProfile());
+        } else {
+            common_log(LOG_INFO, "Can't set up subscription from remote; missing profile.");
+        }
+    }
+
+    /**
+     * We've gotten an unfollow/unsubscribe notification from a remote user.
+     * Check if we have a subscription relationship for them and kill it.
+     *
+     * @fixme probably catch exceptions on fail?
+     */
+    function handleUnfollow()
+    {
+        $oprofile = $this->ensureProfile();
+        if ($oprofile) {
+            common_log(LOG_INFO, "Canceling subscription from remote {$oprofile->uri} to local {$this->user->nickname}");
+            Subscription::cancel($oprofile->localProfile(), $this->user->getProfile());
+        } else {
+            common_log(LOG_ERR, "Can't cancel subscription from remote, didn't find the profile");
+        }
+    }
+
+    /**
+     * Remote user likes one of our posts.
+     * Confirm the post is ours, and save a local favorite event.
+     */
+
+    function handleFavorite()
+    {
+        $notice = $this->getNotice($this->act->object);
+        $profile = $this->ensureProfile()->localProfile();
+
+        $old = Fave::pkeyGet(array('user_id' => $profile->id,
+                                   'notice_id' => $notice->id));
+
+        if (!empty($old)) {
+            throw new ClientException("We already know that's a fave!");
+        }
+
+        if (!Fave::addNew($profile, $notice)) {
+            throw new ClientException("Could not save new favorite.");
+        }
+    }
+
+    /**
+     * Remote user doesn't like one of our posts after all!
+     * Confirm the post is ours, and save a local favorite event.
+     */
+    function handleUnfavorite()
+    {
+        $notice = $this->getNotice($this->act->object);
+        $profile = $this->ensureProfile()->localProfile();
+
+        $fave = Fave::pkeyGet(array('user_id' => $profile->id,
+                                   'notice_id' => $notice->id));
+        if (empty($fave)) {
+            throw new ClientException("Notice wasn't favorited!");
+        }
+
+        $fave->delete();
+    }
+
+    /**
+     * @param ActivityObject $object
+     * @return Notice
+     * @throws ClientException on invalid input
+     */
+    function getNotice($object)
+    {
+        if (!$object) {
+            throw new ClientException("Can't favorite/unfavorite without an object.");
+        }
+
+        switch ($object->type) {
+        case ActivityObject::ARTICLE:
+        case ActivityObject::BLOGENTRY:
+        case ActivityObject::NOTE:
+        case ActivityObject::STATUS:
+        case ActivityObject::COMMENT:
+            break;
+        default:
+            throw new ClientException("Can't handle that kind of object for liking/faving.");
+        }
+
+        $notice = Notice::staticGet('uri', $object->id);
+
+        if (empty($notice)) {
+            throw new ClientException("Notice with ID $object->id unknown.");
+        }
+
+        if ($notice->profile_id != $this->user->id) {
+            throw new ClientException("Notice with ID $object->id not posted by $this->user->id.");
+        }
+
+        return $notice;
+    }
+
+}
diff --git a/plugins/OStatus/actions/webfinger.php b/plugins/OStatus/actions/webfinger.php
new file mode 100644 (file)
index 0000000..34336a9
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+class WebfingerAction extends Action
+{
+
+    public $uri;
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $this->uri = $this->trimmed('uri');
+
+        return true;
+    }
+
+    function handle()
+    {
+        $acct = Webfinger::normalize($this->uri);
+
+        $xrd = new XRD();
+
+        list($nick, $domain) = explode('@', urldecode($acct));
+        $nick = common_canonical_nickname($nick);
+
+        $this->user = User::staticGet('nickname', $nick);
+        if (!$this->user) {
+            $this->clientError(_('No such user.'), 404);
+            return false;
+        }
+
+        $xrd->subject = $this->uri;
+        $xrd->alias[] = common_profile_url($nick);
+        $xrd->links[] = array('rel' => Webfinger::PROFILEPAGE,
+                              'type' => 'text/html',
+                              'href' => common_profile_url($nick));
+
+        $xrd->links[] = array('rel' => Webfinger::UPDATESFROM,
+                              'href' => common_local_url('ApiTimelineUser',
+                                                         array('id' => $this->user->id,
+                                                               'format' => 'atom')),
+                              'type' => 'application/atom+xml');
+
+        // hCard
+        $xrd->links[] = array('rel' => 'http://microformats.org/profile/hcard',
+                              'type' => 'text/html',
+                              'href' => common_profile_url($nick));
+
+        // XFN
+        $xrd->links[] = array('rel' => 'http://gmpg.org/xfn/11',
+                              'type' => 'text/html',
+                              'href' => common_profile_url($nick));
+        // FOAF
+        $xrd->links[] = array('rel' => 'describedby',
+                              'type' => 'application/rdf+xml',
+                              'href' => common_local_url('foaf',
+                                                         array('nickname' => $nick)));                        
+        
+        $salmon_url = common_local_url('salmon',
+                                       array('id' => $this->user->id));
+
+        $xrd->links[] = array('rel' => 'salmon',
+                              'href' => $salmon_url);
+
+        // Get this user's keypair
+        $magickey = Magicsig::staticGet('user_id', $this->user->id);
+        if (!$magickey) {
+            // No keypair yet, let's generate one.
+            $magickey = new Magicsig();
+            $magickey->generate();
+        }
+        
+        $xrd->links[] = array('rel' => Magicsig::PUBLICKEYREL,
+                              'href' => 'data:application/magic-public-key;'. $magickey->keypair);
+        
+        // TODO - finalize where the redirect should go on the publisher
+        $url = common_local_url('ostatussub') . '?profile={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/FeedSub.php b/plugins/OStatus/classes/FeedSub.php
new file mode 100644 (file)
index 0000000..b848b6b
--- /dev/null
@@ -0,0 +1,452 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009-2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+/*
+PuSH subscription flow:
+
+    $profile->subscribe()
+        generate random verification token
+            save to verify_token
+        sends a sub request to the hub...
+
+    main/push/callback
+        hub sends confirmation back to us via GET
+        We verify the request, then echo back the challenge.
+        On our end, we save the time we subscribed and the lease expiration
+
+    main/push/callback
+        hub sends us updates via POST
+
+*/
+
+class FeedDBException extends FeedSubException
+{
+    public $obj;
+
+    function __construct($obj)
+    {
+        parent::__construct('Database insert failure');
+        $this->obj = $obj;
+    }
+}
+
+/**
+ * FeedSub handles low-level PubHubSubbub (PuSH) subscriptions.
+ * Higher-level behavior building OStatus stuff on top is handled
+ * under Ostatus_profile.
+ */
+class FeedSub extends Memcached_DataObject
+{
+    public $__table = 'feedsub';
+
+    public $id;
+    public $feeduri;
+
+    // PuSH subscription data
+    public $huburi;
+    public $secret;
+    public $verify_token;
+    public $sub_state; // subscribe, active, unsubscribe, inactive
+    public $sub_start;
+    public $sub_end;
+    public $last_update;
+
+    public $created;
+    public $modified;
+
+    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,
+                     'uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+                     'huburi' =>  DB_DATAOBJECT_STR,
+                     'secret' => DB_DATAOBJECT_STR,
+                     'verify_token' => DB_DATAOBJECT_STR,
+                     'sub_state' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+                     'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+                     'sub_end' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+                     'last_update' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+                     'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
+                     'modified' => 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('uri', 'varchar',
+                                   255, false, 'UNI'),
+                     new ColumnDef('huburi', 'text',
+                                   null, true),
+                     new ColumnDef('verify_token', 'text',
+                                   null, true),
+                     new ColumnDef('secret', 'text',
+                                   null, true),
+                     new ColumnDef('sub_state', "enum('subscribe','active','unsubscribe','inactive')",
+                                   null, false),
+                     new ColumnDef('sub_start', 'datetime',
+                                   null, true),
+                     new ColumnDef('sub_end', 'datetime',
+                                   null, true),
+                     new ColumnDef('last_update', 'datetime',
+                                   null, false),
+                     new ColumnDef('created', 'datetime',
+                                   null, false),
+                     new ColumnDef('modified', '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', 'uri' => '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 string $feeduri
+     * @return FeedSub
+     * @throws FeedSubException if feed is invalid or lacks PuSH setup
+     */
+    public static function ensureFeed($feeduri)
+    {
+        $current = self::staticGet('uri', $feeduri);
+        if ($current) {
+            return $current;
+        }
+
+        $discover = new FeedDiscovery();
+        $discover->discoverFromFeedURL($feeduri);
+
+        $huburi = $discover->getAtomLink('hub');
+        if (!$huburi) {
+            throw new FeedSubNoHubException();
+        }
+
+        $feedsub = new FeedSub();
+        $feedsub->uri = $feeduri;
+        $feedsub->huburi = $huburi;
+        $feedsub->sub_state = 'inactive';
+
+        $feedsub->created = common_sql_now();
+        $feedsub->modified = common_sql_now();
+
+        $result = $feedsub->insert();
+        if (empty($result)) {
+            throw new FeedDBException($feedsub);
+        }
+
+        return $feedsub;
+    }
+
+    /**
+     * 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
+     * @throws ServerException if feed state is not valid
+     */
+    public function subscribe($mode='subscribe')
+    {
+        if ($this->sub_state && $this->sub_state != 'inactive') {
+            throw new ServerException("Attempting to start PuSH subscription to feed in state $this->sub_state");
+        }
+        if (empty($this->huburi)) {
+            if (common_config('feedsub', 'nohub')) {
+                // Fake it! We're just testing remote feeds w/o hubs.
+                return true;
+            } else {
+                throw new ServerException("Attempting to start PuSH subscription for feed with no hub");
+            }
+        }
+
+        return $this->doSubscribe('subscribe');
+    }
+
+    /**
+     * 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
+     * @throws ServerException if feed state is not valid
+     */
+    public function unsubscribe() {
+        if ($this->sub_state != 'active') {
+            throw new ServerException("Attempting to end PuSH subscription to feed in state $this->sub_state");
+        }
+        if (empty($this->huburi)) {
+            if (common_config('feedsub', 'nohub')) {
+                // Fake it! We're just testing remote feeds w/o hubs.
+                return true;
+            } else {
+                throw new ServerException("Attempting to end PuSH subscription for feed with no hub");
+            }
+        }
+
+        return $this->doSubscribe('unsubscribe');
+    }
+
+    protected function doSubscribe($mode)
+    {
+        $orig = clone($this);
+        $this->verify_token = common_good_rand(16);
+        if ($mode == 'subscribe') {
+            $this->secret = common_good_rand(32);
+        }
+        $this->sub_state = $mode;
+        $this->update($orig);
+        unset($orig);
+
+        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' => 'sync',
+                          'hub.verify_token' => $this->verify_token,
+                          'hub.secret' => $this->secret,
+                          'hub.topic' => $this->uri);
+            $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->uri");
+
+            $orig = clone($this);
+            $this->verify_token = '';
+            $this->sub_state = 'inactive';
+            $this->update($orig);
+            unset($orig);
+
+            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->modified = common_sql_now();
+
+        return $this->update($original);
+    }
+
+    /**
+     * Save PuSH unsubscription confirmation.
+     * Wipes active PuSH sub info and resets state.
+     */
+    public function confirmUnsubscribe()
+    {
+        $original = clone($this);
+
+        // @fixme these should all be null, but DB_DataObject doesn't save null values...?????
+        $this->verify_token = '';
+        $this->secret = '';
+        $this->sub_state = '';
+        $this->sub_start = '';
+        $this->sub_end = '';
+        $this->modified = common_sql_now();
+
+        return $this->update($original);
+    }
+
+    /**
+     * Accept updates from a PuSH feed. If validated, this object and the
+     * feed (as a DOMDocument) will be passed to the StartFeedSubHandleFeed
+     * and EndFeedSubHandleFeed events for processing.
+     *
+     * Not guaranteed to be running in an immediate POST context; may be run
+     * from a queue handler.
+     *
+     * Side effects: the feedsub record's lastupdate field will be updated
+     * to the current time (not published time) if we got a legit update.
+     *
+     * @param string $post source of Atom or RSS feed
+     * @param string $hmac X-Hub-Signature header, if present
+     */
+    public function receive($post, $hmac)
+    {
+        common_log(LOG_INFO, __METHOD__ . ": packet for \"$this->uri\"! $hmac $post");
+
+        if ($this->sub_state != 'active') {
+            common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH for inactive feed $this->uri (in state '$this->sub_state')");
+            return;
+        }
+
+        if ($post === '') {
+            common_log(LOG_ERR, __METHOD__ . ": ignoring empty post");
+            return;
+        }
+
+        if (!$this->validatePushSig($post, $hmac)) {
+            // Per spec we silently drop input with a bad sig,
+            // while reporting receipt to the server.
+            return;
+        }
+
+        $feed = new DOMDocument();
+        if (!$feed->loadXML($post)) {
+            // @fixme might help to include the err message
+            common_log(LOG_ERR, __METHOD__ . ": ignoring invalid XML");
+            return;
+        }
+
+        $orig = clone($this);
+        $this->last_update = common_sql_now();
+        $this->update($orig);
+
+        Event::handle('StartFeedSubReceive', array($this, $feed));
+        Event::handle('EndFeedSubReceive', array($this, $feed));
+    }
+
+    /**
+     * Validate the given Atom chunk and HMAC signature against our
+     * shared secret that was set up at subscription time.
+     *
+     * If we don't have a shared secret, there should be no signature.
+     * If we we do, our the calculated HMAC should match theirs.
+     *
+     * @param string $post raw XML source as POSTed to us
+     * @param string $hmac X-Hub-Signature HTTP header value, or empty
+     * @return boolean true for a match
+     */
+    protected function validatePushSig($post, $hmac)
+    {
+        if ($this->secret) {
+            if (preg_match('/^sha1=([0-9a-fA-F]{40})$/', $hmac, $matches)) {
+                $their_hmac = strtolower($matches[1]);
+                $our_hmac = hash_hmac('sha1', $post, $this->secret);
+                if ($their_hmac === $our_hmac) {
+                    return true;
+                }
+                common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with bad SHA-1 HMAC: got $their_hmac, expected $our_hmac");
+            } else {
+                common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with bogus HMAC '$hmac'");
+            }
+        } else {
+            if (empty($hmac)) {
+                return true;
+            } else {
+                common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with unexpected HMAC '$hmac'");
+            }
+        }
+        return false;
+    }
+
+}
diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php
new file mode 100644 (file)
index 0000000..1ac181f
--- /dev/null
@@ -0,0 +1,305 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * PuSH feed subscription record
+ * @package Hub
+ * @author Brion Vibber <brion@status.net>
+ */
+class HubSub extends Memcached_DataObject
+{
+    public $__table = 'hubsub';
+
+    public $hashkey; // sha1(topic . '|' . $callback); (topic, callback) key is too long for myisam in utf8
+    public $topic;
+    public $callback;
+    public $secret;
+    public $lease;
+    public $sub_start;
+    public $sub_end;
+    public $created;
+    public $modified;
+
+    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,
+                     '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,
+                     'modified' => 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('lease', 'int',
+                                   null, true),
+                     new ColumnDef('sub_start', 'datetime',
+                                   null, true),
+                     new ColumnDef('sub_end', 'datetime',
+                                   null, true),
+                     new ColumnDef('created', 'datetime',
+                                   null, false),
+                     new ColumnDef('modified', '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);
+    }
+
+    /**
+     * Schedule a future verification ping to the subscriber.
+     * If queues are disabled, will be immediate.
+     *
+     * @param string $mode 'subscribe' or 'unsubscribe'
+     * @param string $token hub.verify_token value, if provided by client
+     */
+    function scheduleVerify($mode, $token=null, $retries=null)
+    {
+        if ($retries === null) {
+            $retries = intval(common_config('ostatus', 'hub_retries'));
+        }
+        $data = array('sub' => clone($this),
+                      'mode' => $mode,
+                      'token' => $token,
+                      'retries' => $retries);
+        $qm = QueueManager::get();
+        $qm->enqueue($data, 'hubconf');
+    }
+
+    /**
+     * Send a verification ping to subscriber, and if confirmed apply the changes.
+     * This may create, update, or delete the database record.
+     *
+     * @param string $mode 'subscribe' or 'unsubscribe'
+     * @param string $token hub.verify_token value, if provided by client
+     * @throws ClientException on failure
+     */
+    function verify($mode, $token=null)
+    {
+        assert($mode == 'subscribe' || $mode == 'unsubscribe');
+
+        $challenge = common_good_rand(32);
+        $params = array('hub.mode' => $mode,
+                        'hub.topic' => $this->topic,
+                        'hub.challenge' => $challenge);
+        if ($mode == 'subscribe') {
+            $params['hub.lease_seconds'] = $this->lease;
+        }
+        if ($token !== null) {
+            $params['hub.verify_token'] = $token;
+        }
+
+        // Any existing query string parameters must be preserved
+        $url = $this->callback;
+        if (strpos('?', $url) !== false) {
+            $url .= '&';
+        } else {
+            $url .= '?';
+        }
+        $url .= http_build_query($params, '', '&');
+
+        $request = new HTTPClient();
+        $response = $request->get($url);
+        $status = $response->getStatus();
+
+        if ($status >= 200 && $status < 300) {
+            common_log(LOG_INFO, "Verified $mode of $this->callback:$this->topic");
+        } else {
+            throw new ClientException("Hub subscriber verification returned HTTP $status");
+        }
+
+        $old = HubSub::staticGet($this->topic, $this->callback);
+        if ($mode == 'subscribe') {
+            if ($old) {
+                $this->update($old);
+            } else {
+                $ok = $this->insert();
+            }
+        } else if ($mode == 'unsubscribe') {
+            if ($old) {
+                $old->delete();
+            } else {
+                // That's ok, we're already unsubscribed.
+            }
+        }
+    }
+
+    /**
+     * Insert wrapper; transparently set the hash key from topic and callback columns.
+     * @return mixed success
+     */
+    function insert()
+    {
+        $this->hashkey = self::hashkey($this->topic, $this->callback);
+        $this->created = common_sql_now();
+        $this->modified = common_sql_now();
+        return parent::insert();
+    }
+
+    /**
+     * Update wrapper; transparently update modified column.
+     * @return boolean success
+     */
+    function update($old=null)
+    {
+        $this->modified = common_sql_now();
+        return parent::update($old);
+    }
+
+    /**
+     * Schedule delivery of a 'fat ping' to the subscriber's callback
+     * endpoint. If queues are disabled, this will run immediately.
+     *
+     * @param string $atom well-formed Atom feed
+     * @param int $retries optional count of retries if POST fails; defaults to hub_retries from config or 0 if unset
+     */
+    function distribute($atom, $retries=null)
+    {
+        if ($retries === null) {
+            $retries = intval(common_config('ostatus', 'hub_retries'));
+        }
+
+        $data = array('sub' => clone($this),
+                      'atom' => $atom,
+                      'retries' => $retries);
+        $qm = QueueManager::get();
+        $qm->enqueue($data, 'hubout');
+    }
+
+    /**
+     * 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
+     * @throws Exception (HTTP or general)
+     */
+    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");
+
+        $request = new HTTPClient();
+        $request->setBody($atom);
+        $response = $request->post($this->callback, $headers);
+
+        if ($response->isOk()) {
+            return true;
+        } else {
+            throw new Exception("Callback returned status: " .
+                                $response->getStatus() .
+                                "; body: " .
+                                trim($response->getBody()));
+        }
+    }
+}
+
diff --git a/plugins/OStatus/classes/Magicsig.php b/plugins/OStatus/classes/Magicsig.php
new file mode 100644 (file)
index 0000000..681aec1
--- /dev/null
@@ -0,0 +1,219 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * A sample module to show best practices for StatusNet plugins
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package   StatusNet
+ * @author    James Walker <james@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+require_once 'Crypt/RSA.php';
+
+class Magicsig extends Memcached_DataObject
+{
+
+    const PUBLICKEYREL = 'magic-public-key';
+    
+    public $__table = 'magicsig';
+
+    public $user_id;
+    public $keypair;
+    public $alg;
+    
+    private $_rsa;
+
+    public function __construct($alg = 'RSA-SHA256')
+    {
+        $this->alg = $alg;
+    }
+    
+    public /*static*/ function staticGet($k, $v=null)
+    {
+        return parent::staticGet(__CLASS__, $k, $v);
+    }
+
+
+    function table()
+    {
+        return array(
+            'user_id' => DB_DATAOBJECT_INT,
+            'keypair' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+            'alg'     => DB_DATAOBJECT_STR
+        );
+    }
+
+    static function schemaDef()
+    {
+        return array(new ColumnDef('user_id', 'integer',
+                                   null, true, 'PRI'),
+                     new ColumnDef('keypair', 'varchar',
+                                   255, false),
+                     new ColumnDef('alg', 'varchar',
+                                   64, false));
+    }
+
+
+    function keys()
+    {
+        return array_keys($this->keyTypes());
+    }
+
+    function keyTypes()
+    {
+        return array('user_id' => 'K');
+    }
+
+    function insert()
+    {
+        $this->keypair = $this->toString();
+
+        return parent::insert();
+    }
+
+    public function generate($key_length = 512)
+    {
+        PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
+
+        $keypair = new Crypt_RSA_KeyPair($key_length);
+        $params['public_key'] = $keypair->getPublicKey();
+        $params['private_key'] = $keypair->getPrivateKey();
+
+        $this->_rsa = new Crypt_RSA($params);
+        PEAR::popErrorHandling();
+
+        $this->insert();
+    }
+
+
+    public function toString($full_pair = true)
+    {
+        $public_key = $this->_rsa->_public_key;
+        $private_key = $this->_rsa->_private_key;
+
+        $mod = base64_url_encode($public_key->getModulus());
+        $exp = base64_url_encode($public_key->getExponent());
+        $private_exp = '';
+        if ($full_pair && $private_key->getExponent()) {
+            $private_exp = '.' . base64_url_encode($private_key->getExponent());
+        }
+
+        return 'RSA.' . $mod . '.' . $exp . $private_exp; 
+    }
+    
+    public static function fromString($text)
+    {
+        PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
+
+        $magic_sig = new Magicsig();
+        
+        // remove whitespace
+        $text = preg_replace('/\s+/', '', $text);
+
+        // parse components
+        if (!preg_match('/RSA\.([^\.]+)\.([^\.]+)(.([^\.]+))?/', $text, $matches)) {
+            return false;
+        }
+        
+        $mod = base64_url_decode($matches[1]);
+        $exp = base64_url_decode($matches[2]);
+        if ($matches[4]) {
+            $private_exp = base64_url_decode($matches[4]);
+        }
+
+        $params['public_key'] = new Crypt_RSA_KEY($mod, $exp, 'public');
+        if ($params['public_key']->isError()) {
+            $error = $params['public_key']->getLastError();
+            common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage());
+            return false;
+        }
+        if ($private_exp) {
+            $params['private_key'] = new Crypt_RSA_KEY($mod, $private_exp, 'private');
+            if ($params['private_key']->isError()) {
+                $error = $params['private_key']->getLastError();
+                common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage());
+                return false;
+            }
+        }
+
+        $magic_sig->_rsa = new Crypt_RSA($params);
+        PEAR::popErrorHandling();
+
+        return $magic_sig;
+    }
+
+    public function getName()
+    {
+        return $this->alg;
+    }
+
+    public function getHash()
+    {
+        switch ($this->alg) {
+
+        case 'RSA-SHA256':
+            return 'sha256';
+        }
+
+    }
+    
+    public function sign($bytes)
+    {
+        $sig = $this->_rsa->createSign($bytes, null, 'sha256');
+        if ($this->_rsa->isError()) {
+            $error = $this->_rsa->getLastError();
+            common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage());
+            return false;
+        }
+
+        return $sig;
+    }
+
+    public function verify($signed_bytes, $signature)
+    {
+        $result =  $this->_rsa->validateSign($signed_bytes, $signature, null, 'sha256');
+        if ($this->_rsa->isError()) {
+            $error = $this->keypair->getLastError();
+            common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage());
+            return false;
+        }
+        return $result;
+    }
+        
+}
+
+// Define a sha256 function for hashing
+// (Crypt_RSA should really be updated to use hash() )
+function sha256($bytes)
+{
+    return hash('sha256', $bytes);
+}
+
+function base64_url_encode($input)
+{
+    return strtr(base64_encode($input), '+/', '-_');
+}
+
+function base64_url_decode($input)
+{
+    return base64_decode(strtr($input, '-_', '+/'));
+}
\ No newline at end of file
diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
new file mode 100644 (file)
index 0000000..d669393
--- /dev/null
@@ -0,0 +1,1463 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009-2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+class Ostatus_profile extends Memcached_DataObject
+{
+    public $__table = 'ostatus_profile';
+
+    public $uri;
+
+    public $profile_id;
+    public $group_id;
+
+    public $feeduri;
+    public $salmonuri;
+    public $avatar; // remote URL of the last avatar we saved
+
+    public $created;
+    public $modified;
+
+    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('uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+                     'profile_id' => DB_DATAOBJECT_INT,
+                     'group_id' => DB_DATAOBJECT_INT,
+                     'feeduri' => DB_DATAOBJECT_STR,
+                     'salmonuri' =>  DB_DATAOBJECT_STR,
+                     'avatar' =>  DB_DATAOBJECT_STR,
+                     'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
+                     'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
+    }
+
+    static function schemaDef()
+    {
+        return array(new ColumnDef('uri', 'varchar',
+                                   255, false, 'PRI'),
+                     new ColumnDef('profile_id', 'integer',
+                                   null, true, 'UNI'),
+                     new ColumnDef('group_id', 'integer',
+                                   null, true, 'UNI'),
+                     new ColumnDef('feeduri', 'varchar',
+                                   255, true, 'UNI'),
+                     new ColumnDef('salmonuri', 'text',
+                                   null, true),
+                     new ColumnDef('avatar', 'text',
+                                   null, true),
+                     new ColumnDef('created', 'datetime',
+                                   null, false),
+                     new ColumnDef('modified', '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('uri' => 'K', 'profile_id' => 'U', 'group_id' => 'U', 'feeduri' => 'U');
+    }
+
+    function sequenceKey()
+    {
+        return array(false, false, 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;
+    }
+
+    /**
+     * Returns an ActivityObject describing this remote user or group profile.
+     * Can then be used to generate Atom chunks.
+     *
+     * @return ActivityObject
+     */
+    function asActivityObject()
+    {
+        if ($this->isGroup()) {
+            $object = new ActivityObject();
+            $object->type = 'http://activitystrea.ms/schema/1.0/group';
+            $object->id = $this->uri;
+            $self = $this->localGroup();
+
+            // @fixme put a standard getAvatar() interface on groups too
+            if ($self->homepage_logo) {
+                $object->avatar = $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])) {
+                    // @fixme this ain't used/saved yet
+                    $object->avatarType = $map[$extension];
+                }
+            }
+
+            $object->link = $this->uri; // @fixme accurate?
+            return $object;
+        } else {
+            return ActivityObject::fromProfile($this->localProfile());
+        }
+    }
+
+    /**
+     * 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.
+     *
+     * @fixme replace with wrappers on asActivityObject when it's got everything.
+     *
+     * @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->url;
+                  $avatarType = $avatar->mediatype;
+            }
+        }
+        $xs->elementStart('activity:' . $element);
+        $xs->element(
+            'activity:object-type',
+            null,
+            $type
+        );
+        $xs->element(
+            'id',
+            null,
+            $this->uri); // ?
+        $xs->element('title', null, $self->getBestName());
+
+        $xs->element(
+            'link', array(
+                'type' => $avatarType,
+                'href' => $avatarHref
+            ),
+            ''
+        );
+
+        $xs->elementEnd('activity:' . $element);
+
+        return $xs->getString();
+    }
+
+    /**
+     * @return boolean true if this is a remote group
+     */
+    function isGroup()
+    {
+        if ($this->profile_id && !$this->group_id) {
+            return false;
+        } else if ($this->group_id && !$this->profile_id) {
+            return true;
+        } else if ($this->group_id && $this->profile_id) {
+            throw new ServerException("Invalid ostatus_profile state: both group and profile IDs set for $this->uri");
+        } else {
+            throw new ServerException("Invalid ostatus_profile state: both group and profile IDs empty for $this->uri");
+        }
+    }
+
+    /**
+     * Subscribe a local user to this remote user.
+     * PuSH subscription will be started if necessary, and we'll
+     * send a Salmon notification to the remote server if available
+     * notifying them of the sub.
+     *
+     * @param User $user
+     * @return boolean success
+     * @throws FeedException
+     */
+    public function subscribeLocalToRemote(User $user)
+    {
+        if ($this->isGroup()) {
+            throw new ServerException("Can't subscribe to a remote group");
+        }
+
+        if ($this->subscribe()) {
+            if ($user->subscribeTo($this->localProfile())) {
+                $this->notify($user->getProfile(), ActivityVerb::FOLLOW, $this);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Mark this remote profile as subscribing to the given local user,
+     * and send appropriate notifications to the user.
+     *
+     * This will generally be in response to a subscription notification
+     * from a foreign site to our local Salmon response channel.
+     *
+     * @param User $user
+     * @return boolean success
+     */
+    public function subscribeRemoteToLocal(User $user)
+    {
+        if ($this->isGroup()) {
+            throw new ServerException("Remote groups can't subscribe to local users");
+        }
+
+        Subscription::start($this->localProfile(), $user->getProfile());
+
+        return true;
+    }
+
+    /**
+     * 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
+     * @throws ServerException if feed state is not valid
+     */
+    public function subscribe()
+    {
+        $feedsub = FeedSub::ensureFeed($this->feeduri);
+        if ($feedsub->sub_state == 'active' || $feedsub->sub_state == 'subscribe') {
+            return true;
+        } else if ($feedsub->sub_state == '' || $feedsub->sub_state == 'inactive') {
+            return $feedsub->subscribe();
+        } else if ('unsubscribe') {
+            throw new FeedSubException("Unsub is pending, can't subscribe...");
+        }
+    }
+
+    /**
+     * 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
+     * @throws ServerException if feed state is not valid
+     */
+    public function unsubscribe() {
+        $feedsub = FeedSub::staticGet('uri', $this->feeduri);
+        if ($feedsub->sub_state == 'active') {
+            return $feedsub->unsubscribe();
+        } else if ($feedsub->sub_state == '' || $feedsub->sub_state == 'inactive' || $feedsub->sub_state == 'unsubscribe') {
+            return true;
+        } else if ($feedsub->sub_state == 'subscribe') {
+            throw new FeedSubException("Feed is awaiting subscription, can't unsub...");
+        }
+    }
+
+    /**
+     * Check if this remote profile has any active local subscriptions, and
+     * if not drop the PuSH subscription feed.
+     *
+     * @return boolean
+     */
+    public function garbageCollect()
+    {
+        if ($this->isGroup()) {
+            $members = $this->localGroup()->getMembers(0, 1);
+            $count = $members->N;
+        } else {
+            $count = $this->localProfile()->subscriberCount();
+        }
+        if ($count == 0) {
+            common_log(LOG_INFO, "Unsubscribing from now-unused remote feed $oprofile->feeduri");
+            $this->unsubscribe();
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Send an Activity Streams notification to the remote Salmon endpoint,
+     * if so configured.
+     *
+     * @param Profile $actor  Actor who did the activity
+     * @param string  $verb   Activity::SUBSCRIBE or Activity::JOIN
+     * @param Object  $object object of the action; must define asActivityNoun($tag)
+     */
+    public function notify($actor, $verb, $object=null)
+    {
+        if (!($actor instanceof Profile)) {
+            $type = gettype($actor);
+            if ($type == 'object') {
+                $type = get_class($actor);
+            }
+            throw new ServerException("Invalid actor passed to " . __METHOD__ . ": " . $type);
+        }
+        if ($object == null) {
+            $object = $this;
+        }
+        if ($this->salmonuri) {
+
+            $text = 'update';
+            $id = TagURI::mint('%s:%s:%s',
+                               $verb,
+                               $actor->getURI(),
+                               common_date_iso8601(time()));
+
+            // @fixme consolidate all these NS settings somewhere
+            $attributes = array('xmlns' => Activity::ATOM,
+                                'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/',
+                                'xmlns:thr' => 'http://purl.org/syndication/thread/1.0',
+                                'xmlns:georss' => 'http://www.georss.org/georss',
+                                'xmlns:ostatus' => 'http://ostatus.org/schema/1.0',
+                                'xmlns:poco' => 'http://portablecontacts.net/spec/1.0');
+
+            $entry = new XMLStringer();
+            $entry->elementStart('entry', $attributes);
+            $entry->element('id', null, $id);
+            $entry->element('title', null, $text);
+            $entry->element('summary', null, $text);
+            $entry->element('published', null, common_date_w3dtf(common_sql_now()));
+
+            $entry->element('activity:verb', null, $verb);
+            $entry->raw($actor->asAtomAuthor());
+            $entry->raw($actor->asActivityActor());
+            $entry->raw($object->asActivityNoun('object'));
+            $entry->elementEnd('entry');
+
+            $xml = $entry->getString();
+            common_log(LOG_INFO, "Posting to Salmon endpoint $this->salmonuri: $xml");
+
+            $salmon = new Salmon(); // ?
+            return $salmon->post($this->salmonuri, $xml);
+        }
+        return false;
+    }
+
+    /**
+     * Send a Salmon notification ping immediately, and confirm that we got
+     * an acceptable response from the remote site.
+     *
+     * @param mixed $entry XML string, Notice, or Activity
+     * @return boolean success
+     */
+    public function notifyActivity($entry)
+    {
+        if ($this->salmonuri) {
+            $salmon = new Salmon();
+            return $salmon->post($this->salmonuri, $this->notifyPrepXml($entry));
+        }
+
+        return false;
+    }
+
+    /**
+     * Queue a Salmon notification for later. If queues are disabled we'll
+     * send immediately but won't get the return value.
+     *
+     * @param mixed $entry XML string, Notice, or Activity
+     * @return boolean success
+     */
+    public function notifyDeferred($entry)
+    {
+        if ($this->salmonuri) {
+            $data = array('salmonuri' => $this->salmonuri,
+                          'entry' => $this->notifyPrepXml($entry));
+
+            $qm = QueueManager::get();
+            return $qm->enqueue($data, 'salmon');
+        }
+
+        return false;
+    }
+
+    protected function notifyPrepXml($entry)
+    {
+        $preamble = '<?xml version="1.0" encoding="UTF-8" ?' . '>';
+        if (is_string($entry)) {
+            return $entry;
+        } else if ($entry instanceof Activity) {
+            return $preamble . $entry->asString(true);
+        } else if ($entry instanceof Notice) {
+            return $preamble . $entry->asAtomEntry(true, true);
+        } else {
+            throw new ServerException("Invalid type passed to Ostatus_profile::notify; must be XML string or Activity entry");
+        }
+    }
+
+    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->addNamespace('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_local_url('ApiTimelineUser',
+                                        array('id' => $actor->id,
+                                              'type' => 'atom')),
+                       array('rel' => 'self',
+                             'type' => 'application/atom+xml'));
+
+        $feed->addLink(common_local_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 DOMDocument $feed
+     */
+    public function processFeed($feed, $source)
+    {
+        $entries = $feed->getElementsByTagNameNS(Activity::ATOM, 'entry');
+        if ($entries->length == 0) {
+            common_log(LOG_ERR, __METHOD__ . ": no entries in feed update, ignoring");
+            return;
+        }
+
+        for ($i = 0; $i < $entries->length; $i++) {
+            $entry = $entries->item($i);
+            $this->processEntry($entry, $feed, $source);
+        }
+    }
+
+    /**
+     * Process a posted entry from this feed source.
+     *
+     * @param DOMElement $entry
+     * @param DOMElement $feed for context
+     */
+    public function processEntry($entry, $feed, $source)
+    {
+        $activity = new Activity($entry, $feed);
+
+        if ($activity->verb == ActivityVerb::POST) {
+            $this->processPost($activity, $source);
+        } else {
+            common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb");
+        }
+    }
+
+    /**
+     * Process an incoming post activity from this remote feed.
+     * @param Activity $activity
+     * @param string $method 'push' or 'salmon'
+     * @return mixed saved Notice or false
+     * @fixme break up this function, it's getting nasty long
+     */
+    public function processPost($activity, $method)
+    {
+        if ($this->isGroup()) {
+            // A group feed will contain posts from multiple authors.
+            // @fixme validate these profiles in some way!
+            $oprofile = self::ensureActorProfile($activity);
+            if ($oprofile->isGroup()) {
+                // Groups can't post notices in StatusNet.
+                common_log(LOG_WARNING, "OStatus: skipping post with group listed as author: $oprofile->uri in feed from $this->uri");
+                return false;
+            }
+        } else {
+            // Individual user feeds may contain only posts from themselves.
+            // Authorship is validated against the profile URI on upper layers,
+            // through PuSH setup or Salmon signature checks.
+            $actorUri = self::getActorProfileURI($activity);
+            if ($actorUri == $this->uri) {
+                // Check if profile info has changed and update it
+                $this->updateFromActivityObject($activity->actor);
+            } else {
+                common_log(LOG_WARNING, "OStatus: skipping post with bad author: got $actorUri expected $this->uri");
+                return false;
+            }
+            $oprofile = $this;
+        }
+
+        // The id URI will be used as a unique identifier for for the notice,
+        // protecting against duplicate saves. It isn't required to be a URL;
+        // tag: URIs for instance are found in Google Buzz feeds.
+        $sourceUri = $activity->object->id;
+        $dupe = Notice::staticGet('uri', $sourceUri);
+        if ($dupe) {
+            common_log(LOG_INFO, "OStatus: ignoring duplicate post: $sourceUri");
+            return false;
+        }
+
+        // We'll also want to save a web link to the original notice, if provided.
+        $sourceUrl = null;
+        if ($activity->object->link) {
+            $sourceUrl = $activity->object->link;
+        } else if ($activity->link) {
+            $sourceUrl = $activity->link;
+        } else if (preg_match('!^https?://!', $activity->object->id)) {
+            $sourceUrl = $activity->object->id;
+        }
+
+        // Get (safe!) HTML and text versions of the content
+        $rendered = $this->purify($activity->object->content);
+        $content = html_entity_decode(strip_tags($rendered));
+
+        $shortened = common_shorten_links($content);
+
+        // If it's too long, try using the summary, and make the
+        // HTML an attachment.
+
+        $attachment = null;
+
+        if (Notice::contentTooLong($shortened)) {
+            $attachment = $this->saveHTMLFile($activity->object->title, $rendered);
+            $summary = $activity->object->summary;
+            if (empty($summary)) {
+                $summary = $content;
+            }
+            $shortSummary = common_shorten_links($summary);
+            if (Notice::contentTooLong($shortSummary)) {
+                $url = common_shorten_url(common_local_url('attachment',
+                                                           array('attachment' => $attachment->id)));
+                $shortSummary = substr($shortSummary,
+                                       0,
+                                       Notice::maxContent() - (mb_strlen($url) + 2));
+                $shortSummary .= '… ' . $url;
+                $content = $shortSummary;
+                $rendered = common_render_text($content);
+            }
+        }
+
+        $options = array('is_local' => Notice::REMOTE_OMB,
+                        'url' => $sourceUrl,
+                        'uri' => $sourceUri,
+                        'rendered' => $rendered,
+                        'replies' => array(),
+                        'groups' => array(),
+                        'tags' => array());
+
+
+        // Check for optional attributes...
+
+        if (!empty($activity->time)) {
+            $options['created'] = common_sql_date($activity->time);
+        }
+
+        if ($activity->context) {
+            // Any individual or group attn: targets?
+            $replies = $activity->context->attention;
+            $options['groups'] = $this->filterReplies($oprofile, $replies);
+            $options['replies'] = $replies;
+
+            // Maintain direct reply associations
+            // @fixme what about conversation ID?
+            if (!empty($activity->context->replyToID)) {
+                $orig = Notice::staticGet('uri',
+                                          $activity->context->replyToID);
+                if (!empty($orig)) {
+                    $options['reply_to'] = $orig->id;
+                }
+            }
+
+            $location = $activity->context->location;
+            if ($location) {
+                $options['lat'] = $location->lat;
+                $options['lon'] = $location->lon;
+                if ($location->location_id) {
+                    $options['location_ns'] = $location->location_ns;
+                    $options['location_id'] = $location->location_id;
+                }
+            }
+        }
+
+        // Atom categories <-> hashtags
+        foreach ($activity->categories as $cat) {
+            if ($cat->term) {
+                $term = common_canonical_tag($cat->term);
+                if ($term) {
+                    $options['tags'][] = $term;
+                }
+            }
+        }
+
+        try {
+            $saved = Notice::saveNew($oprofile->profile_id,
+                                     $content,
+                                     'ostatus',
+                                     $options);
+            if ($saved) {
+                Ostatus_source::saveNew($saved, $this, $method);
+                if (!empty($attachment)) {
+                    File_to_post::processNew($attachment->id, $saved->id);
+                }
+            }
+        } catch (Exception $e) {
+            common_log(LOG_ERR, "OStatus save of remote message $sourceUri failed: " . $e->getMessage());
+            throw $e;
+        }
+        common_log(LOG_INFO, "OStatus saved remote message $sourceUri as notice id $saved->id");
+        return $saved;
+    }
+
+    /**
+     * Clean up HTML
+     */
+    protected function purify($html)
+    {
+        require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
+        $config = array('safe' => 1);
+        return htmLawed($html, $config);
+    }
+
+    /**
+     * Filters a list of recipient ID URIs to just those for local delivery.
+     * @param Ostatus_profile local profile of sender
+     * @param array in/out &$attention_uris set of URIs, will be pruned on output
+     * @return array of group IDs
+     */
+    protected function filterReplies($sender, &$attention_uris)
+    {
+        common_log(LOG_DEBUG, "Original reply recipients: " . implode(', ', $attention_uris));
+        $groups = array();
+        $replies = array();
+        foreach ($attention_uris as $recipient) {
+            // Is the recipient a local user?
+            $user = User::staticGet('uri', $recipient);
+            if ($user) {
+                // @fixme sender verification, spam etc?
+                $replies[] = $recipient;
+                continue;
+            }
+
+            // Is the recipient a remote group?
+            $oprofile = Ostatus_profile::staticGet('uri', $recipient);
+            if ($oprofile) {
+                if ($oprofile->isGroup()) {
+                    // Deliver to local members of this remote group.
+                    // @fixme sender verification?
+                    $groups[] = $oprofile->group_id;
+                } else {
+                    common_log(LOG_DEBUG, "Skipping reply to remote profile $recipient");
+                }
+                continue;
+            }
+
+            // Is the recipient a local group?
+            // @fixme we need a uri on user_group
+            // $group = User_group::staticGet('uri', $recipient);
+            $template = common_local_url('groupbyid', array('id' => '31337'));
+            $template = preg_quote($template, '/');
+            $template = str_replace('31337', '(\d+)', $template);
+            if (preg_match("/$template/", $recipient, $matches)) {
+                $id = $matches[1];
+                $group = User_group::staticGet('id', $id);
+                if ($group) {
+                    // Deliver to all members of this local group if allowed.
+                    $profile = $sender->localProfile();
+                    if ($profile->isMember($group)) {
+                        $groups[] = $group->id;
+                    } else {
+                        common_log(LOG_DEBUG, "Skipping reply to local group $group->nickname as sender $profile->id is not a member");
+                    }
+                    continue;
+                } else {
+                    common_log(LOG_DEBUG, "Skipping reply to bogus group $recipient");
+                }
+            }
+
+            common_log(LOG_DEBUG, "Skipping reply to unrecognized profile $recipient");
+
+        }
+        $attention_uris = $replies;
+        common_log(LOG_DEBUG, "Local reply recipients: " . implode(', ', $replies));
+        common_log(LOG_DEBUG, "Local group recipients: " . implode(', ', $groups));
+        return $groups;
+    }
+
+    /**
+     * @param string $profile_url
+     * @return Ostatus_profile
+     * @throws FeedSubException
+     */
+    public static function ensureProfile($profile_uri, $hints=array())
+    {
+        // Get the canonical feed URI and check it
+        $discover = new FeedDiscovery();
+        $feeduri = $discover->discoverFromURL($profile_uri);
+
+        //$feedsub = FeedSub::ensureFeed($feeduri, $discover->feed);
+        $huburi = $discover->getAtomLink('hub');
+        $salmonuri = $discover->getAtomLink('salmon');
+
+        if (!$huburi) {
+            // We can only deal with folks with a PuSH hub
+            throw new FeedSubNoHubException();
+        }
+
+        // Try to get a profile from the feed activity:subject
+
+        $feedEl = $discover->feed->documentElement;
+
+        $subject = ActivityUtils::child($feedEl, Activity::SUBJECT, Activity::SPEC);
+
+        if (!empty($subject)) {
+            $subjObject = new ActivityObject($subject);
+            return self::ensureActivityObjectProfile($subjObject, $feeduri, $salmonuri, $hints);
+        }
+
+        // Otherwise, try the feed author
+
+        $author = ActivityUtils::child($feedEl, Activity::AUTHOR, Activity::ATOM);
+
+        if (!empty($author)) {
+            $authorObject = new ActivityObject($author);
+            return self::ensureActivityObjectProfile($authorObject, $feeduri, $salmonuri, $hints);
+        }
+
+        // Sheesh. Not a very nice feed! Let's try fingerpoken in the
+        // entries.
+
+        $entries = $discover->feed->getElementsByTagNameNS(Activity::ATOM, 'entry');
+
+        if (!empty($entries) && $entries->length > 0) {
+
+            $entry = $entries->item(0);
+
+            $actor = ActivityUtils::child($entry, Activity::ACTOR, Activity::SPEC);
+
+            if (!empty($actor)) {
+                $actorObject = new ActivityObject($actor);
+                return self::ensureActivityObjectProfile($actorObject, $feeduri, $salmonuri, $hints);
+
+            }
+
+            $author = ActivityUtils::child($entry, Activity::AUTHOR, Activity::ATOM);
+
+            if (!empty($author)) {
+                $authorObject = new ActivityObject($author);
+                return self::ensureActivityObjectProfile($authorObject, $feeduri, $salmonuri, $hints);
+            }
+        }
+
+        // XXX: make some educated guesses here
+
+        throw new FeedSubException("Can't find enough profile information to make a feed.");
+    }
+
+    /**
+     *
+     * Download and update given avatar image
+     * @param string $url
+     * @throws Exception in various failure cases
+     */
+    protected function updateAvatar($url)
+    {
+        if ($url == $this->avatar) {
+            // We've already got this one.
+            return;
+        }
+
+        if ($this->isGroup()) {
+            $self = $this->localGroup();
+        } else {
+            $self = $this->localProfile();
+        }
+        if (!$self) {
+            throw new ServerException(sprintf(
+                _m("Tried to update avatar for unsaved remote profile %s"),
+                $this->uri));
+        }
+
+        // @fixme this should be better encapsulated
+        // ripped from oauthstore.php (for old OMB client)
+        $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
+        if (!copy($url, $temp_filename)) {
+            throw new ServerException(sprintf(_m("Unable to fetch avatar from %s"), $url));
+        }
+
+        if ($this->isGroup()) {
+            $id = $this->group_id;
+        } else {
+            $id = $this->profile_id;
+        }
+        // @fixme should we be using different ids?
+        $imagefile = new ImageFile($id, $temp_filename);
+        $filename = Avatar::filename($id,
+                                     image_type_to_extension($imagefile->type),
+                                     null,
+                                     common_timestamp());
+        rename($temp_filename, Avatar::path($filename));
+        $self->setOriginal($filename);
+
+        $orig = clone($this);
+        $this->avatar = $url;
+        $this->update($orig);
+    }
+
+    /**
+     * Pull avatar URL from ActivityObject or profile hints
+     *
+     * @param ActivityObject $object
+     * @param array $hints
+     * @return mixed URL string or false
+     */
+
+    protected static function getActivityObjectAvatar($object, $hints=array())
+    {
+        if ($object->avatar) {
+            return $object->avatar;
+        } else if (array_key_exists('avatar', $hints)) {
+            return $hints['avatar'];
+        }
+        return false;
+    }
+
+    /**
+     * Get an appropriate avatar image source URL, if available.
+     *
+     * @param ActivityObject $actor
+     * @param DOMElement $feed
+     * @return string
+     */
+
+    protected static function getAvatar($actor, $feed)
+    {
+        $url = '';
+        $icon = '';
+        if ($actor->avatar) {
+            $url = trim($actor->avatar);
+        }
+        if (!$url) {
+            // Check <atom:logo> and <atom:icon> on the feed
+            $els = $feed->childNodes();
+            if ($els && $els->length) {
+                for ($i = 0; $i < $els->length; $i++) {
+                    $el = $els->item($i);
+                    if ($el->namespaceURI == Activity::ATOM) {
+                        if (empty($url) && $el->localName == 'logo') {
+                            $url = trim($el->textContent);
+                            break;
+                        }
+                        if (empty($icon) && $el->localName == 'icon') {
+                            // Use as a fallback
+                            $icon = trim($el->textContent);
+                        }
+                    }
+                }
+            }
+            if ($icon && !$url) {
+                $url = $icon;
+            }
+        }
+        if ($url) {
+            $opts = array('allowed_schemes' => array('http', 'https'));
+            if (Validate::uri($url, $opts)) {
+                return $url;
+            }
+        }
+        return common_path('plugins/OStatus/images/96px-Feed-icon.svg.png');
+    }
+
+    /**
+     * Fetch, or build if necessary, an Ostatus_profile for the actor
+     * in a given Activity Streams activity.
+     *
+     * @param Activity $activity
+     * @param string $feeduri if we already know the canonical feed URI!
+     * @param string $salmonuri if we already know the salmon return channel URI
+     * @return Ostatus_profile
+     */
+
+    public static function ensureActorProfile($activity, $feeduri=null, $salmonuri=null)
+    {
+        return self::ensureActivityObjectProfile($activity->actor, $feeduri, $salmonuri);
+    }
+
+    public static function ensureActivityObjectProfile($object, $feeduri=null, $salmonuri=null, $hints=array())
+    {
+        $profile = self::getActivityObjectProfile($object);
+        if ($profile) {
+            $profile->updateFromActivityObject($object, $hints);
+        } else {
+            $profile = self::createActivityObjectProfile($object, $feeduri, $salmonuri, $hints);
+        }
+        return $profile;
+    }
+
+    /**
+     * @param Activity $activity
+     * @return mixed matching Ostatus_profile or false if none known
+     */
+    public static function getActorProfile($activity)
+    {
+        return self::getActivityObjectProfile($activity->actor);
+    }
+
+    protected static function getActivityObjectProfile($object)
+    {
+        $uri = self::getActivityObjectProfileURI($object);
+        return Ostatus_profile::staticGet('uri', $uri);
+    }
+
+    protected static function getActorProfileURI($activity)
+    {
+        return self::getActivityObjectProfileURI($activity->actor);
+    }
+
+    /**
+     * @param Activity $activity
+     * @return string
+     * @throws ServerException
+     */
+    protected static function getActivityObjectProfileURI($object)
+    {
+        $opts = array('allowed_schemes' => array('http', 'https'));
+        if ($object->id && Validate::uri($object->id, $opts)) {
+            return $object->id;
+        }
+        if ($object->link && Validate::uri($object->link, $opts)) {
+            return $object->link;
+        }
+        throw new ServerException("No author ID URI found");
+    }
+
+    /**
+     * @fixme validate stuff somewhere
+     */
+
+    protected static function createActorProfile($activity, $feeduri=null, $salmonuri=null)
+    {
+        $actor = $activity->actor;
+
+        self::createActivityObjectProfile($actor, $feeduri, $salmonuri);
+    }
+
+    /**
+     * Create local ostatus_profile and profile/user_group entries for
+     * the provided remote user or group.
+     *
+     * @param ActivityObject $object
+     * @param string $feeduri
+     * @param string $salmonuri
+     * @param array $hints
+     *
+     * @fixme fold $feeduri/$salmonuri into $hints
+     * @return Ostatus_profile
+     */
+    protected static function createActivityObjectProfile($object, $feeduri=null, $salmonuri=null, $hints=array())
+    {
+        $homeuri  = $object->id;
+
+        if (!$homeuri) {
+            common_log(LOG_DEBUG, __METHOD__ . " empty actor profile URI: " . var_export($activity, true));
+            throw new ServerException("No profile URI");
+        }
+
+        if (empty($feeduri)) {
+            if (array_key_exists('feedurl', $hints)) {
+                $feeduri = $hints['feedurl'];
+            }
+        }
+
+        if (empty($salmonuri)) {
+            if (array_key_exists('salmon', $hints)) {
+                $salmonuri = $hints['salmon'];
+            }
+        }
+
+        if (!$feeduri || !$salmonuri) {
+            // Get the canonical feed URI and check it
+            $discover = new FeedDiscovery();
+            $feeduri = $discover->discoverFromURL($homeuri);
+
+            $huburi = $discover->getAtomLink('hub');
+            $salmonuri = $discover->getAtomLink('salmon');
+
+            if (!$huburi) {
+                // We can only deal with folks with a PuSH hub
+                throw new FeedSubNoHubException();
+            }
+        }
+
+        $oprofile = new Ostatus_profile();
+
+        $oprofile->uri        = $homeuri;
+        $oprofile->feeduri    = $feeduri;
+        $oprofile->salmonuri  = $salmonuri;
+
+        $oprofile->created    = common_sql_now();
+        $oprofile->modified   = common_sql_now();
+
+        if ($object->type == ActivityObject::PERSON) {
+            $profile = new Profile();
+            self::updateProfile($profile, $object, $hints);
+            $profile->created  = common_sql_now();
+
+            $oprofile->profile_id = $profile->insert();
+            if (!$oprofile->profile_id) {
+                throw new ServerException("Can't save local profile");
+            }
+        } else {
+            $group = new User_group();
+            $group->created = common_sql_now();
+            self::updateGroup($group, $object, $hints);
+
+            $oprofile->group_id = $group->insert();
+            if (!$oprofile->group_id) {
+                throw new ServerException("Can't save local profile");
+            }
+        }
+
+        $ok = $oprofile->insert();
+
+        if ($ok) {
+            $avatar = self::getActivityObjectAvatar($object, $hints);
+            if ($avatar) {
+                $oprofile->updateAvatar($avatar);
+            }
+            return $oprofile;
+        } else {
+            throw new ServerException("Can't save OStatus profile");
+        }
+    }
+
+    /**
+     * Save any updated profile information to our local copy.
+     * @param ActivityObject $object
+     * @param array $hints
+     */
+    public function updateFromActivityObject($object, $hints=array())
+    {
+        if ($this->isGroup()) {
+            $group = $this->localGroup();
+            self::updateGroup($group, $object, $hints);
+        } else {
+            $profile = $this->localProfile();
+            self::updateProfile($profile, $object, $hints);
+        }
+        $avatar = self::getActivityObjectAvatar($object, $hints);
+        if ($avatar) {
+            $this->updateAvatar($avatar);
+        }
+    }
+
+    protected static function updateProfile($profile, $object, $hints=array())
+    {
+        $orig = clone($profile);
+
+        $profile->nickname = self::getActivityObjectNickname($object, $hints);
+        $profile->fullname = $object->title;
+        if (!empty($object->link)) {
+            $profile->profileurl = $object->link;
+        } else if (array_key_exists('profileurl', $hints)) {
+            $profile->profileurl = $hints['profileurl'];
+        }
+
+        $profile->bio      = self::getActivityObjectBio($object, $hints);
+        $profile->location = self::getActivityObjectLocation($object, $hints);
+        $profile->homepage = self::getActivityObjectHomepage($object, $hints);
+
+        if (!empty($object->geopoint)) {
+            $location = ActivityContext::locationFromPoint($object->geopoint);
+            if (!empty($location)) {
+                $profile->lat = $location->lat;
+                $profile->lon = $location->lon;
+            }
+        }
+
+        // @fixme tags/categories
+        // @todo tags from categories
+
+        if ($profile->id) {
+            common_log(LOG_DEBUG, "Updating OStatus profile $profile->id from remote info $object->id: " . var_export($object, true) . var_export($hints, true));
+            $profile->update($orig);
+        }
+    }
+
+    protected static function updateGroup($group, $object, $hints=array())
+    {
+        $orig = clone($group);
+
+        // @fixme need to make nick unique etc *hack hack*
+        $group->nickname = self::getActivityObjectNickname($object, $hints);
+        $group->fullname = $object->title;
+
+        // @fixme no canonical profileurl; using homepage instead for now
+        $group->homepage = $object->id;
+
+        // @fixme homepage
+        // @fixme bio
+        // @fixme tags/categories
+        // @fixme location?
+        // @todo tags from categories
+        // @todo lat/lon/location?
+
+        if ($group->id) {
+            common_log(LOG_DEBUG, "Updating OStatus group $group->id from remote info $object->id: " . var_export($object, true) . var_export($hints, true));
+            $group->update($orig);
+        }
+    }
+
+    protected static function getActivityObjectHomepage($object, $hints=array())
+    {
+        $homepage = null;
+        $poco     = $object->poco;
+
+        if (!empty($poco)) {
+            $url = $poco->getPrimaryURL();
+            if ($url->type == 'homepage') {
+                $homepage = $url->value;
+            }
+        }
+
+        // @todo Try for a another PoCo URL?
+
+        return $homepage;
+    }
+
+    protected static function getActivityObjectLocation($object, $hints=array())
+    {
+        $location = null;
+
+        if (!empty($object->poco)) {
+            if (isset($object->poco->address->formatted)) {
+                $location = $object->poco->address->formatted;
+                if (mb_strlen($location) > 255) {
+                    $location = mb_substr($note, 0, 255 - 3) . ' … ';
+                }
+            }
+        }
+
+        // @todo Try to find location some othe way? Via goerss point?
+
+        return $location;
+    }
+
+    protected static function getActivityObjectBio($object, $hints=array())
+    {
+        $bio  = null;
+
+        if (!empty($object->poco)) {
+            $note = $object->poco->note;
+            if (!empty($note)) {
+                if (mb_strlen($note) > Profile::maxBio()) {
+                    // XXX: truncate ok?
+                    $bio = mb_substr($note, 0, Profile::maxBio() - 3) . ' … ';
+                } else {
+                    $bio = $note;
+                }
+            }
+        }
+
+        // @todo Try to get bio info some other way?
+
+        return $bio;
+    }
+
+    protected static function getActivityObjectNickname($object, $hints=array())
+    {
+        if ($object->poco) {
+            if (!empty($object->poco->preferredUsername)) {
+                return common_nicknamize($object->poco->preferredUsername);
+            }
+        }
+        if (!empty($object->nickname)) {
+            return common_nicknamize($object->nickname);
+        }
+
+        // Try the definitive ID
+
+        $nickname = self::nicknameFromURI($object->id);
+
+        // Try a Webfinger if one was passed (way) down
+
+        if (empty($nickname)) {
+            if (array_key_exists('webfinger', $hints)) {
+                $nickname = self::nicknameFromURI($hints['webfinger']);
+            }
+        }
+
+        // Try the name
+
+        if (empty($nickname)) {
+            $nickname = common_nicknamize($object->title);
+        }
+
+        return $nickname;
+    }
+
+    protected static function nicknameFromURI($uri)
+    {
+        preg_match('/(\w+):/', $uri, $matches);
+
+        $protocol = $matches[1];
+
+        switch ($protocol) {
+        case 'acct':
+        case 'mailto':
+            if (preg_match("/^$protocol:(.*)?@.*\$/", $uri, $matches)) {
+                return common_canonical_nickname($matches[1]);
+            }
+            return null;
+        case 'http':
+            return common_url_to_nickname($uri);
+            break;
+        default:
+            return null;
+        }
+    }
+
+    public static function ensureWebfinger($addr)
+    {
+        // First, look it up
+
+        $oprofile = Ostatus_profile::staticGet('uri', 'acct:'.$addr);
+
+        if (!empty($oprofile)) {
+            return $oprofile;
+        }
+
+        // Now, try some discovery
+
+        $wf = new Webfinger();
+
+        $result = $wf->lookup($addr);
+
+        if (!$result) {
+            return null;
+        }
+
+        foreach ($result->links as $link) {
+            switch ($link['rel']) {
+            case Webfinger::PROFILEPAGE:
+                $profileUrl = $link['href'];
+                break;
+            case 'salmon':
+                $salmonEndpoint = $link['href'];
+                break;
+            case Webfinger::UPDATESFROM:
+                $feedUrl = $link['href'];
+                break;
+            default:
+                common_log(LOG_NOTICE, "Don't know what to do with rel = '{$link['rel']}'");
+                break;
+            }
+        }
+
+        $hints = array('webfinger' => $addr,
+                       'profileurl' => $profileUrl,
+                       'feedurl' => $feedUrl,
+                       'salmon' => $salmonEndpoint);
+
+        // If we got a feed URL, try that
+
+        if (isset($feedUrl)) {
+            try {
+                $oprofile = self::ensureProfile($feedUrl, $hints);
+                return $oprofile;
+            } catch (Exception $e) {
+                common_log(LOG_WARNING, "Failed creating profile from feed URL '$feedUrl': " . $e->getMessage());
+                // keep looking
+            }
+        }
+
+        // If we got a profile page, try that!
+
+        if (isset($profileUrl)) {
+            try {
+                $oprofile = self::ensureProfile($profileUrl, $hints);
+                return $oprofile;
+            } catch (Exception $e) {
+                common_log(LOG_WARNING, "Failed creating profile from profile URL '$profileUrl': " . $e->getMessage());
+                // keep looking
+            }
+        }
+
+        // XXX: try hcard
+        // XXX: try FOAF
+
+        if (isset($salmonEndpoint)) {
+
+            // An account URL, a salmon endpoint, and a dream? Not much to go
+            // on, but let's give it a try
+
+            $uri = 'acct:'.$addr;
+
+            $profile = new Profile();
+
+            $profile->nickname = self::nicknameFromUri($uri);
+            $profile->created  = common_sql_now();
+
+            if (isset($profileUrl)) {
+                $profile->profileurl = $profileUrl;
+            }
+
+            $profile_id = $profile->insert();
+
+            if (!$profile_id) {
+                common_log_db_error($profile, 'INSERT', __FILE__);
+                throw new Exception("Couldn't save profile for '$addr'");
+            }
+
+            $oprofile = new Ostatus_profile();
+
+            $oprofile->uri        = $uri;
+            $oprofile->salmonuri  = $salmonEndpoint;
+            $oprofile->profile_id = $profile_id;
+            $oprofile->created    = common_sql_now();
+
+            if (isset($feedUrl)) {
+                $profile->feeduri = $feedUrl;
+            }
+
+            $result = $oprofile->insert();
+
+            if (!$result) {
+                common_log_db_error($oprofile, 'INSERT', __FILE__);
+                throw new Exception("Couldn't save ostatus_profile for '$addr'");
+            }
+
+            return $oprofile;
+        }
+
+        return null;
+    }
+
+    function saveHTMLFile($title, $rendered)
+    {
+        $final = sprintf("<!DOCTYPE html>\n<html><head><title>%s</title></head>".
+                         '<body><div>%s</div></body></html>',
+                         htmlspecialchars($title),
+                         $rendered);
+
+        $filename = File::filename($this->localProfile(),
+                                   'ostatus', // ignored?
+                                   'text/html');
+
+        $filepath = File::path($filename);
+
+        file_put_contents($filepath, $final);
+
+        $file = new File;
+
+        $file->filename = $filename;
+        $file->url      = File::url($filename);
+        $file->size     = filesize($filepath);
+        $file->date     = time();
+        $file->mimetype = 'text/html';
+
+        $file_id = $file->insert();
+
+        if ($file_id === false) {
+            common_log_db_error($file, "INSERT", __FILE__);
+            throw new ServerException(_('Could not store HTML content of long post as file.'));
+        }
+
+        return $file;
+    }
+}
diff --git a/plugins/OStatus/classes/Ostatus_source.php b/plugins/OStatus/classes/Ostatus_source.php
new file mode 100644 (file)
index 0000000..e6ce7d4
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+class Ostatus_source extends Memcached_DataObject
+{
+    public $__table = 'ostatus_source';
+
+    public $notice_id; // notice we're referring to
+    public $profile_uri; // uri of the ostatus_profile this came through -- may be a group feed
+    public $method; // push or salmon
+
+    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('notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+                     'profile_uri' => DB_DATAOBJECT_STR,
+                     'method' => DB_DATAOBJECT_STR);
+    }
+
+    static function schemaDef()
+    {
+        return array(new ColumnDef('notice_id', 'integer',
+                                   null, false, 'PRI'),
+                     new ColumnDef('profile_uri', 'varchar',
+                                   255, false),
+                     new ColumnDef('method', "ENUM('push','salmon')",
+                                   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('notice_id' => 'K');
+    }
+
+    function sequenceKey()
+    {
+        return array(false, false, false);
+    }
+
+    /**
+     * Save a remote notice source record; this helps indicate how trusted we are.
+     * @param string $method
+     */
+    public static function saveNew(Notice $notice, Ostatus_profile $oprofile, $method)
+    {
+        $osource = new Ostatus_source();
+        $osource->notice_id = $notice->id;
+        $osource->profile_uri = $oprofile->uri;
+        $osource->method = $method;
+        if ($osource->insert()) {
+           return true;
+        } else {
+            common_log_db_error($osource, 'INSERT', __FILE__);
+            return false;
+        }
+    }
+}
diff --git a/plugins/OStatus/extlib/Crypt/RSA.php b/plugins/OStatus/extlib/Crypt/RSA.php
new file mode 100644 (file)
index 0000000..16dfa54
--- /dev/null
@@ -0,0 +1,524 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    1.2.0b
+ * @link       http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * RSA error handling facilities
+ */
+require_once 'Crypt/RSA/ErrorHandler.php';
+
+/**
+ * loader for math wrappers
+ */
+require_once 'Crypt/RSA/MathLoader.php';
+
+/**
+ * helper class for mange single key
+ */
+require_once 'Crypt/RSA/Key.php';
+
+/**
+ * helper class for manage key pair
+ */
+require_once 'Crypt/RSA/KeyPair.php';
+
+/**
+ * Crypt_RSA class, derived from Crypt_RSA_ErrorHandler
+ *
+ * Provides the following functions:
+ *  - setParams($params) - sets parameters of current object
+ *  - encrypt($plain_data, $key = null) - encrypts data
+ *  - decrypt($enc_data, $key = null) - decrypts data
+ *  - createSign($doc, $private_key = null) - signs document by private key
+ *  - validateSign($doc, $signature, $public_key = null) - validates signature of document
+ *
+ * Example usage:
+ *     // creating an error handler
+ *     $error_handler = create_function('$obj', 'echo "error: ", $obj->getMessage(), "\n"');
+ *
+ *     // 1024-bit key pair generation
+ *     $key_pair = new Crypt_RSA_KeyPair(1024);
+ *
+ *     // check consistence of Crypt_RSA_KeyPair object
+ *     $error_handler($key_pair);
+ *
+ *     // creating Crypt_RSA object
+ *     $rsa_obj = new Crypt_RSA;
+ *
+ *     // check consistence of Crypt_RSA object
+ *     $error_handler($rsa_obj);
+ *
+ *     // set error handler on Crypt_RSA object ( see Crypt/RSA/ErrorHandler.php for details )
+ *     $rsa_obj->setErrorHandler($error_handler);
+ *
+ *     // encryption (usually using public key)
+ *     $enc_data = $rsa_obj->encrypt($plain_data, $key_pair->getPublicKey());
+ *
+ *     // decryption (usually using private key)
+ *     $plain_data = $rsa_obj->decrypt($enc_data, $key_pair->getPrivateKey());
+ *
+ *     // signing
+ *     $signature = $rsa_obj->createSign($document, $key_pair->getPrivateKey());
+ *
+ *     // signature checking
+ *     $is_valid = $rsa_obj->validateSign($document, $signature, $key_pair->getPublicKey());
+ *
+ *     // signing many documents by one private key
+ *     $rsa_obj = new Crypt_RSA(array('private_key' => $key_pair->getPrivateKey()));
+ *     // check consistence of Crypt_RSA object
+ *     $error_handler($rsa_obj);
+ *     // set error handler ( see Crypt/RSA/ErrorHandler.php for details )
+ *     $rsa_obj->setErrorHandler($error_handler);
+ *     // sign many documents
+ *     $sign_1 = $rsa_obj->sign($doc_1);
+ *     $sign_2 = $rsa_obj->sign($doc_2);
+ *     //...
+ *     $sign_n = $rsa_obj->sign($doc_n);
+ *
+ *     // changing default hash function, which is used for sign
+ *     // creating/validation
+ *     $rsa_obj->setParams(array('hash_func' => 'md5'));
+ *
+ *     // using factory() method instead of constructor (it returns PEAR_Error object on failure)
+ *     $rsa_obj = &Crypt_RSA::factory();
+ *     if (PEAR::isError($rsa_obj)) {
+ *         echo "error: ", $rsa_obj->getMessage(), "\n";
+ *     }
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @link       http://pear.php.net/package/Crypt_RSA
+ * @version    @package_version@
+ * @access     public
+ */
+class Crypt_RSA extends Crypt_RSA_ErrorHandler
+{
+    /**
+     * Reference to math wrapper, which is used to
+     * manipulate large integers in RSA algorithm.
+     *
+     * @var object of Crypt_RSA_Math_* class
+     * @access private
+     */
+    var $_math_obj;
+
+    /**
+     * key for encryption, which is used by encrypt() method
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_enc_key;
+
+    /**
+     * key for decryption, which is used by decrypt() method
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_dec_key;
+
+    /**
+     * public key, which is used by validateSign() method
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_public_key;
+
+    /**
+     * private key, which is used by createSign() method
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_private_key;
+
+    /**
+     * name of hash function, which is used by validateSign()
+     * and createSign() methods. Default hash function is SHA-1
+     *
+     * @var string
+     * @access private
+     */
+    var $_hash_func = 'sha1';
+
+    /**
+     * Crypt_RSA constructor.
+     *
+     * @param array $params
+     *        Optional associative array of parameters, such as:
+     *        enc_key, dec_key, private_key, public_key, hash_func.
+     *        See setParams() method for more detailed description of
+     *        these parameters.
+     * @param string $wrapper_name
+     *        Name of math wrapper, which will be used to
+     *        perform different operations with big integers.
+     *        See contents of Crypt/RSA/Math folder for examples of wrappers.
+     *        Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     * @param string $error_handler   name of error handler function
+     *
+     * @access public
+     */
+    function Crypt_RSA($params = null, $wrapper_name = 'default', $error_handler = '')
+    {
+        // set error handler
+        $this->setErrorHandler($error_handler);
+        // try to load math wrapper
+        $obj = &Crypt_RSA_MathLoader::loadWrapper($wrapper_name);
+        if ($this->isError($obj)) {
+            // error during loading of math wrapper
+            // Crypt_RSA object is partially constructed.
+            $this->pushError($obj);
+            return;
+        }
+        $this->_math_obj = &$obj;
+
+        if (!is_null($params)) {
+            if (!$this->setParams($params)) {
+                // error in Crypt_RSA::setParams() function
+                return;
+            }
+        }
+    }
+
+    /**
+     * Crypt_RSA factory.
+     *
+     * @param array $params
+     *        Optional associative array of parameters, such as:
+     *        enc_key, dec_key, private_key, public_key, hash_func.
+     *        See setParams() method for more detailed description of
+     *        these parameters.
+     * @param string $wrapper_name
+     *        Name of math wrapper, which will be used to
+     *        perform different operations with big integers.
+     *        See contents of Crypt/RSA/Math folder for examples of wrappers.
+     *        Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     * @param string $error_handler   name of error handler function
+     *
+     * @return object  new Crypt_RSA object on success or PEAR_Error object on failure
+     * @access public
+     */
+    function &factory($params = null, $wrapper_name = 'default', $error_handler = '')
+    {
+        $obj = &new Crypt_RSA($params, $wrapper_name, $error_handler);
+        if ($obj->isError()) {
+            // error during creating a new object. Retrurn PEAR_Error object
+            return $obj->getLastError();
+        }
+        // object created successfully. Return it
+        return $obj;
+    }
+
+    /**
+     * Accepts any combination of available parameters as associative array:
+     *     enc_key - encryption key for encrypt() method
+     *     dec_key - decryption key for decrypt() method
+     *     public_key - key for validateSign() method
+     *     private_key - key for createSign() method
+     *     hash_func - name of hash function, which will be used to create and validate sign
+     *
+     * @param array $params
+     *        associative array of permitted parameters (see above)
+     *
+     * @return bool   true on success or false on error
+     * @access public
+     */
+    function setParams($params)
+    {
+        if (!is_array($params)) {
+            $this->pushError('parameters must be passed to function as associative array', CRYPT_RSA_ERROR_WRONG_PARAMS);
+            return false;
+        }
+
+        if (isset($params['enc_key'])) {
+            if (Crypt_RSA_Key::isValid($params['enc_key'])) {
+                $this->_enc_key = $params['enc_key'];
+            }
+            else {
+                $this->pushError('wrong encryption key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+                return false;
+            }
+        }
+        if (isset($params['dec_key'])) {
+            if (Crypt_RSA_Key::isValid($params['dec_key'])) {
+                $this->_dec_key = $params['dec_key'];
+            }
+            else {
+                $this->pushError('wrong decryption key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+                return false;
+            }
+        }
+        if (isset($params['private_key'])) {
+            if (Crypt_RSA_Key::isValid($params['private_key'])) {
+                if ($params['private_key']->getKeyType() != 'private') {
+                    $this->pushError('private key must have "private" attribute', CRYPT_RSA_ERROR_WRONG_KEY_TYPE);
+                    return false;
+                }
+                $this->_private_key = $params['private_key'];
+            }
+            else {
+                $this->pushError('wrong private key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+                return false;
+            }
+        }
+        if (isset($params['public_key'])) {
+            if (Crypt_RSA_Key::isValid($params['public_key'])) {
+                if ($params['public_key']->getKeyType() != 'public') {
+                    $this->pushError('public key must have "public" attribute', CRYPT_RSA_ERROR_WRONG_KEY_TYPE);
+                    return false;
+                }
+                $this->_public_key = $params['public_key'];
+            }
+            else {
+                $this->pushError('wrong public key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+                return false;
+            }
+        }
+        if (isset($params['hash_func'])) {
+            if (!function_exists($params['hash_func'])) {
+                $this->pushError('cannot find hash function with name [' . $params['hash_func'] . ']', CRYPT_RSA_ERROR_WRONG_HASH_FUNC);
+                return false;
+            }
+            $this->_hash_func = $params['hash_func'];
+        }
+        return true; // all ok
+    }
+
+    /**
+     * Ecnrypts $plain_data by the key $this->_enc_key or $key.
+     *
+     * @param string $plain_data  data, which must be encrypted
+     * @param object $key         encryption key (object of Crypt_RSA_Key class)
+     * @return mixed
+     *         encrypted data as string on success or false on error
+     *
+     * @access public
+     */
+    function encrypt($plain_data, $key = null)
+    {
+        $enc_data = $this->encryptBinary($plain_data, $key);
+        if ($enc_data !== false) {
+            return base64_encode($enc_data);
+        }
+        // error during encripting data
+        return false;
+    }
+
+    /**
+     * Ecnrypts $plain_data by the key $this->_enc_key or $key.
+     *
+     * @param string $plain_data  data, which must be encrypted
+     * @param object $key         encryption key (object of Crypt_RSA_Key class)
+     * @return mixed
+     *         encrypted data as binary string on success or false on error
+     *
+     * @access public
+     */
+    function encryptBinary($plain_data, $key = null)
+    {
+        if (is_null($key)) {
+            // use current encryption key
+            $key = $this->_enc_key;
+        }
+        else if (!Crypt_RSA_Key::isValid($key)) {
+            $this->pushError('invalid encryption key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+            return false;
+        }
+
+        // append tail \x01 to plain data. It needs for correctly decrypting of data
+        $plain_data .= "\x01";
+
+        $plain_data = $this->_math_obj->bin2int($plain_data);
+        $exp = $this->_math_obj->bin2int($key->getExponent());
+        $modulus = $this->_math_obj->bin2int($key->getModulus());
+
+        // divide plain data into chunks
+        $data_len = $this->_math_obj->bitLen($plain_data);
+        $chunk_len = $key->getKeyLength() - 1;
+        $block_len = (int) ceil($chunk_len / 8);
+        $curr_pos = 0;
+        $enc_data = '';
+        while ($curr_pos < $data_len) {
+            $tmp = $this->_math_obj->subint($plain_data, $curr_pos, $chunk_len);
+            $enc_data .= str_pad(
+                $this->_math_obj->int2bin($this->_math_obj->powmod($tmp, $exp, $modulus)),
+                $block_len,
+                "\0"
+            );
+            $curr_pos += $chunk_len;
+        }
+        return $enc_data;
+    }
+
+    /**
+     * Decrypts $enc_data by the key $this->_dec_key or $key.
+     *
+     * @param string $enc_data  encrypted data as string
+     * @param object $key       decryption key (object of RSA_Crypt_Key class)
+     * @return mixed
+     *         decrypted data as string on success or false on error
+     *
+     * @access public
+     */
+    function decrypt($enc_data, $key = null)
+    {
+        $enc_data = base64_decode($enc_data);
+        return $this->decryptBinary($enc_data, $key);
+    }
+
+    /**
+     * Decrypts $enc_data by the key $this->_dec_key or $key.
+     *
+     * @param string $enc_data  encrypted data as binary string
+     * @param object $key       decryption key (object of RSA_Crypt_Key class)
+     * @return mixed
+     *         decrypted data as string on success or false on error
+     *
+     * @access public
+     */
+    function decryptBinary($enc_data, $key = null)
+    {
+        if (is_null($key)) {
+            // use current decryption key
+            $key = $this->_dec_key;
+        }
+        else if (!Crypt_RSA_Key::isValid($key)) {
+            $this->pushError('invalid decryption key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+            return false;
+        }
+
+        $exp = $this->_math_obj->bin2int($key->getExponent());
+        $modulus = $this->_math_obj->bin2int($key->getModulus());
+
+        $data_len = strlen($enc_data);
+        $chunk_len = $key->getKeyLength() - 1;
+        $block_len = (int) ceil($chunk_len / 8);
+        $curr_pos = 0;
+        $bit_pos = 0;
+        $plain_data = $this->_math_obj->bin2int("\0");
+        while ($curr_pos < $data_len) {
+            $tmp = $this->_math_obj->bin2int(substr($enc_data, $curr_pos, $block_len));
+            $tmp = $this->_math_obj->powmod($tmp, $exp, $modulus);
+            $plain_data = $this->_math_obj->bitOr($plain_data, $tmp, $bit_pos);
+            $bit_pos += $chunk_len;
+            $curr_pos += $block_len;
+        }
+        $result = $this->_math_obj->int2bin($plain_data);
+
+        // delete tail, containing of \x01
+        $tail = ord($result{strlen($result) - 1});
+        if ($tail != 1) {
+            $this->pushError("Error tail of decrypted text = {$tail}. Expected 1", CRYPT_RSA_ERROR_WRONG_TAIL);
+            return false;
+        }
+        return substr($result, 0, -1);
+    }
+
+    /**
+     * Creates sign for document $document, using $this->_private_key or $private_key
+     * as private key and $this->_hash_func or $hash_func as hash function.
+     *
+     * @param string $document     document, which must be signed
+     * @param object $private_key  private key (object of Crypt_RSA_Key type)
+     * @param string $hash_func    name of hash function, which will be used during signing
+     * @return mixed
+     *         signature of $document as string on success or false on error
+     *
+     * @access public
+     */
+    function createSign($document, $private_key = null, $hash_func = null)
+    {
+        // check private key
+        if (is_null($private_key)) {
+            $private_key = $this->_private_key;
+        }
+        else if (!Crypt_RSA_Key::isValid($private_key)) {
+            $this->pushError('invalid private key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+            return false;
+        }
+        if ($private_key->getKeyType() != 'private') {
+            $this->pushError('signing key must be private', CRYPT_RSA_ERROR_NEED_PRV_KEY);
+            return false;
+        }
+
+        // check hash_func
+        if (is_null($hash_func)) {
+            $hash_func = $this->_hash_func;
+        }
+        if (!function_exists($hash_func)) {
+            $this->pushError("cannot find hash function with name [$hash_func]", CRYPT_RSA_ERROR_WRONG_HASH_FUNC);
+            return false;
+        }
+
+        return $this->encrypt($hash_func($document), $private_key);
+    }
+
+    /**
+     * Validates $signature for document $document with public key $this->_public_key
+     * or $public_key and hash function $this->_hash_func or $hash_func.
+     *
+     * @param string $document    document, signature of which must be validated
+     * @param string $signature   signature, which must be validated
+     * @param object $public_key  public key (object of Crypt_RSA_Key class)
+     * @param string $hash_func   hash function, which will be used during validating signature
+     * @return mixed
+     *         true, if signature of document is valid
+     *         false, if signature of document is invalid
+     *         null on error
+     *
+     * @access public
+     */
+    function validateSign($document, $signature, $public_key = null, $hash_func = null)
+    {
+        // check public key
+        if (is_null($public_key)) {
+            $public_key = $this->_public_key;
+        }
+        else if (!Crypt_RSA_Key::isValid($public_key)) {
+            $this->pushError('invalid public key. It must be an object of Crypt_RSA_Key class', CRYPT_RSA_ERROR_WRONG_KEY);
+            return null;
+        }
+        if ($public_key->getKeyType() != 'public') {
+            $this->pushError('validating key must be public', CRYPT_RSA_ERROR_NEED_PUB_KEY);
+            return null;
+        }
+
+        // check hash_func
+        if (is_null($hash_func)) {
+            $hash_func = $this->_hash_func;
+        }
+        if (!function_exists($hash_func)) {
+            $this->pushError("cannot find hash function with name [$hash_func]", CRYPT_RSA_ERROR_WRONG_HASH_FUNC);
+            return null;
+        }
+
+        return $hash_func($document) == $this->decrypt($signature, $public_key);
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/plugins/OStatus/extlib/Crypt/RSA/ErrorHandler.php b/plugins/OStatus/extlib/Crypt/RSA/ErrorHandler.php
new file mode 100644 (file)
index 0000000..8f39741
--- /dev/null
@@ -0,0 +1,234 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   CVS: $Id: ErrorHandler.php,v 1.4 2009/01/05 08:30:29 clockwerx Exp $
+ * @link      http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * uses PEAR's error handling
+ */
+require_once 'PEAR.php';
+
+/**
+ * cannot load required extension for math wrapper
+ */
+define('CRYPT_RSA_ERROR_NO_EXT', 1);
+
+/**
+ * cannot load any math wrappers.
+ * Possible reasons:
+ *  - there is no any wrappers (they must exist in Crypt/RSA/Math folder )
+ *  - all available wrappers are incorrect (read docs/Crypt_RSA/docs/math_wrappers.txt )
+ *  - cannot load any extension, required by available wrappers
+ */
+define('CRYPT_RSA_ERROR_NO_WRAPPERS', 2);
+
+/**
+ * cannot find file, containing requested math wrapper
+ */
+define('CRYPT_RSA_ERROR_NO_FILE', 3);
+
+/**
+ * cannot find math wrapper class in the math wrapper file
+ */
+define('CRYPT_RSA_ERROR_NO_CLASS', 4);
+
+/**
+ * invalid key type passed to function (it must be 'public' or 'private')
+ */
+define('CRYPT_RSA_ERROR_WRONG_KEY_TYPE', 5);
+
+/**
+ * key modulus must be greater than key exponent
+ */
+define('CRYPT_RSA_ERROR_EXP_GE_MOD', 6);
+
+/**
+ * missing $key_len parameter in Crypt_RSA_KeyPair::generate($key_len) function
+ */
+define('CRYPT_RSA_ERROR_MISSING_KEY_LEN', 7);
+
+/**
+ * wrong key object passed to function (it must be an object of Crypt_RSA_Key class)
+ */
+define('CRYPT_RSA_ERROR_WRONG_KEY', 8);
+
+/**
+ * wrong name of hash function passed to Crypt_RSA::setParams() function
+ */
+define('CRYPT_RSA_ERROR_WRONG_HASH_FUNC', 9);
+
+/**
+ * key, used for signing, must be private
+ */
+define('CRYPT_RSA_ERROR_NEED_PRV_KEY', 10);
+
+/**
+ * key, used for sign validating, must be public
+ */
+define('CRYPT_RSA_ERROR_NEED_PUB_KEY', 11);
+
+/**
+ * parameters must be passed to function as associative array
+ */
+define('CRYPT_RSA_ERROR_WRONG_PARAMS', 12);
+
+/**
+ * error tail of decrypted text. Maybe, wrong decryption key?
+ */
+define('CRYPT_RSA_ERROR_WRONG_TAIL', 13);
+
+/**
+ * Crypt_RSA_ErrorHandler class.
+ *
+ * This class is used as base for Crypt_RSA, Crypt_RSA_Key
+ * and Crypt_RSA_KeyPair classes.
+ *
+ * It provides following functions:
+ *   - isError() - returns true, if list contains errors, else returns false
+ *   - getErrorList() - returns error list
+ *   - getLastError() - returns last error from error list or false, if list is empty
+ *   - pushError($errstr) - pushes $errstr into the error list
+ *   - setErrorHandler($new_error_handler) - sets error handler function
+ *   - getErrorHandler() - returns name of error handler function
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   Release: @package_version@
+ * @link      http://pear.php.net/package/Crypt_RSA
+ * @access    public
+ */
+class Crypt_RSA_ErrorHandler
+{
+    /**
+     * array of error objects, pushed by $this->pushError()
+     *
+     * @var array
+     * @access private
+     */
+    var $_errors = array();
+
+    /**
+     * name of error handler - function, which calls on $this->pushError() call
+     *
+     * @var string
+     * @access private
+     */
+    var $_error_handler = '';
+
+    /**
+     * Returns true if list of errors is not empty, else returns false
+     *
+     * @param mixed $err Check if the object is an error
+     *
+     * @return bool    true, if list of errors is not empty or $err is PEAR_Error object, else false
+     * @access public
+     */
+    function isError($err = null)
+    {
+        return is_null($err) ? (sizeof($this->_errors) > 0) : PEAR::isError($err);
+    }
+
+    /**
+     * Returns list of all errors, pushed to error list by $this->pushError()
+     *
+     * @return array    list of errors (usually it contains objects of PEAR_Error class)
+     * @access public
+     */
+    function getErrorList()
+    {
+        return $this->_errors;
+    }
+
+    /**
+     * Returns last error from errors list or false, if list is empty
+     *
+     * @return mixed
+     *         last error from errors list (usually it is PEAR_Error object)
+     *         or false, if list is empty.
+     *
+     * @access public
+     */
+    function getLastError()
+    {
+        $len = sizeof($this->_errors);
+        return $len ? $this->_errors[$len - 1] : false;
+    }
+
+    /**
+     * pushes error object $error to the error list
+     *
+     * @param string $errstr error string
+     * @param int    $errno  error number
+     *
+     * @return bool          true on success, false on error
+     * @access public
+     */
+    function pushError($errstr, $errno = 0)
+    {
+        $this->_errors[] = PEAR::raiseError($errstr, $errno);
+
+        if ($this->_error_handler != '') {
+            // call user defined error handler
+            $func = $this->_error_handler;
+            $func($this);
+        }
+        return true;
+    }
+
+    /**
+     * sets error handler to function with name $func_name.
+     * Function $func_name must accept one parameter - current
+     * object, which triggered error.
+     *
+     * @param string $func_name name of error handler function
+     *
+     * @return bool             true on success, false on error
+     * @access public
+     */
+    function setErrorHandler($func_name = '')
+    {
+        if ($func_name == '') {
+            $this->_error_handler = '';
+        }
+        if (!function_exists($func_name)) {
+            return false;
+        }
+        $this->_error_handler = $func_name;
+        return true;
+    }
+
+    /**
+     * returns name of current error handler, or null if there is no error handler
+     *
+     * @return mixed  error handler name as string or null, if there is no error handler
+     * @access public
+     */
+    function getErrorHandler()
+    {
+        return $this->_error_handler;
+    }
+}
+
+?>
diff --git a/plugins/OStatus/extlib/Crypt/RSA/Key.php b/plugins/OStatus/extlib/Crypt/RSA/Key.php
new file mode 100644 (file)
index 0000000..6595302
--- /dev/null
@@ -0,0 +1,315 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   CVS: $Id: Key.php,v 1.6 2009/01/05 08:30:29 clockwerx Exp $
+ * @link      http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * RSA error handling facilities
+ */
+require_once 'Crypt/RSA/ErrorHandler.php';
+
+/**
+ * loader for RSA math wrappers
+ */
+require_once 'Crypt/RSA/MathLoader.php';
+
+/**
+ * Crypt_RSA_Key class, derived from Crypt_RSA_ErrorHandler
+ *
+ * Provides the following functions:
+ *  - getKeyLength() - returns bit key length
+ *  - getExponent() - returns key exponent as binary string
+ *  - getModulus() - returns key modulus as binary string
+ *  - getKeyType() - returns type of the key (public or private)
+ *  - toString() - returns serialized key as string
+ *  - fromString($key_str) - static function; returns key, unserialized from string
+ *  - isValid($key) - static function for validating of $key
+ *
+ * Example usage:
+ *    // create new 1024-bit key pair
+ *    $key_pair = new Crypt_RSA_KeyPair(1024);
+ * 
+ *    // get public key (its class is Crypt_RSA_Key)
+ *    $key = $key_pair->getPublicKey();
+ *
+ *    // get key length
+ *    $len = $key->getKeyLength();
+ *
+ *    // get modulus as string
+ *    $modulus = $key->getModulus();
+ *
+ *    // get exponent as string
+ *    $exponent = $key->getExponent();
+ *
+ *    // get string represenation of key (use it instead of serialization of Crypt_RSA_Key object)
+ *    $key_in_str = $key->toString();
+ *
+ *    // restore key object from string using 'BigInt' math wrapper
+ *    $key = Crypt_RSA_Key::fromString($key_in_str, 'BigInt');
+ *
+ *    // error check
+ *    if ($key->isError()) {
+ *        echo "error while unserializing key object:\n";
+ *        $erorr = $key->getLastError();
+ *        echo $error->getMessage(), "\n";
+ *    }
+ *
+ *    // validate key
+ *    if (Crypt_RSA_Key::isValid($key)) echo 'valid key';
+ *    else echo 'invalid key';
+ *
+ *    // using factory() method instead of constructor (it returns PEAR_Error object on failure)
+ *    $rsa_obj = &Crypt_RSA_Key::factory($modulus, $exp, $key_type);
+ *    if (PEAR::isError($rsa_obj)) {
+ *        echo "error: ", $rsa_obj->getMessage(), "\n";
+ *    }
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   Release: @package_version@
+ * @link      http://pear.php.net/package/Crypt_RSA
+ * @access    public
+ */
+class Crypt_RSA_Key extends Crypt_RSA_ErrorHandler
+{
+    /**
+     * Reference to math wrapper object, which is used to
+     * manipulate large integers in RSA algorithm.
+     *
+     * @var object of Crypt_RSA_Math_* class
+     * @access private
+     */
+    var $_math_obj;
+
+    /**
+     * shared modulus
+     *
+     * @var string
+     * @access private
+     */
+    var $_modulus;
+
+    /**
+     * exponent
+     *
+     * @var string
+     * @access private
+     */
+    var $_exp;
+
+    /**
+     * key type (private or public)
+     *
+     * @var string
+     * @access private
+     */
+    var $_key_type;
+
+    /**
+     * key length in bits
+     *
+     * @var int
+     * @access private
+     */
+    var $_key_len;
+
+    /**
+     * Crypt_RSA_Key constructor.
+     *
+     * You should pass in the name of math wrapper, which will be used to
+     *        perform different operations with big integers.
+     *        See contents of Crypt/RSA/Math folder for examples of wrappers.
+     *        Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     *
+     * @param string $modulus       key modulus
+     * @param string $exp           key exponent
+     * @param string $key_type      type of the key (public or private)
+     * @param string $wrapper_name  wrapper to use
+     * @param string $error_handler name of error handler function
+     *
+     * @access public
+     */
+    function Crypt_RSA_Key($modulus, $exp, $key_type, $wrapper_name = 'default', $error_handler = '')
+    {
+        // set error handler
+        $this->setErrorHandler($error_handler);
+        // try to load math wrapper $wrapper_name
+        $obj = &Crypt_RSA_MathLoader::loadWrapper($wrapper_name);
+        if ($this->isError($obj)) {
+            // error during loading of math wrapper
+            $this->pushError($obj); // push error object into error list
+            return;
+        }
+        $this->_math_obj = &$obj;
+
+        $this->_modulus = $modulus;
+        $this->_exp = $exp;
+
+        if (!in_array($key_type, array('private', 'public'))) {
+            $this->pushError('invalid key type. It must be private or public', CRYPT_RSA_ERROR_WRONG_KEY_TYPE);
+            return;
+        }
+        $this->_key_type = $key_type;
+
+        /* check length of modulus & exponent ( abs(modulus) > abs(exp) ) */
+        $mod_num = $this->_math_obj->bin2int($this->_modulus);
+        $exp_num = $this->_math_obj->bin2int($this->_exp);
+
+        if ($this->_math_obj->cmpAbs($mod_num, $exp_num) <= 0) {
+            $this->pushError('modulus must be greater than exponent', CRYPT_RSA_ERROR_EXP_GE_MOD);
+            return;
+        }
+
+        // determine key length
+        $this->_key_len = $this->_math_obj->bitLen($mod_num);
+    }
+
+    /**
+     * Crypt_RSA_Key factory.
+     *
+     * @param string $modulus       key modulus
+     * @param string $exp           key exponent
+     * @param string $key_type      type of the key (public or private)
+     * @param string $wrapper_name  wrapper to use
+     * @param string $error_handler name of error handler function
+     *
+     * @return object   new Crypt_RSA_Key object on success or PEAR_Error object on failure
+     * @access public
+     */
+    function factory($modulus, $exp, $key_type, $wrapper_name = 'default', $error_handler = '')
+    {
+        $obj = new Crypt_RSA_Key($modulus, $exp, $key_type, $wrapper_name, $error_handler);
+        if ($obj->isError()) {
+            // error during creating a new object. Retrurn PEAR_Error object
+            return $obj->getLastError();
+        }
+        // object created successfully. Return it
+        return $obj;
+    }
+
+    /**
+     * Calculates bit length of the key
+     *
+     * @return int    bit length of key
+     * @access public
+     */
+    function getKeyLength()
+    {
+        return $this->_key_len;
+    }
+
+    /**
+     * Returns modulus part of the key as binary string,
+     * which can be used to construct new Crypt_RSA_Key object.
+     *
+     * @return string  modulus as binary string
+     * @access public
+     */
+    function getModulus()
+    {
+        return $this->_modulus;
+    }
+
+    /**
+     * Returns exponent part of the key as binary string,
+     * which can be used to construct new Crypt_RSA_Key object.
+     *
+     * @return string  exponent as binary string
+     * @access public
+     */
+    function getExponent()
+    {
+        return $this->_exp;
+    }
+
+    /**
+     * Returns key type (public, private)
+     *
+     * @return string  key type (public, private)
+     * @access public
+     */
+    function getKeyType()
+    {
+        return $this->_key_type;
+    }
+
+    /**
+     * Returns string representation of key
+     *
+     * @return string  key, serialized to string
+     * @access public
+     */
+    function toString()
+    {
+        return base64_encode(
+            serialize(
+                array($this->_modulus, $this->_exp, $this->_key_type)
+            )
+        );
+    }
+
+    /**
+     * Returns Crypt_RSA_Key object, unserialized from
+     * string representation of key.
+     *
+     * optional parameter $wrapper_name - is the name of math wrapper,
+     * which will be used during unserialization of this object.
+     *
+     * This function can be called statically:
+     *     $key = Crypt_RSA_Key::fromString($key_in_string, 'BigInt');
+     *
+     * @param string $key_str      RSA key, serialized into string
+     * @param string $wrapper_name optional math wrapper name
+     *
+     * @return object        key as Crypt_RSA_Key object
+     * @access public
+     * @static
+     */
+    function fromString($key_str, $wrapper_name = 'default')
+    {
+        list($modulus, $exponent, $key_type) = unserialize(base64_decode($key_str));
+        $obj = new Crypt_RSA_Key($modulus, $exponent, $key_type, $wrapper_name);
+        return $obj;
+    }
+
+    /**
+     * Validates key
+     * This function can be called statically:
+     *    $is_valid = Crypt_RSA_Key::isValid($key)
+     *
+     * Returns true, if $key is valid Crypt_RSA key, else returns false
+     *
+     * @param object $key Crypt_RSA_Key object for validating
+     *
+     * @return bool        true if $key is valid, else false
+     * @access public
+     */
+    function isValid($key)
+    {
+        return (is_object($key) && strtolower(get_class($key)) === strtolower(__CLASS__));
+    }
+}
+
+?>
diff --git a/plugins/OStatus/extlib/Crypt/RSA/KeyPair.php b/plugins/OStatus/extlib/Crypt/RSA/KeyPair.php
new file mode 100644 (file)
index 0000000..ecc0b7d
--- /dev/null
@@ -0,0 +1,804 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   CVS: $Id: KeyPair.php,v 1.7 2009/01/05 08:30:29 clockwerx Exp $
+ * @link      http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * RSA error handling facilities
+ */
+require_once 'Crypt/RSA/ErrorHandler.php';
+
+/**
+ * loader for RSA math wrappers
+ */
+require_once 'Crypt/RSA/MathLoader.php';
+
+/**
+ * helper class for single key managing
+ */
+require_once 'Crypt/RSA/Key.php';
+
+/**
+ * Crypt_RSA_KeyPair class, derived from Crypt_RSA_ErrorHandler
+ *
+ * Provides the following functions:
+ *  - generate($key) - generates new key pair
+ *  - getPublicKey() - returns public key
+ *  - getPrivateKey() - returns private key
+ *  - getKeyLength() - returns bit key length
+ *  - setRandomGenerator($func_name) - sets random generator to $func_name
+ *  - fromPEMString($str) - retrieves keypair from PEM-encoded string
+ *  - toPEMString() - stores keypair to PEM-encoded string
+ *  - isEqual($keypair2) - compares current keypair to $keypair2
+ *
+ * Example usage:
+ *    // create new 1024-bit key pair
+ *    $key_pair = new Crypt_RSA_KeyPair(1024);
+ *
+ *    // error check
+ *    if ($key_pair->isError()) {
+ *        echo "error while initializing Crypt_RSA_KeyPair object:\n";
+ *        $erorr = $key_pair->getLastError();
+ *        echo $error->getMessage(), "\n";
+ *    }
+ *
+ *    // get public key
+ *    $public_key = $key_pair->getPublicKey();
+ * 
+ *    // get private key
+ *    $private_key = $key_pair->getPrivateKey();
+ * 
+ *    // generate new 512-bit key pair
+ *    $key_pair->generate(512);
+ *
+ *    // error check
+ *    if ($key_pair->isError()) {
+ *        echo "error while generating key pair:\n";
+ *        $erorr = $key_pair->getLastError();
+ *        echo $error->getMessage(), "\n";
+ *    }
+ *
+ *    // get key pair length
+ *    $length = $key_pair->getKeyLength();
+ *
+ *    // set random generator to $func_name, where $func_name
+ *    // consists name of random generator function. See comments
+ *    // before setRandomGenerator() method for details
+ *    $key_pair->setRandomGenerator($func_name);
+ *
+ *    // error check
+ *    if ($key_pair->isError()) {
+ *        echo "error while changing random generator:\n";
+ *        $erorr = $key_pair->getLastError();
+ *        echo $error->getMessage(), "\n";
+ *    }
+ *
+ *    // using factory() method instead of constructor (it returns PEAR_Error object on failure)
+ *    $rsa_obj = &Crypt_RSA_KeyPair::factory($key_len);
+ *    if (PEAR::isError($rsa_obj)) {
+ *        echo "error: ", $rsa_obj->getMessage(), "\n";
+ *    }
+ *
+ *    // read key pair from PEM-encoded string:
+ *    $str = "-----BEGIN RSA PRIVATE KEY-----"
+ *         . "MCsCAQACBHr5LDkCAwEAAQIEBc6jbQIDAOCfAgMAjCcCAk3pAgJMawIDAL41"
+ *         . "-----END RSA PRIVATE KEY-----";
+ *    $keypair = Crypt_RSA_KeyPair::fromPEMString($str);
+ *
+ *    // read key pair from .pem file 'private.pem':
+ *    $str = file_get_contents('private.pem');
+ *    $keypair = Crypt_RSA_KeyPair::fromPEMString($str);
+ *
+ *    // generate and write 1024-bit key pair to .pem file 'private_new.pem'
+ *    $keypair = new Crypt_RSA_KeyPair(1024);
+ *    $str = $keypair->toPEMString();
+ *    file_put_contents('private_new.pem', $str);
+ *
+ *    // compare $keypair1 to $keypair2
+ *    if ($keypair1->isEqual($keypair2)) {
+ *        echo "keypair1 = keypair2\n";
+ *    }
+ *    else {
+ *        echo "keypair1 != keypair2\n";
+ *    }
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright 2005 Alexander Valyalkin
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   Release: @package_version@
+ * @link      http://pear.php.net/package/Crypt_RSA
+ * @access    public
+ */
+class Crypt_RSA_KeyPair extends Crypt_RSA_ErrorHandler
+{
+    /**
+     * Reference to math wrapper object, which is used to
+     * manipulate large integers in RSA algorithm.
+     *
+     * @var object of Crypt_RSA_Math_* class
+     * @access private
+     */
+    var $_math_obj;
+
+    /**
+     * length of each key in the key pair
+     *
+     * @var int
+     * @access private
+     */
+    var $_key_len;
+
+    /**
+     * public key
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_public_key;
+
+    /**
+     * private key
+     *
+     * @var object of Crypt_RSA_KEY class
+     * @access private
+     */
+    var $_private_key;
+
+    /**
+     * name of function, which is used as random generator
+     *
+     * @var string
+     * @access private
+     */
+    var $_random_generator;
+
+    /**
+     * RSA keypair attributes [version, n, e, d, p, q, dmp1, dmq1, iqmp] as associative array
+     *
+     * @var array
+     * @access private
+     */
+    var $_attrs;
+
+    /**
+     * Returns names of keypair attributes from $this->_attrs array
+     *
+     * @return array  Array of keypair attributes names
+     * @access private
+     */
+    function _get_attr_names() 
+    {
+        return array('version', 'n', 'e', 'd', 'p', 'q', 'dmp1', 'dmq1', 'iqmp');
+    }
+
+    /**
+     * Parses ASN.1 string [$str] starting form position [$pos].
+     * Returns tag and string value of parsed object.
+     *
+     * @param string                 $str
+     * @param int                    &$pos
+     * @param Crypt_RSA_ErrorHandler &$err_handler
+     *
+     * @return mixed    Array('tag' => ..., 'str' => ...) on success, false on error
+     * @access private
+     */
+    function _ASN1Parse($str, &$pos, &$err_handler)
+    {
+        $max_pos = strlen($str);
+        if ($max_pos < 2) {
+            $err_handler->pushError("ASN.1 string too short");
+            return false;
+        }
+
+        // get ASN.1 tag value
+        $tag = ord($str[$pos++]) & 0x1f;
+        if ($tag == 0x1f) {
+            $tag = 0;
+            do {
+                $n = ord($str[$pos++]);
+                $tag <<= 7;
+                $tag |= $n & 0x7f;
+            } while (($n & 0x80) && $pos < $max_pos);
+        }
+        if ($pos >= $max_pos) {
+            $err_handler->pushError("ASN.1 string too short");
+            return false;
+        }
+
+        // get ASN.1 object length
+        $len = ord($str[$pos++]);
+        if ($len & 0x80) {
+            $n = $len & 0x1f;
+            $len = 0;
+            while ($n-- && $pos < $max_pos) {
+                $len <<= 8;
+                $len |= ord($str[$pos++]);
+            }
+        }
+        if ($pos >= $max_pos || $len > $max_pos - $pos) {
+            $err_handler->pushError("ASN.1 string too short");
+            return false;
+        }
+
+        // get string value of ASN.1 object
+        $str = substr($str, $pos, $len);
+
+        return array(
+            'tag' => $tag,
+            'str' => $str,
+        );
+    }
+
+    /**
+     * Parses ASN.1 sting [$str] starting from position [$pos].
+     * Returns string representation of number, which can be passed
+     * in bin2int() function of math wrapper.
+     *
+     * @param string                 $str
+     * @param int                    &$pos
+     * @param Crypt_RSA_ErrorHandler &$err_handler
+     *
+     * @return mixed   string representation of parsed number on success, false on error
+     * @access private
+     */
+    function _ASN1ParseInt($str, &$pos, &$err_handler)
+    {
+        $tmp = Crypt_RSA_KeyPair::_ASN1Parse($str, $pos, $err_handler);
+        if ($err_handler->isError()) {
+            return false;
+        }
+        if ($tmp['tag'] != 0x02) {
+            $errstr = sprintf("wrong ASN tag value: 0x%02x. Expected 0x02 (INTEGER)", $tmp['tag']);
+            $err_handler->pushError($errstr);
+            return false;
+        }
+        $pos += strlen($tmp['str']);
+
+        return strrev($tmp['str']);
+    }
+
+    /**
+     * Constructs ASN.1 string from tag $tag and object $str
+     *
+     * @param string $str            ASN.1 object string
+     * @param int    $tag            ASN.1 tag value
+     * @param bool   $is_constructed 
+     * @param bool   $is_private 
+     *
+     * @return ASN.1-encoded string
+     * @access private
+     */
+    function _ASN1Store($str, $tag, $is_constructed = false, $is_private = false)
+    {
+        $out = '';
+
+        // encode ASN.1 tag value
+        $tag_ext = ($is_constructed ? 0x20 : 0) | ($is_private ? 0xc0 : 0);
+        if ($tag < 0x1f) {
+            $out .= chr($tag | $tag_ext);
+        } else {
+            $out .= chr($tag_ext | 0x1f);
+            $tmp = chr($tag & 0x7f);
+            $tag >>= 7;
+            while ($tag) {
+                $tmp .= chr(($tag & 0x7f) | 0x80);
+                $tag >>= 7;
+            }
+            $out .= strrev($tmp);
+        }
+
+        // encode ASN.1 object length
+        $len = strlen($str);
+        if ($len < 0x7f) {
+            $out .= chr($len);
+        } else {
+            $tmp = '';
+            $n = 0;
+            while ($len) {
+                $tmp .= chr($len & 0xff);
+                $len >>= 8;
+                $n++;
+            }
+            $out .= chr($n | 0x80);
+            $out .= strrev($tmp);
+        }
+
+        return $out . $str;
+    }
+
+    /**
+     * Constructs ASN.1 string from binary representation of big integer
+     *
+     * @param string $str binary representation of big integer
+     *
+     * @return ASN.1-encoded string
+     * @access private
+     */
+    function _ASN1StoreInt($str)
+    {
+        $str = strrev($str);
+        return Crypt_RSA_KeyPair::_ASN1Store($str, 0x02);
+    }
+
+    /**
+     * Crypt_RSA_KeyPair constructor.
+     *
+     * Wrapper: name of math wrapper, which will be used to
+     *        perform different operations with big integers.
+     *        See contents of Crypt/RSA/Math folder for examples of wrappers.
+     *        Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     *
+     * @param int      $key_len          bit length of key pair, which will be generated in constructor
+     * @param string   $wrapper_name     wrapper name
+     * @param string   $error_handler    name of error handler function
+     * @param callback $random_generator function which will be used as random generator
+     *
+     * @access public
+     */
+    function Crypt_RSA_KeyPair($key_len, $wrapper_name = 'default', $error_handler = '', $random_generator = null)
+    {
+        // set error handler
+        $this->setErrorHandler($error_handler);
+        // try to load math wrapper
+        $obj = &Crypt_RSA_MathLoader::loadWrapper($wrapper_name);
+        if ($this->isError($obj)) {
+            // error during loading of math wrapper
+            $this->pushError($obj);
+            return;
+        }
+        $this->_math_obj = &$obj;
+
+        // set random generator
+        if (!$this->setRandomGenerator($random_generator)) {
+            // error in setRandomGenerator() function
+            return;
+        }
+
+        if (is_array($key_len)) {
+            // ugly BC hack - it is possible to pass RSA private key attributes [version, n, e, d, p, q, dmp1, dmq1, iqmp]
+            // as associative array instead of key length to Crypt_RSA_KeyPair constructor
+            $rsa_attrs = $key_len;
+
+            // convert attributes to big integers
+            $attr_names = $this->_get_attr_names();
+            foreach ($attr_names as $attr) {
+                if (!isset($rsa_attrs[$attr])) {
+                    $this->pushError("missing required RSA attribute [$attr]");
+                    return;
+                }
+                ${$attr} = $this->_math_obj->bin2int($rsa_attrs[$attr]);
+            }
+
+            // check primality of p and q
+            if (!$this->_math_obj->isPrime($p)) {
+                $this->pushError("[p] must be prime");
+                return;
+            }
+            if (!$this->_math_obj->isPrime($q)) {
+                $this->pushError("[q] must be prime");
+                return;
+            }
+
+            // check n = p * q
+            $n1 = $this->_math_obj->mul($p, $q);
+            if ($this->_math_obj->cmpAbs($n, $n1)) {
+                $this->pushError("n != p * q");
+                return;
+            }
+
+            // check e * d = 1 mod (p-1) * (q-1)
+            $p1 = $this->_math_obj->dec($p);
+            $q1 = $this->_math_obj->dec($q);
+            $p1q1 = $this->_math_obj->mul($p1, $q1);
+            $ed = $this->_math_obj->mul($e, $d);
+            $one = $this->_math_obj->mod($ed, $p1q1);
+            if (!$this->_math_obj->isOne($one)) {
+                $this->pushError("e * d != 1 mod (p-1)*(q-1)");
+                return;
+            }
+
+            // check dmp1 = d mod (p-1)
+            $dmp = $this->_math_obj->mod($d, $p1);
+            if ($this->_math_obj->cmpAbs($dmp, $dmp1)) {
+                $this->pushError("dmp1 != d mod (p-1)");
+                return;
+            }
+
+            // check dmq1 = d mod (q-1)
+            $dmq = $this->_math_obj->mod($d, $q1);
+            if ($this->_math_obj->cmpAbs($dmq, $dmq1)) {
+                $this->pushError("dmq1 != d mod (q-1)");
+                return;
+            }
+
+            // check iqmp = 1/q mod p
+            $q1 = $this->_math_obj->invmod($iqmp, $p);
+            if ($this->_math_obj->cmpAbs($q, $q1)) {
+                $this->pushError("iqmp != 1/q mod p");
+                return;
+            }
+
+            // try to create public key object
+            $public_key = &new Crypt_RSA_Key($rsa_attrs['n'], $rsa_attrs['e'], 'public', $wrapper_name, $error_handler);
+            if ($public_key->isError()) {
+                // error during creating public object
+                $this->pushError($public_key->getLastError());
+                return;
+            }
+
+            // try to create private key object
+            $private_key = &new Crypt_RSA_Key($rsa_attrs['n'], $rsa_attrs['d'], 'private', $wrapper_name, $error_handler);
+            if ($private_key->isError()) {
+                // error during creating private key object
+                $this->pushError($private_key->getLastError());
+                return;
+            }
+
+            $this->_public_key = $public_key;
+            $this->_private_key = $private_key;
+            $this->_key_len = $public_key->getKeyLength();
+            $this->_attrs = $rsa_attrs;
+        } else {
+            // generate key pair
+            if (!$this->generate($key_len)) {
+                // error during generating key pair
+                return;
+            }
+        }
+    }
+
+    /**
+     * Crypt_RSA_KeyPair factory.
+     *
+     * Wrapper - Name of math wrapper, which will be used to
+     *        perform different operations with big integers.
+     *        See contents of Crypt/RSA/Math folder for examples of wrappers.
+     *        Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     *
+     * @param int      $key_len          bit length of key pair, which will be generated in constructor
+     * @param string   $wrapper_name     wrapper name
+     * @param string   $error_handler    name of error handler function
+     * @param callback $random_generator function which will be used as random generator
+     *
+     * @return object   new Crypt_RSA_KeyPair object on success or PEAR_Error object on failure
+     * @access public
+     */
+    function &factory($key_len, $wrapper_name = 'default', $error_handler = '', $random_generator = null)
+    {
+        $obj = &new Crypt_RSA_KeyPair($key_len, $wrapper_name, $error_handler, $random_generator);
+        if ($obj->isError()) {
+            // error during creating a new object. Return PEAR_Error object
+            return $obj->getLastError();
+        }
+        // object created successfully. Return it
+        return $obj;
+    }
+
+    /**
+     * Generates new Crypt_RSA key pair with length $key_len.
+     * If $key_len is missed, use an old key length from $this->_key_len
+     *
+     * @param int $key_len bit length of key pair, which will be generated
+     *
+     * @return bool         true on success or false on error
+     * @access public
+     */
+    function generate($key_len = null)
+    {
+        if (is_null($key_len)) {
+            // use an old key length
+            $key_len = $this->_key_len;
+            if (is_null($key_len)) {
+                $this->pushError('missing key_len parameter', CRYPT_RSA_ERROR_MISSING_KEY_LEN);
+                return false;
+            }
+        }
+
+        // minimal key length is 8 bit ;)
+        if ($key_len < 8) {
+            $key_len = 8;
+        }
+        // store key length in the _key_len property
+        $this->_key_len = $key_len;
+
+        // set [e] to 0x10001 (65537)
+        $e = $this->_math_obj->bin2int("\x01\x00\x01");
+
+        // generate [p], [q] and [n]
+        $p_len = intval(($key_len + 1) / 2);
+        $q_len = $key_len - $p_len;
+        $p1 = $q1 = 0;
+        do {
+            // generate prime number [$p] with length [$p_len] with the following condition:
+            // GCD($e, $p - 1) = 1
+            do {
+                $p = $this->_math_obj->getPrime($p_len, $this->_random_generator);
+                $p1 = $this->_math_obj->dec($p);
+                $tmp = $this->_math_obj->GCD($e, $p1);
+            } while (!$this->_math_obj->isOne($tmp));
+            // generate prime number [$q] with length [$q_len] with the following conditions:
+            // GCD($e, $q - 1) = 1
+            // $q != $p
+            do {
+                $q = $this->_math_obj->getPrime($q_len, $this->_random_generator);
+                $q1 = $this->_math_obj->dec($q);
+                $tmp = $this->_math_obj->GCD($e, $q1);
+            } while (!$this->_math_obj->isOne($tmp) && !$this->_math_obj->cmpAbs($q, $p));
+            // if (p < q), then exchange them
+            if ($this->_math_obj->cmpAbs($p, $q) < 0) {
+                $tmp = $p;
+                $p = $q;
+                $q = $tmp;
+                $tmp = $p1;
+                $p1 = $q1;
+                $q1 = $tmp;
+            }
+            // calculate n = p * q
+            $n = $this->_math_obj->mul($p, $q);
+        } while ($this->_math_obj->bitLen($n) != $key_len);
+
+        // calculate d = 1/e mod (p - 1) * (q - 1)
+        $pq = $this->_math_obj->mul($p1, $q1);
+        $d = $this->_math_obj->invmod($e, $pq);
+
+        // calculate dmp1 = d mod (p - 1)
+        $dmp1 = $this->_math_obj->mod($d, $p1);
+
+        // calculate dmq1 = d mod (q - 1)
+        $dmq1 = $this->_math_obj->mod($d, $q1);
+
+        // calculate iqmp = 1/q mod p
+        $iqmp = $this->_math_obj->invmod($q, $p);
+
+        // store RSA keypair attributes
+        $this->_attrs = array(
+            'version' => "\x00",
+            'n' => $this->_math_obj->int2bin($n),
+            'e' => $this->_math_obj->int2bin($e),
+            'd' => $this->_math_obj->int2bin($d),
+            'p' => $this->_math_obj->int2bin($p),
+            'q' => $this->_math_obj->int2bin($q),
+            'dmp1' => $this->_math_obj->int2bin($dmp1),
+            'dmq1' => $this->_math_obj->int2bin($dmq1),
+            'iqmp' => $this->_math_obj->int2bin($iqmp),
+        );
+
+        $n = $this->_attrs['n'];
+        $e = $this->_attrs['e'];
+        $d = $this->_attrs['d'];
+
+        // try to create public key object
+        $obj = &new Crypt_RSA_Key($n, $e, 'public', $this->_math_obj->getWrapperName(), $this->_error_handler);
+        if ($obj->isError()) {
+            // error during creating public object
+            $this->pushError($obj->getLastError());
+            return false;
+        }
+        $this->_public_key = &$obj;
+
+        // try to create private key object
+        $obj = &new Crypt_RSA_Key($n, $d, 'private', $this->_math_obj->getWrapperName(), $this->_error_handler);
+        if ($obj->isError()) {
+            // error during creating private key object
+            $this->pushError($obj->getLastError());
+            return false;
+        }
+        $this->_private_key = &$obj;
+
+        return true; // key pair successfully generated
+    }
+
+    /**
+     * Returns public key from the pair
+     *
+     * @return object  public key object of class Crypt_RSA_Key
+     * @access public
+     */
+    function getPublicKey()
+    {
+        return $this->_public_key;
+    }
+
+    /**
+     * Returns private key from the pair
+     *
+     * @return object   private key object of class Crypt_RSA_Key
+     * @access public
+     */
+    function getPrivateKey()
+    {
+        return $this->_private_key;
+    }
+
+    /**
+     * Sets name of random generator function for key generation.
+     * If parameter is skipped, then sets to default random generator.
+     *
+     * Random generator function must return integer with at least 8 lower
+     * significant bits, which will be used as random values.
+     *
+     * @param string $random_generator name of random generator function
+     *
+     * @return bool                     true on success or false on error
+     * @access public
+     */
+    function setRandomGenerator($random_generator = null)
+    {
+        static $default_random_generator = null;
+
+        if (is_string($random_generator)) {
+            // set user's random generator
+            if (!function_exists($random_generator)) {
+                $this->pushError("can't find random generator function with name [{$random_generator}]");
+                return false;
+            }
+            $this->_random_generator = $random_generator;
+        } else {
+            // set default random generator
+            $this->_random_generator = is_null($default_random_generator) ?
+                ($default_random_generator = create_function('', '$a=explode(" ",microtime());return(int)($a[0]*1000000);')) :
+                $default_random_generator;
+        }
+        return true;
+    }
+
+    /**
+     * Returns length of each key in the key pair
+     *
+     * @return int  bit length of each key in key pair
+     * @access public
+     */
+    function getKeyLength()
+    {
+        return $this->_key_len;
+    }
+
+    /**
+     * Retrieves RSA keypair from PEM-encoded string, containing RSA private key.
+     * Example of such string:
+     * -----BEGIN RSA PRIVATE KEY-----
+     * MCsCAQACBHtvbSECAwEAAQIEeYrk3QIDAOF3AgMAjCcCAmdnAgJMawIDALEk
+     * -----END RSA PRIVATE KEY-----
+     *
+     * Wrapper: Name of math wrapper, which will be used to
+     * perform different operations with big integers.
+     * See contents of Crypt/RSA/Math folder for examples of wrappers.
+     * Read docs/Crypt_RSA/docs/math_wrappers.txt for details.
+     *
+     * @param string $str           PEM-encoded string
+     * @param string $wrapper_name  Wrapper name
+     * @param string $error_handler name of error handler function
+     *
+     * @return Crypt_RSA_KeyPair object on success, PEAR_Error object on error
+     * @access public
+     * @static
+     */
+    function &fromPEMString($str, $wrapper_name = 'default', $error_handler = '')
+    {
+        if (isset($this)) {
+            if ($wrapper_name == 'default') {
+                $wrapper_name = $this->_math_obj->getWrapperName();
+            }
+            if ($error_handler == '') {
+                $error_handler = $this->_error_handler;
+            }
+        }
+        $err_handler = &new Crypt_RSA_ErrorHandler;
+        $err_handler->setErrorHandler($error_handler);
+
+        // search for base64-encoded private key
+        if (!preg_match('/-----BEGIN RSA PRIVATE KEY-----([^-]+)-----END RSA PRIVATE KEY-----/', $str, $matches)) {
+            $err_handler->pushError("can't find RSA private key in the string [{$str}]");
+            return $err_handler->getLastError();
+        }
+
+        // parse private key. It is ASN.1-encoded
+        $str = base64_decode($matches[1]);
+        $pos = 0;
+        $tmp = Crypt_RSA_KeyPair::_ASN1Parse($str, $pos, $err_handler);
+        if ($err_handler->isError()) {
+            return $err_handler->getLastError();
+        }
+        if ($tmp['tag'] != 0x10) {
+            $errstr = sprintf("wrong ASN tag value: 0x%02x. Expected 0x10 (SEQUENCE)", $tmp['tag']);
+            $err_handler->pushError($errstr);
+            return $err_handler->getLastError();
+        }
+
+        // parse ASN.1 SEQUENCE for RSA private key
+        $attr_names = Crypt_RSA_KeyPair::_get_attr_names();
+        $n = sizeof($attr_names);
+        $rsa_attrs = array();
+        for ($i = 0; $i < $n; $i++) {
+            $tmp = Crypt_RSA_KeyPair::_ASN1ParseInt($str, $pos, $err_handler);
+            if ($err_handler->isError()) {
+                return $err_handler->getLastError();
+            }
+            $attr = $attr_names[$i];
+            $rsa_attrs[$attr] = $tmp;
+        }
+
+        // create Crypt_RSA_KeyPair object.
+        $keypair = &new Crypt_RSA_KeyPair($rsa_attrs, $wrapper_name, $error_handler);
+        if ($keypair->isError()) {
+            return $keypair->getLastError();
+        }
+
+        return $keypair;
+    }
+
+    /**
+     * converts keypair to PEM-encoded string, which can be stroed in 
+     * .pem compatible files, contianing RSA private key.
+     *
+     * @return string PEM-encoded keypair on success, false on error
+     * @access public
+     */
+    function toPEMString()
+    {
+        // store RSA private key attributes into ASN.1 string
+        $str = '';
+        $attr_names = $this->_get_attr_names();
+        $n = sizeof($attr_names);
+        $rsa_attrs = $this->_attrs;
+        for ($i = 0; $i < $n; $i++) {
+            $attr = $attr_names[$i];
+            if (!isset($rsa_attrs[$attr])) {
+                $this->pushError("Cannot find value for ASN.1 attribute [$attr]");
+                return false;
+            }
+            $tmp = $rsa_attrs[$attr];
+            $str .= Crypt_RSA_KeyPair::_ASN1StoreInt($tmp);
+        }
+
+        // prepend $str by ASN.1 SEQUENCE (0x10) header
+        $str = Crypt_RSA_KeyPair::_ASN1Store($str, 0x10, true);
+
+        // encode and format PEM string
+        $str = base64_encode($str);
+        $str = chunk_split($str, 64, "\n");
+        return "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";
+    }
+
+    /**
+     * Compares keypairs in Crypt_RSA_KeyPair objects $this and $key_pair
+     *
+     * @param Crypt_RSA_KeyPair $key_pair  keypair to compare
+     *
+     * @return bool  true, if keypair stored in $this equal to keypair stored in $key_pair
+     * @access public
+     */
+    function isEqual($key_pair)
+    {
+        $attr_names = $this->_get_attr_names();
+        foreach ($attr_names as $attr) {
+            if ($this->_attrs[$attr] != $key_pair->_attrs[$attr]) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
+
+?>
diff --git a/plugins/OStatus/extlib/Crypt/RSA/Math/BCMath.php b/plugins/OStatus/extlib/Crypt/RSA/Math/BCMath.php
new file mode 100644 (file)
index 0000000..646ff67
--- /dev/null
@@ -0,0 +1,482 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    1.2.0b
+ * @link       http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * Crypt_RSA_Math_BCMath class.
+ *
+ * Provides set of math functions, which are used by Crypt_RSA package
+ * This class is a wrapper for PHP BCMath extension.
+ * See http://php.net/manual/en/ref.bc.php for details.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @link       http://pear.php.net/package/Crypt_RSA
+ * @version    @package_version@
+ * @access     public
+ */
+class Crypt_RSA_Math_BCMath
+{
+    /**
+     * error description
+     *
+     * @var string
+     * @access public
+     */
+    var $errstr = '';
+
+    /**
+     * Performs Miller-Rabin primality test for number $num 
+     * with base $base. Returns true, if $num is strong pseudoprime
+     * by base $base. Else returns false.
+     *
+     * @param string $num
+     * @param string $base
+     * @return bool
+     * @access private
+     */
+    function _millerTest($num, $base)
+    {
+        if (!bccomp($num, '1')) {
+            // 1 is not prime ;)
+            return false;
+        }
+        $tmp = bcsub($num, '1');
+
+        $zero_bits = 0;
+        while (!bccomp(bcmod($tmp, '2'), '0')) {
+            $zero_bits++;
+            $tmp = bcdiv($tmp, '2');
+        }
+
+        $tmp = $this->powmod($base, $tmp, $num);
+        if (!bccomp($tmp, '1')) {
+            // $num is probably prime
+            return true;
+        }
+
+        while ($zero_bits--) {
+            if (!bccomp(bcadd($tmp, '1'), $num)) {
+                // $num is probably prime
+                return true;
+            }
+            $tmp = $this->powmod($tmp, '2', $num);
+        }
+        // $num is composite
+        return false;
+    }
+
+    /**
+     * Crypt_RSA_Math_BCMath constructor.
+     * Checks an existance of PHP BCMath extension.
+     * On failure saves error description in $this->errstr
+     *
+     * @access public
+     */
+    function Crypt_RSA_Math_BCMath()
+    {
+        if (!extension_loaded('bcmath')) {
+            if (!@dl('bcmath.' . PHP_SHLIB_SUFFIX) && !@dl('php_bcmath.' . PHP_SHLIB_SUFFIX)) {
+                // cannot load BCMath extension. Set error string
+                $this->errstr = 'Crypt_RSA package requires the BCMath extension. See http://php.net/manual/en/ref.bc.php for details';
+                return;
+            }
+        }
+    }
+
+    /**
+     * Transforms binary representation of large integer into its native form.
+     * 
+     * Example of transformation:
+     *    $str = "\x12\x34\x56\x78\x90";
+     *    $num = 0x9078563412;
+     *
+     * @param string $str
+     * @return string
+     * @access public
+     */
+    function bin2int($str)
+    {
+        $result = '0';
+        $n = strlen($str);
+        do {
+            $result = bcadd(bcmul($result, '256'), ord($str{--$n}));
+        } while ($n > 0);
+        return $result;
+    }
+
+    /**
+     * Transforms large integer into binary representation.
+     * 
+     * Example of transformation:
+     *    $num = 0x9078563412;
+     *    $str = "\x12\x34\x56\x78\x90";
+     *
+     * @param string $num
+     * @return string
+     * @access public
+     */
+    function int2bin($num)
+    {
+        $result = '';
+        do {
+            $result .= chr(bcmod($num, '256'));
+            $num = bcdiv($num, '256');
+        } while (bccomp($num, '0'));
+        return $result;
+    }
+
+    /**
+     * Calculates pow($num, $pow) (mod $mod)
+     *
+     * @param string $num
+     * @param string $pow
+     * @param string $mod
+     * @return string
+     * @access public
+     */
+    function powmod($num, $pow, $mod)
+    {
+        if (function_exists('bcpowmod')) {
+            // bcpowmod is only available under PHP5
+            return bcpowmod($num, $pow, $mod);
+        }
+
+        // emulate bcpowmod
+        $result = '1';
+        do {
+            if (!bccomp(bcmod($pow, '2'), '1')) {
+                $result = bcmod(bcmul($result, $num), $mod);
+            }
+            $num = bcmod(bcpow($num, '2'), $mod);
+            $pow = bcdiv($pow, '2');
+        } while (bccomp($pow, '0'));
+        return $result;
+    }
+
+    /**
+     * Calculates $num1 * $num2
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return string
+     * @access public
+     */
+    function mul($num1, $num2)
+    {
+        return bcmul($num1, $num2);
+    }
+
+    /**
+     * Calculates $num1 % $num2
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return string
+     * @access public
+     */
+    function mod($num1, $num2)
+    {
+        return bcmod($num1, $num2);
+    }
+
+    /**
+     * Compares abs($num1) to abs($num2).
+     * Returns:
+     *   -1, if abs($num1) < abs($num2)
+     *   0, if abs($num1) == abs($num2)
+     *   1, if abs($num1) > abs($num2)
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return int
+     * @access public
+     */
+    function cmpAbs($num1, $num2)
+    {
+        return bccomp($num1, $num2);
+    }
+
+    /**
+     * Tests $num on primality. Returns true, if $num is strong pseudoprime.
+     * Else returns false.
+     *
+     * @param string $num
+     * @return bool
+     * @access private
+     */
+    function isPrime($num)
+    {
+        static $primes = null;
+        static $primes_cnt = 0;
+        if (is_null($primes)) {
+            // generate all primes up to 10000
+            $primes = array();
+            for ($i = 0; $i < 10000; $i++) {
+                $primes[] = $i;
+            }
+            $primes[0] = $primes[1] = 0;
+            for ($i = 2; $i < 100; $i++) {
+                while (!$primes[$i]) {
+                    $i++;
+                }
+                $j = $i;
+                for ($j += $i; $j < 10000; $j += $i) {
+                    $primes[$j] = 0;
+                }
+            }
+            $j = 0;
+            for ($i = 0; $i < 10000; $i++) {
+                if ($primes[$i]) {
+                    $primes[$j++] = $primes[$i];
+                }
+            }
+            $primes_cnt = $j;
+        }
+
+        // try to divide number by small primes
+        for ($i = 0; $i < $primes_cnt; $i++) {
+            if (bccomp($num, $primes[$i]) <= 0) {
+                // number is prime
+                return true;
+            }
+            if (!bccomp(bcmod($num, $primes[$i]), '0')) {
+                // number divides by $primes[$i]
+                return false;
+            }
+        }
+
+        /*
+            try Miller-Rabin's probable-primality test for first
+            7 primes as bases
+        */
+        for ($i = 0; $i < 7; $i++) {
+            if (!$this->_millerTest($num, $primes[$i])) {
+                // $num is composite
+                return false;
+            }
+        }
+        // $num is strong pseudoprime
+        return true;
+    }
+
+    /**
+     * Generates prime number with length $bits_cnt
+     * using $random_generator as random generator function.
+     *
+     * @param int $bits_cnt
+     * @param string $rnd_generator
+     * @access public
+     */
+    function getPrime($bits_cnt, $random_generator)
+    {
+        $bytes_n = intval($bits_cnt / 8);
+        $bits_n = $bits_cnt % 8;
+        do {
+            $str = '';
+            for ($i = 0; $i < $bytes_n; $i++) {
+                $str .= chr(call_user_func($random_generator) & 0xff);
+            }
+            $n = call_user_func($random_generator) & 0xff;
+            $n |= 0x80;
+            $n >>= 8 - $bits_n;
+            $str .= chr($n);
+            $num = $this->bin2int($str);
+
+            // search for the next closest prime number after [$num]
+            if (!bccomp(bcmod($num, '2'), '0')) {
+                $num = bcadd($num, '1');
+            }
+            while (!$this->isPrime($num)) {
+                $num = bcadd($num, '2');
+            }
+        } while ($this->bitLen($num) != $bits_cnt);
+        return $num;
+    }
+
+    /**
+     * Calculates $num - 1
+     *
+     * @param string $num
+     * @return string
+     * @access public
+     */
+    function dec($num)
+    {
+        return bcsub($num, '1');
+    }
+
+    /**
+     * Returns true, if $num is equal to one. Else returns false
+     *
+     * @param string $num
+     * @return bool
+     * @access public
+     */
+    function isOne($num)
+    {
+        return !bccomp($num, '1');
+    }
+
+    /**
+     * Finds greatest common divider (GCD) of $num1 and $num2
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return string
+     * @access public
+     */
+    function GCD($num1, $num2)
+    {
+        do {
+            $tmp = bcmod($num1, $num2);
+            $num1 = $num2;
+            $num2 = $tmp;
+        } while (bccomp($num2, '0'));
+        return $num1;
+    }
+
+    /**
+     * Finds inverse number $inv for $num by modulus $mod, such as:
+     *     $inv * $num = 1 (mod $mod)
+     *
+     * @param string $num
+     * @param string $mod
+     * @return string
+     * @access public
+     */
+    function invmod($num, $mod)
+    {
+        $x = '1';
+        $y = '0';
+        $num1 = $mod;
+        do {
+            $tmp = bcmod($num, $num1);
+            $q = bcdiv($num, $num1);
+            $num = $num1;
+            $num1 = $tmp;
+
+            $tmp = bcsub($x, bcmul($y, $q));
+            $x = $y;
+            $y = $tmp;
+        } while (bccomp($num1, '0'));
+        if (bccomp($x, '0') < 0) {
+            $x = bcadd($x, $mod);
+        }
+        return $x;
+    }
+
+    /**
+     * Returns bit length of number $num
+     *
+     * @param string $num
+     * @return int
+     * @access public
+     */
+    function bitLen($num)
+    {
+        $tmp = $this->int2bin($num);
+        $bit_len = strlen($tmp) * 8;
+        $tmp = ord($tmp{strlen($tmp) - 1});
+        if (!$tmp) {
+            $bit_len -= 8;
+        }
+        else {
+            while (!($tmp & 0x80)) {
+                $bit_len--;
+                $tmp <<= 1;
+            }
+        }
+        return $bit_len;
+    }
+
+    /**
+     * Calculates bitwise or of $num1 and $num2,
+     * starting from bit $start_pos for number $num1
+     *
+     * @param string $num1
+     * @param string $num2
+     * @param int $start_pos
+     * @return string
+     * @access public
+     */
+    function bitOr($num1, $num2, $start_pos)
+    {
+        $start_byte = intval($start_pos / 8);
+        $start_bit = $start_pos % 8;
+        $tmp1 = $this->int2bin($num1);
+
+        $num2 = bcmul($num2, 1 << $start_bit);
+        $tmp2 = $this->int2bin($num2);
+        if ($start_byte < strlen($tmp1)) {
+            $tmp2 |= substr($tmp1, $start_byte);
+            $tmp1 = substr($tmp1, 0, $start_byte) . $tmp2;
+        }
+        else {
+            $tmp1 = str_pad($tmp1, $start_byte, "\0") . $tmp2;
+        }
+        return $this->bin2int($tmp1);
+    }
+
+    /**
+     * Returns part of number $num, starting at bit
+     * position $start with length $length
+     *
+     * @param string $num
+     * @param int start
+     * @param int length
+     * @return string
+     * @access public
+     */
+    function subint($num, $start, $length)
+    {
+        $start_byte = intval($start / 8);
+        $start_bit = $start % 8;
+        $byte_length = intval($length / 8);
+        $bit_length = $length % 8;
+        if ($bit_length) {
+            $byte_length++;
+        }
+        $num = bcdiv($num, 1 << $start_bit);
+        $tmp = substr($this->int2bin($num), $start_byte, $byte_length);
+        $tmp = str_pad($tmp, $byte_length, "\0");
+        $tmp = substr_replace($tmp, $tmp{$byte_length - 1} & chr(0xff >> (8 - $bit_length)), $byte_length - 1, 1);
+        return $this->bin2int($tmp);
+    }
+
+    /**
+     * Returns name of current wrapper
+     *
+     * @return string name of current wrapper
+     * @access public
+     */
+    function getWrapperName()
+    {
+        return 'BCMath';
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/plugins/OStatus/extlib/Crypt/RSA/Math/BigInt.php b/plugins/OStatus/extlib/Crypt/RSA/Math/BigInt.php
new file mode 100644 (file)
index 0000000..b7ac24c
--- /dev/null
@@ -0,0 +1,313 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    1.2.0b
+ * @link       http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * Crypt_RSA_Math_BigInt class.
+ *
+ * Provides set of math functions, which are used by Crypt_RSA package
+ * This class is a wrapper for big_int PECL extension,
+ * which could be loaded from http://pecl.php.net/packages/big_int
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @link       http://pear.php.net/package/Crypt_RSA
+ * @version    @package_version@
+ * @access     public
+ */
+class Crypt_RSA_Math_BigInt
+{
+    /**
+     * error description
+     *
+     * @var string
+     * @access public
+     */
+    var $errstr = '';
+
+    /**
+     * Crypt_RSA_Math_BigInt constructor.
+     * Checks an existance of big_int PECL math package.
+     * This package is available at http://pecl.php.net/packages/big_int
+     * On failure saves error description in $this->errstr
+     *
+     * @access public
+     */
+    function Crypt_RSA_Math_BigInt()
+    {
+        if (!extension_loaded('big_int')) {
+            if (!@dl('big_int.' . PHP_SHLIB_SUFFIX) && !@dl('php_big_int.' . PHP_SHLIB_SUFFIX)) {
+                // cannot load big_int extension
+                $this->errstr = 'Crypt_RSA package requires big_int PECL package. ' .
+                     'It is available at http://pecl.php.net/packages/big_int';
+                return;
+            }
+        }
+
+        // check version of big_int extension ( Crypt_RSA requires version 1.0.2 and higher )
+        if (!in_array('bi_info', get_extension_funcs('big_int'))) {
+            // there is no bi_info() function in versions, older than 1.0.2
+            $this->errstr = 'Crypt_RSA package requires big_int package version 1.0.2 and higher';
+        }
+    }
+
+    /**
+     * Transforms binary representation of large integer into its native form.
+     * 
+     * Example of transformation:
+     *    $str = "\x12\x34\x56\x78\x90";
+     *    $num = 0x9078563412;
+     *
+     * @param string $str
+     * @return big_int resource
+     * @access public
+     */
+    function bin2int($str)
+    {
+        return bi_unserialize($str);
+    }
+
+    /**
+     * Transforms large integer into binary representation.
+     * 
+     * Example of transformation:
+     *    $num = 0x9078563412;
+     *    $str = "\x12\x34\x56\x78\x90";
+     *
+     * @param big_int resource $num
+     * @return string
+     * @access public
+     */
+    function int2bin($num)
+    {
+        return bi_serialize($num);
+    }
+
+    /**
+     * Calculates pow($num, $pow) (mod $mod)
+     *
+     * @param big_int resource $num
+     * @param big_int resource $pow
+     * @param big_int resource $mod
+     * @return big_int resource
+     * @access public
+     */
+    function powmod($num, $pow, $mod)
+    {
+        return bi_powmod($num, $pow, $mod);
+    }
+
+    /**
+     * Calculates $num1 * $num2
+     *
+     * @param big_int resource $num1
+     * @param big_int resource $num2
+     * @return big_int resource
+     * @access public
+     */
+    function mul($num1, $num2)
+    {
+        return bi_mul($num1, $num2);
+    }
+
+    /**
+     * Calculates $num1 % $num2
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return string
+     * @access public
+     */
+    function mod($num1, $num2)
+    {
+        return bi_mod($num1, $num2);
+    }
+
+    /**
+     * Compares abs($num1) to abs($num2).
+     * Returns:
+     *   -1, if abs($num1) < abs($num2)
+     *   0, if abs($num1) == abs($num2)
+     *   1, if abs($num1) > abs($num2)
+     *
+     * @param big_int resource $num1
+     * @param big_int resource $num2
+     * @return int
+     * @access public
+     */
+    function cmpAbs($num1, $num2)
+    {
+        return bi_cmp_abs($num1, $num2);
+    }
+
+    /**
+     * Tests $num on primality. Returns true, if $num is strong pseudoprime.
+     * Else returns false.
+     *
+     * @param string $num
+     * @return bool
+     * @access private
+     */
+    function isPrime($num)
+    {
+        return bi_is_prime($num) ? true : false;
+    }
+
+    /**
+     * Generates prime number with length $bits_cnt
+     * using $random_generator as random generator function.
+     *
+     * @param int $bits_cnt
+     * @param string $rnd_generator
+     * @access public
+     */
+    function getPrime($bits_cnt, $random_generator)
+    {
+        $bytes_n = intval($bits_cnt / 8);
+        $bits_n = $bits_cnt % 8;
+        do {
+            $str = '';
+            for ($i = 0; $i < $bytes_n; $i++) {
+                $str .= chr(call_user_func($random_generator) & 0xff);
+            }
+            $n = call_user_func($random_generator) & 0xff;
+            $n |= 0x80;
+            $n >>= 8 - $bits_n;
+            $str .= chr($n);
+            $num = $this->bin2int($str);
+
+            // search for the next closest prime number after [$num]
+            $num = bi_next_prime($num);
+        } while ($this->bitLen($num) != $bits_cnt);
+        return $num;
+    }
+
+    /**
+     * Calculates $num - 1
+     *
+     * @param big_int resource $num
+     * @return big_int resource
+     * @access public
+     */
+    function dec($num)
+    {
+        return bi_dec($num);
+    }
+
+    /**
+     * Returns true, if $num is equal to 1. Else returns false
+     *
+     * @param big_int resource $num
+     * @return bool
+     * @access public
+     */
+    function isOne($num)
+    {
+        return bi_is_one($num);
+    }
+
+    /**
+     * Finds greatest common divider (GCD) of $num1 and $num2
+     *
+     * @param big_int resource $num1
+     * @param big_int resource $num2
+     * @return big_int resource
+     * @access public
+     */
+    function GCD($num1, $num2)
+    {
+        return bi_gcd($num1, $num2);
+    }
+
+    /**
+     * Finds inverse number $inv for $num by modulus $mod, such as:
+     *     $inv * $num = 1 (mod $mod)
+     *
+     * @param big_int resource $num
+     * @param big_int resource $mod
+     * @return big_int resource
+     * @access public
+     */
+    function invmod($num, $mod)
+    {
+        return bi_invmod($num, $mod);
+    }
+
+    /**
+     * Returns bit length of number $num
+     *
+     * @param big_int resource $num
+     * @return int
+     * @access public
+     */
+    function bitLen($num)
+    {
+        return bi_bit_len($num);
+    }
+
+    /**
+     * Calculates bitwise or of $num1 and $num2,
+     * starting from bit $start_pos for number $num1
+     *
+     * @param big_int resource $num1
+     * @param big_int resource $num2
+     * @param int $start_pos
+     * @return big_int resource
+     * @access public
+     */
+    function bitOr($num1, $num2, $start_pos)
+    {
+        return bi_or($num1, $num2, $start_pos);
+    }
+
+    /**
+     * Returns part of number $num, starting at bit
+     * position $start with length $length
+     *
+     * @param big_int resource $num
+     * @param int start
+     * @param int length
+     * @return big_int resource
+     * @access public
+     */
+    function subint($num, $start, $length)
+    {
+        return bi_subint($num, $start, $length);
+    }
+
+    /**
+     * Returns name of current wrapper
+     *
+     * @return string name of current wrapper
+     * @access public
+     */
+    function getWrapperName()
+    {
+        return 'BigInt';
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/plugins/OStatus/extlib/Crypt/RSA/Math/GMP.php b/plugins/OStatus/extlib/Crypt/RSA/Math/GMP.php
new file mode 100644 (file)
index 0000000..54e4c34
--- /dev/null
@@ -0,0 +1,361 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version    1.2.0b
+ * @link       http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * Crypt_RSA_Math_GMP class.
+ *
+ * Provides set of math functions, which are used by Crypt_RSA package
+ * This class is a wrapper for PHP GMP extension.
+ * See http://php.net/gmp for details.
+ *
+ * @category   Encryption
+ * @package    Crypt_RSA
+ * @author     Alexander Valyalkin <valyala@gmail.com>
+ * @copyright  2005, 2006 Alexander Valyalkin
+ * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @link       http://pear.php.net/package/Crypt_RSA
+ * @version    @package_version@
+ * @access     public
+ */
+class Crypt_RSA_Math_GMP
+{
+    /**
+     * error description
+     *
+     * @var string
+     * @access public
+     */
+    var $errstr = '';
+
+    /**
+     * Crypt_RSA_Math_GMP constructor.
+     * Checks an existance of PHP GMP package.
+     * See http://php.net/gmp for details.
+     *
+     * On failure saves error description in $this->errstr
+     *
+     * @access public
+     */
+    function Crypt_RSA_Math_GMP()
+    {
+        if (!extension_loaded('gmp')) {
+            if (!@dl('gmp.' . PHP_SHLIB_SUFFIX) && !@dl('php_gmp.' . PHP_SHLIB_SUFFIX)) {
+                // cannot load GMP extension
+                $this->errstr = 'Crypt_RSA package requires PHP GMP package. ' .
+                     'See http://php.net/gmp for details';
+                return;
+            }
+        }
+    }
+
+    /**
+     * Transforms binary representation of large integer into its native form.
+     * 
+     * Example of transformation:
+     *    $str = "\x12\x34\x56\x78\x90";
+     *    $num = 0x9078563412;
+     *
+     * @param string $str
+     * @return gmp resource
+     * @access public
+     */
+    function bin2int($str)
+    {
+        $result = 0;
+        $n = strlen($str);
+        do {
+            // dirty hack: GMP returns FALSE, when second argument equals to int(0).
+            // so, it must be converted to string '0'
+            $result = gmp_add(gmp_mul($result, 256), strval(ord($str{--$n})));
+        } while ($n > 0);
+        return $result;
+    }
+
+    /**
+     * Transforms large integer into binary representation.
+     * 
+     * Example of transformation:
+     *    $num = 0x9078563412;
+     *    $str = "\x12\x34\x56\x78\x90";
+     *
+     * @param gmp resource $num
+     * @return string
+     * @access public
+     */
+    function int2bin($num)
+    {
+        $result = '';
+        do {
+            $result .= chr(gmp_intval(gmp_mod($num, 256)));
+            $num = gmp_div($num, 256);
+        } while (gmp_cmp($num, 0));
+        return $result;
+    }
+
+    /**
+     * Calculates pow($num, $pow) (mod $mod)
+     *
+     * @param gmp resource $num
+     * @param gmp resource $pow
+     * @param gmp resource $mod
+     * @return gmp resource
+     * @access public
+     */
+    function powmod($num, $pow, $mod)
+    {
+        return gmp_powm($num, $pow, $mod);
+    }
+
+    /**
+     * Calculates $num1 * $num2
+     *
+     * @param gmp resource $num1
+     * @param gmp resource $num2
+     * @return gmp resource
+     * @access public
+     */
+    function mul($num1, $num2)
+    {
+        return gmp_mul($num1, $num2);
+    }
+
+    /**
+     * Calculates $num1 % $num2
+     *
+     * @param string $num1
+     * @param string $num2
+     * @return string
+     * @access public
+     */
+    function mod($num1, $num2)
+    {
+        return gmp_mod($num1, $num2);
+    }
+
+    /**
+     * Compares abs($num1) to abs($num2).
+     * Returns:
+     *   -1, if abs($num1) < abs($num2)
+     *   0, if abs($num1) == abs($num2)
+     *   1, if abs($num1) > abs($num2)
+     *
+     * @param gmp resource $num1
+     * @param gmp resource $num2
+     * @return int
+     * @access public
+     */
+    function cmpAbs($num1, $num2)
+    {
+        return gmp_cmp($num1, $num2);
+    }
+
+    /**
+     * Tests $num on primality. Returns true, if $num is strong pseudoprime.
+     * Else returns false.
+     *
+     * @param string $num
+     * @return bool
+     * @access private
+     */
+    function isPrime($num)
+    {
+        return gmp_prob_prime($num) ? true : false;
+    }
+
+    /**
+     * Generates prime number with length $bits_cnt
+     * using $random_generator as random generator function.
+     *
+     * @param int $bits_cnt
+     * @param string $rnd_generator
+     * @access public
+     */
+    function getPrime($bits_cnt, $random_generator)
+    {
+        $bytes_n = intval($bits_cnt / 8);
+        $bits_n = $bits_cnt % 8;
+        do {
+            $str = '';
+            for ($i = 0; $i < $bytes_n; $i++) {
+                $str .= chr(call_user_func($random_generator) & 0xff);
+            }
+            $n = call_user_func($random_generator) & 0xff;
+            $n |= 0x80;
+            $n >>= 8 - $bits_n;
+            $str .= chr($n);
+            $num = $this->bin2int($str);
+
+            // search for the next closest prime number after [$num]
+            if (!gmp_cmp(gmp_mod($num, '2'), '0')) {
+                $num = gmp_add($num, '1');
+            }
+            while (!gmp_prob_prime($num)) {
+                $num = gmp_add($num, '2');
+            }
+        } while ($this->bitLen($num) != $bits_cnt);
+        return $num;
+    }
+
+    /**
+     * Calculates $num - 1
+     *
+     * @param gmp resource $num
+     * @return gmp resource
+     * @access public
+     */
+    function dec($num)
+    {
+        return gmp_sub($num, 1);
+    }
+
+    /**
+     * Returns true, if $num is equal to one. Else returns false
+     *
+     * @param gmp resource $num
+     * @return bool
+     * @access public
+     */
+    function isOne($num)
+    {
+        return !gmp_cmp($num, 1);
+    }
+
+    /**
+     * Finds greatest common divider (GCD) of $num1 and $num2
+     *
+     * @param gmp resource $num1
+     * @param gmp resource $num2
+     * @return gmp resource
+     * @access public
+     */
+    function GCD($num1, $num2)
+    {
+        return gmp_gcd($num1, $num2);
+    }
+
+    /**
+     * Finds inverse number $inv for $num by modulus $mod, such as:
+     *     $inv * $num = 1 (mod $mod)
+     *
+     * @param gmp resource $num
+     * @param gmp resource $mod
+     * @return gmp resource
+     * @access public
+     */
+    function invmod($num, $mod)
+    {
+        return gmp_invert($num, $mod);
+    }
+
+    /**
+     * Returns bit length of number $num
+     *
+     * @param gmp resource $num
+     * @return int
+     * @access public
+     */
+    function bitLen($num)
+    {
+        $tmp = $this->int2bin($num);
+        $bit_len = strlen($tmp) * 8;
+        $tmp = ord($tmp{strlen($tmp) - 1});
+        if (!$tmp) {
+            $bit_len -= 8;
+        }
+        else {
+            while (!($tmp & 0x80)) {
+                $bit_len--;
+                $tmp <<= 1;
+            }
+        }
+        return $bit_len;
+    }
+
+    /**
+     * Calculates bitwise or of $num1 and $num2,
+     * starting from bit $start_pos for number $num1
+     *
+     * @param gmp resource $num1
+     * @param gmp resource $num2
+     * @param int $start_pos
+     * @return gmp resource
+     * @access public
+     */
+    function bitOr($num1, $num2, $start_pos)
+    {
+        $start_byte = intval($start_pos / 8);
+        $start_bit = $start_pos % 8;
+        $tmp1 = $this->int2bin($num1);
+
+        $num2 = gmp_mul($num2, 1 << $start_bit);
+        $tmp2 = $this->int2bin($num2);
+        if ($start_byte < strlen($tmp1)) {
+            $tmp2 |= substr($tmp1, $start_byte);
+            $tmp1 = substr($tmp1, 0, $start_byte) . $tmp2;
+        }
+        else {
+            $tmp1 = str_pad($tmp1, $start_byte, "\0") . $tmp2;
+        }
+        return $this->bin2int($tmp1);
+    }
+
+    /**
+     * Returns part of number $num, starting at bit
+     * position $start with length $length
+     *
+     * @param gmp resource $num
+     * @param int start
+     * @param int length
+     * @return gmp resource
+     * @access public
+     */
+    function subint($num, $start, $length)
+    {
+        $start_byte = intval($start / 8);
+        $start_bit = $start % 8;
+        $byte_length = intval($length / 8);
+        $bit_length = $length % 8;
+        if ($bit_length) {
+            $byte_length++;
+        }
+        $num = gmp_div($num, 1 << $start_bit);
+        $tmp = substr($this->int2bin($num), $start_byte, $byte_length);
+        $tmp = str_pad($tmp, $byte_length, "\0");
+        $tmp = substr_replace($tmp, $tmp{$byte_length - 1} & chr(0xff >> (8 - $bit_length)), $byte_length - 1, 1);
+        return $this->bin2int($tmp);
+    }
+
+    /**
+     * Returns name of current wrapper
+     *
+     * @return string name of current wrapper
+     * @access public
+     */
+    function getWrapperName()
+    {
+        return 'GMP';
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/plugins/OStatus/extlib/Crypt/RSA/MathLoader.php b/plugins/OStatus/extlib/Crypt/RSA/MathLoader.php
new file mode 100644 (file)
index 0000000..de6c946
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Crypt_RSA allows to do following operations:
+ *     - key pair generation
+ *     - encryption and decryption
+ *     - signing and sign validation
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright Alexander Valyalkin 2005
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   CVS: $Id: MathLoader.php,v 1.5 2009/01/05 08:30:29 clockwerx Exp $
+ * @link      http://pear.php.net/package/Crypt_RSA
+ */
+
+/**
+ * RSA error handling facilities
+ */
+require_once 'Crypt/RSA/ErrorHandler.php';
+
+/**
+ * Crypt_RSA_MathLoader class.
+ *
+ * Provides static function:
+ *  - loadWrapper($wrapper_name) - loads RSA math wrapper with name $wrapper_name
+ *                                 or most suitable wrapper if $wrapper_name == 'default'
+ *
+ * Example usage:
+ *    // load BigInt wrapper
+ *    $big_int_wrapper = Crypt_RSA_MathLoader::loadWrapper('BigInt');
+ * 
+ *    // load BCMath wrapper
+ *    $bcmath_wrapper = Crypt_RSA_MathLoader::loadWrapper('BCMath');
+ * 
+ *    // load the most suitable wrapper
+ *    $bcmath_wrapper = Crypt_RSA_MathLoader::loadWrapper();
+ * 
+ * @category  Encryption
+ * @package   Crypt_RSA
+ * @author    Alexander Valyalkin <valyala@gmail.com>
+ * @copyright Alexander Valyalkin 2005
+ * @license   http://www.php.net/license/3_0.txt  PHP License 3.0
+ * @version   Release: @package_version@
+ * @link      http://pear.php.net/package/Crypt_RSA
+ * @access    public
+ */
+class Crypt_RSA_MathLoader
+{
+    /**
+     * Loads RSA math wrapper with name $wrapper_name.
+     * Implemented wrappers can be found at Crypt/RSA/Math folder.
+     * Read docs/Crypt_RSA/docs/math_wrappers.txt for details
+     *
+     * This is a static function:
+     *    // load BigInt wrapper
+     *    $big_int_wrapper = &Crypt_RSA_MathLoader::loadWrapper('BigInt');
+     *
+     *    // load BCMath wrapper
+     *    $bcmath_wrapper = &Crypt_RSA_MathLoader::loadWrapper('BCMath');
+     *
+     * @param string $wrapper_name Name of wrapper
+     *
+     * @return object
+     *         Reference to object of wrapper with name $wrapper_name on success
+     *         or PEAR_Error object on error
+     *
+     * @access public
+     */
+    function loadWrapper($wrapper_name = 'default')
+    {
+        static $math_objects = array();
+        // ordered by performance. GMP is the fastest math library, BCMath - the slowest.
+        static $math_wrappers = array('GMP', 'BigInt', 'BCMath',);
+
+        if (isset($math_objects[$wrapper_name])) {
+            /*
+                wrapper with name $wrapper_name is already loaded and created.
+                Return reference to existing copy of wrapper
+            */
+            return $math_objects[$wrapper_name];
+        }
+
+        $err_handler = new Crypt_RSA_ErrorHandler();
+
+        if ($wrapper_name === 'default') {
+            // try to load the most suitable wrapper
+            $n = sizeof($math_wrappers);
+            for ($i = 0; $i < $n; $i++) {
+                $obj = Crypt_RSA_MathLoader::loadWrapper($math_wrappers[$i]);
+                if (!$err_handler->isError($obj)) {
+                    // wrapper for $math_wrappers[$i] successfully loaded
+                    // register it as default wrapper and return reference to it
+                    return $math_objects['default'] = $obj;
+                }
+            }
+            // can't load any wrapper
+            $err_handler->pushError("can't load any wrapper for existing math libraries", CRYPT_RSA_ERROR_NO_WRAPPERS);
+            return $err_handler->getLastError();
+        }
+
+        $class_name = 'Crypt_RSA_Math_' . $wrapper_name;
+        $class_filename = dirname(__FILE__) . '/Math/' . $wrapper_name . '.php';
+
+        if (!is_file($class_filename)) {
+            $err_handler->pushError("can't find file [{$class_filename}] for RSA math wrapper [{$wrapper_name}]", CRYPT_RSA_ERROR_NO_FILE);
+            return $err_handler->getLastError();
+        }
+
+        include_once $class_filename;
+        if (!class_exists($class_name)) {
+            $err_handler->pushError("can't find class [{$class_name}] in file [{$class_filename}]", CRYPT_RSA_ERROR_NO_CLASS);
+            return $err_handler->getLastError();
+        }
+
+        // create and return wrapper object on success or PEAR_Error object on error
+        $obj = new $class_name;
+        if ($obj->errstr) {
+            // cannot load required extension for math wrapper
+            $err_handler->pushError($obj->errstr, CRYPT_RSA_ERROR_NO_EXT);
+            return $err_handler->getLastError();
+        }
+        return $math_objects[$wrapper_name] = $obj;
+    }
+}
+
+?>
diff --git a/plugins/OStatus/images/24px-Feed-icon.svg.png b/plugins/OStatus/images/24px-Feed-icon.svg.png
new file mode 100644 (file)
index 0000000..3172258
Binary files /dev/null and b/plugins/OStatus/images/24px-Feed-icon.svg.png differ
diff --git a/plugins/OStatus/images/48px-Feed-icon.svg.png b/plugins/OStatus/images/48px-Feed-icon.svg.png
new file mode 100644 (file)
index 0000000..bd1da4f
Binary files /dev/null and b/plugins/OStatus/images/48px-Feed-icon.svg.png differ
diff --git a/plugins/OStatus/images/96px-Feed-icon.svg.png b/plugins/OStatus/images/96px-Feed-icon.svg.png
new file mode 100644 (file)
index 0000000..bf16571
Binary files /dev/null and b/plugins/OStatus/images/96px-Feed-icon.svg.png differ
diff --git a/plugins/OStatus/images/README b/plugins/OStatus/images/README
new file mode 100644 (file)
index 0000000..d9379c2
--- /dev/null
@@ -0,0 +1,5 @@
+Feed icon rendered from http://commons.wikimedia.org/wiki/File:Feed-icon.svg
+
+Originally distributed by the Mozilla Foundation under a MPL/GPL/LGPL tri-license:
+
+http://www.mozilla.org/MPL/boilerplate-1.1/mpl-tri-license-html
diff --git a/plugins/OStatus/js/ostatus.js b/plugins/OStatus/js/ostatus.js
new file mode 100644 (file)
index 0000000..bd29b5c
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  OStatus UI interaction
+ * @package   StatusNet
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ * @note      Everything in here should eventually migrate over to /js/util.js's SN.
+ */
+
+SN.Init.OStatusCookie = function() {
+    if (SN.U.StatusNetInstance.Get() === null) {
+        SN.U.StatusNetInstance.Set({RemoteProfile: null});
+    }
+};
+
+SN.U.DialogBox = {
+    Subscribe: function(a) {
+        var f = a.parent().find('.form_settings');
+        if (f.length > 0) {
+            f.show();
+        }
+        else {
+            $.ajax({
+                type: 'GET',
+                dataType: 'xml',
+                url: a[0].href + ((a[0].href.match(/[\\?]/) === null)?'?':'&') + 'ajax=1',
+                beforeSend: function(formData) {
+                    a.addClass('processing');
+                },
+                error: function (xhr, textStatus, errorThrown) {
+                    alert(errorThrown || textStatus);
+                },
+                success: function(data, textStatus, xhr) {
+                    if (typeof($('form', data)[0]) != 'undefined') {
+                        a.after(document._importNode($('form', data)[0], true));
+
+                        var form = a.parent().find('.form_settings');
+
+                        form
+                            .addClass('dialogbox')
+                            .append('<button class="close">&#215;</button>');
+
+                        form
+                            .find('.submit')
+                                .addClass('submit_dialogbox')
+                                .removeClass('submit')
+                                .bind('click', function() {
+                                    form.addClass('processing');
+                                });
+
+                        form.find('button.close').click(function(){
+                            form.hide();
+
+                            return false;
+                        });
+
+                        form.find('#profile').focus();
+
+                        if (form.attr('id') == 'form_ostatus_connect') {
+                            SN.Init.OStatusCookie();
+                            form.find('#profile').val(SN.U.StatusNetInstance.Get().RemoteProfile);
+
+                            form.find("[type=submit]").bind('click', function() {
+                                SN.U.StatusNetInstance.Set({RemoteProfile: form.find('#profile').val()});
+                                return true;
+                            });
+                        }
+                    }
+
+                    a.removeClass('processing');
+                }
+            });
+        }
+    }
+};
+
+SN.Init.Subscribe = function() {
+    $('.entity_subscribe .entity_remote_subscribe').live('click', function() { SN.U.DialogBox.Subscribe($(this)); return false; });
+};
+
+$(document).ready(function() {
+    SN.Init.Subscribe();
+
+    $('.form_remote_authorize').bind('submit', function() { $(this).addClass(SN.C.S.Processing); return true; });
+});
diff --git a/plugins/OStatus/lib/feeddiscovery.php b/plugins/OStatus/lib/feeddiscovery.php
new file mode 100644 (file)
index 0000000..7afb71b
--- /dev/null
@@ -0,0 +1,259 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package FeedSubPlugin
+ * @maintainer Brion Vibber <brion@status.net>
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+class FeedSubBadURLException extends FeedSubException
+{
+}
+
+class FeedSubBadResponseException extends FeedSubException
+{
+}
+
+class FeedSubEmptyException extends FeedSubException
+{
+}
+
+class FeedSubBadHTMLException extends FeedSubException
+{
+}
+
+class FeedSubUnrecognizedTypeException extends FeedSubException
+{
+}
+
+class FeedSubNoFeedException extends FeedSubException
+{
+}
+
+class FeedSubBadXmlException extends FeedSubException
+{
+}
+
+class FeedSubNoHubException 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->feed); // DOMDocument
+ *   }
+ */
+class FeedDiscovery
+{
+    public $uri;
+    public $type;
+    public $feed;
+
+    /** Post-initialize query helper... */
+    public function getLink($rel, $type=null)
+    {
+        // @fixme check for non-Atom links in RSS2 feeds as well
+        return self::getAtomLink($rel, $type);
+    }
+
+    public function getAtomLink($rel, $type=null)
+    {
+        return ActivityUtils::getLink($this->feed->documentElement, $rel, $type);
+    }
+
+    /**
+     * @param string $url
+     * @param bool $htmlOk pass false here if you don't want to follow web pages.
+     * @return string with validated URL
+     * @throws FeedSubBadURLException
+     * @throws FeedSubBadHtmlException
+     * @throws FeedSubNoFeedException
+     * @throws FeedSubEmptyException
+     * @throws FeedSubUnrecognizedTypeException
+     */
+    function discoverFromURL($url, $htmlOk=true)
+    {
+        try {
+            $client = new HTTPClient();
+            $response = $client->get($url);
+        } catch (HTTP_Request2_Exception $e) {
+            common_log(LOG_ERR, __METHOD__ . " Failure for $url - " . $e->getMessage());
+            throw new FeedSubBadURLException($e);
+        }
+
+        if ($htmlOk) {
+            $type = $response->getHeader('Content-Type');
+            $isHtml = preg_match('!^(text/html|application/xhtml\+xml)!i', $type);
+            if ($isHtml) {
+                $target = $this->discoverFromHTML($response->getUrl(), $response->getBody());
+                if (!$target) {
+                    throw new FeedSubNoFeedException($url);
+                }
+                return $this->discoverFromURL($target, false);
+            }
+        }
+        
+        return $this->initFromResponse($response);
+    }
+
+    function discoverFromFeedURL($url)
+    {
+        return $this->discoverFromURL($url, false);
+    }
+
+    function initFromResponse($response)
+    {
+        if (!$response->isOk()) {
+            throw new FeedSubBadResponseException($response->getCode());
+        }
+
+        $sourceurl = $response->getUrl();
+        $body = $response->getBody();
+        if (!$body) {
+            throw new FeedSubEmptyException($sourceurl);
+        }
+
+        $type = $response->getHeader('Content-Type');
+        if (preg_match('!^(text/xml|application/xml|application/(rss|atom)\+xml)!i', $type)) {
+            return $this->init($sourceurl, $type, $body);
+        } else {
+            common_log(LOG_WARNING, "Unrecognized feed type $type for $sourceurl");
+            throw new FeedSubUnrecognizedTypeException($type);
+        }
+    }
+
+    function init($sourceurl, $type, $body)
+    {
+        $feed = new DOMDocument();
+        if ($feed->loadXML($body)) {
+            $this->uri = $sourceurl;
+            $this->type = $type;
+            $this->feed = $feed;
+            return $this->uri;
+        } else {
+            throw new FeedSubBadXmlException($url);
+        }
+    }
+
+    /**
+     * @param string $url source URL, used to resolve relative links
+     * @param string $body HTML body text
+     * @return mixed string with URL or false if no target found
+     */
+    function discoverFromHTML($url, $body)
+    {
+        // DOMDocument::loadHTML may throw warnings on unrecognized elements.
+        $old = error_reporting(error_reporting() & ~E_WARNING);
+        $dom = new DOMDocument();
+        $ok = $dom->loadHTML($body);
+        error_reporting($old);
+
+        if (!$ok) {
+            throw new FeedSubBadHtmlException();
+        }
+
+        // Autodiscovery links may be relative to the page's URL or <base href>
+        $base = false;
+        $nodes = $dom->getElementsByTagName('base');
+        for ($i = 0; $i < $nodes->length; $i++) {
+            $node = $nodes->item($i);
+            if ($node->hasAttributes()) {
+                $href = $node->attributes->getNamedItem('href');
+                if ($href) {
+                    $base = trim($href->value);
+                }
+            }
+        }
+        if ($base) {
+            $base = $this->resolveURI($base, $url);
+        } else {
+            $base = $url;
+        }
+
+        // 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);
+            if ($node->hasAttributes()) {
+                $rel = $node->attributes->getNamedItem('rel');
+                $type = $node->attributes->getNamedItem('type');
+                $href = $node->attributes->getNamedItem('href');
+                if ($rel && $type && $href) {
+                    $rel = trim($rel->value);
+                    $type = trim($type->value);
+                    $href = trim($href->value);
+
+                    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;
+    }
+
+    /**
+     * Resolve a possibly relative URL against some absolute base URL
+     * @param string $rel relative or absolute URL
+     * @param string $base absolute URL
+     * @return string absolute URL, or original URL if could not be resolved.
+     */
+    function resolveURI($rel, $base)
+    {
+        require_once "Net/URL2.php";
+        try {
+            $relUrl = new Net_URL2($rel);
+            if ($relUrl->isAbsolute()) {
+                return $rel;
+            }
+            $baseUrl = new Net_URL2($base);
+            $absUrl = $baseUrl->resolve($relUrl);
+            return $absUrl->getURL();
+        } catch (Exception $e) {
+            common_log(LOG_WARNING, 'Unable to resolve relative link "' .
+                $rel . '" against base "' . $base . '": ' . $e->getMessage());
+            return $rel;
+        }
+    }
+}
diff --git a/plugins/OStatus/lib/hubconfqueuehandler.php b/plugins/OStatus/lib/hubconfqueuehandler.php
new file mode 100644 (file)
index 0000000..c8e0b72
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Send a PuSH subscription verification from our internal hub.
+ * @package Hub
+ * @author Brion Vibber <brion@status.net>
+ */
+class HubConfQueueHandler extends QueueHandler
+{
+    function transport()
+    {
+        return 'hubconf';
+    }
+
+    function handle($data)
+    {
+        $sub = $data['sub'];
+        $mode = $data['mode'];
+        $token = $data['token'];
+
+        assert($sub instanceof HubSub);
+        assert($mode === 'subscribe' || $mode === 'unsubscribe');
+
+        common_log(LOG_INFO, __METHOD__ . ": $mode $sub->callback $sub->topic");
+        try {
+            $sub->verify($mode, $token);
+        } 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/huboutqueuehandler.php b/plugins/OStatus/lib/huboutqueuehandler.php
new file mode 100644 (file)
index 0000000..3ad9464
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Send a raw PuSH atom update from our internal hub.
+ * @package Hub
+ * @author Brion Vibber <brion@status.net>
+ */
+class HubOutQueueHandler extends QueueHandler
+{
+    function transport()
+    {
+        return 'hubout';
+    }
+
+    function handle($data)
+    {
+        $sub = $data['sub'];
+        $atom = $data['atom'];
+        $retries = $data['retries'];
+
+        assert($sub instanceof HubSub);
+        assert(is_string($atom));
+
+        try {
+            $sub->push($atom);
+        } catch (Exception $e) {
+            $retries--;
+            $msg = "Failed PuSH to $sub->callback for $sub->topic: " .
+                   $e->getMessage();
+            if ($retries > 0) {
+                common_log(LOG_ERR, "$msg; scheduling for $retries more tries");
+
+                // @fixme when we have infrastructure to schedule a retry
+                // after a delay, use it.
+                $sub->distribute($atom, $retries);
+            } else {
+                common_log(LOG_ERR, "$msg; discarding");
+            }
+        }
+
+        return true;
+    }
+}
diff --git a/plugins/OStatus/lib/magicenvelope.php b/plugins/OStatus/lib/magicenvelope.php
new file mode 100644 (file)
index 0000000..81f4609
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * A sample module to show best practices for StatusNet plugins
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package   StatusNet
+ * @author    James Walker <james@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+class MagicEnvelope
+{
+    const ENCODING = 'base64url';
+
+    const NS = 'http://salmon-protocol.org/ns/magic-env';
+    
+    private function normalizeUser($user_id)
+    {
+        if (substr($user_id, 0, 5) == 'http:' ||
+            substr($user_id, 0, 6) == 'https:' ||
+            substr($user_id, 0, 5) == 'acct:') {
+            return $user_id;
+        }
+
+        if (strpos($user_id, '@') !== FALSE) {
+            return 'acct:' . $user_id;
+        }
+
+        return 'http://' . $user_id;
+    }
+
+    public function getKeyPair($signer_uri)
+    {
+        return 'RSA.79_L2gq-TD72Nsb5yGS0r9stLLpJZF5AHXyxzWmQmlqKl276LEJEs8CppcerLcR90MbYQUwt-SX9slx40Yq3vA==.AQAB.AR-jo5KMfSISmDAT2iMs2_vNFgWRjl5rbJVvA0SpGIEWyPdCGxlPtCbTexp8-0ZEIe8a4SyjatBECH5hxgMTpw==';
+    }
+
+
+    public function signMessage($text, $mimetype, $signer_uri)
+    {
+        $signer_uri = $this->normalizeUser($signer_uri);
+
+        if (!$this->checkAuthor($text, $signer_uri)) {
+            return false;
+        }
+
+        $signature_alg = Magicsig::fromString($this->getKeyPair($signer_uri));
+        $armored_text = base64_encode($text);
+
+        return array(
+            'data' => $armored_text,
+            'encoding' => MagicEnvelope::ENCODING,
+            'data_type' => $mimetype,
+            'sig' => $signature_alg->sign($armored_text),
+            'alg' => $signature_alg->getName()
+        );
+            
+            
+    }
+
+    public function unfold($env)
+    {
+        $dom = new DOMDocument();
+        $dom->loadXML(base64_decode($env['data']));
+
+        if ($dom->documentElement->tagName != 'entry') {
+            return false;
+        }
+
+        $prov = $dom->createElementNS(MagicEnvelope::NS, 'me:provenance');
+        $prov->setAttribute('xmlns:me', MagicEnvelope::NS);
+        $data = $dom->createElementNS(MagicEnvelope::NS, 'me:data', $env['data']);
+        $data->setAttribute('type', $env['data_type']);
+        $prov->appendChild($data);
+        $enc = $dom->createElementNS(MagicEnvelope::NS, 'me:encoding', $env['encoding']);
+        $prov->appendChild($enc);
+        $alg = $dom->createElementNS(MagicEnvelope::NS, 'me:alg', $env['alg']);
+        $prov->appendChild($alg);
+        $sig = $dom->createElementNS(MagicEnvelope::NS, 'me:sig', $env['sig']);
+        $prov->appendChild($sig);
+
+        $dom->documentElement->appendChild($prov);
+
+        return $dom->saveXML();
+    }
+    
+    public function getAuthor($text) {
+        $doc = new DOMDocument();
+        if (!$doc->loadXML($text)) {
+            return FALSE;
+        }
+
+        if ($doc->documentElement->tagName == 'entry') {
+            $authors = $doc->documentElement->getElementsByTagName('author');
+            foreach ($authors as $author) {
+                $uris = $author->getElementsByTagName('uri');
+                foreach ($uris as $uri) {
+                    return $this->normalizeUser($uri->nodeValue);
+                }
+            }
+        }
+    }
+    
+    public function checkAuthor($text, $signer_uri)
+    {
+        return ($this->getAuthor($text) == $signer_uri);
+    }
+    
+    public function verify($env)
+    {
+        if ($env['alg'] != 'RSA-SHA256') {
+            return false;
+        }
+
+        if ($env['encoding'] != MagicEnvelope::ENCODING) {
+            return false;
+        }
+
+        $text = base64_decode($env['data']);
+        $signer_uri = $this->getAuthor($text);
+
+        $verifier = Magicsig::fromString($this->getKeyPair($signer_uri));
+
+        return $verifier->verify($env['data'], $env['sig']);
+    }
+
+    public function parse($text)
+    {
+        $dom = DOMDocument::loadXML($text);
+        return $this->fromDom($dom);
+    }
+
+    public function fromDom($dom)
+    {
+        if ($dom->documentElement->tagName == 'entry') {
+            $env_element = $dom->getElementsByTagNameNS(MagicEnvelope::NS, 'provenance')->item(0);
+        } else if ($dom->documentElement->tagName == 'me:env') {
+            $env_element = $dom->documentElement;
+        } else {
+            return false;
+        }
+
+        $data_element = $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'data')->item(0);
+        
+        return array(
+            'data' => trim($data_element->nodeValue),
+            'data_type' => $data_element->getAttribute('type'),
+            'encoding' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'encoding')->item(0)->nodeValue,
+            'alg' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'alg')->item(0)->nodeValue,
+            'sig' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'sig')->item(0)->nodeValue,
+        );
+    }
+
+}
diff --git a/plugins/OStatus/lib/ostatusqueuehandler.php b/plugins/OStatus/lib/ostatusqueuehandler.php
new file mode 100644 (file)
index 0000000..0da8560
--- /dev/null
@@ -0,0 +1,211 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Prepare PuSH and Salmon distributions for an outgoing message.
+ *
+ * @package OStatusPlugin
+ * @author Brion Vibber <brion@status.net>
+ */
+class OStatusQueueHandler extends QueueHandler
+{
+    function transport()
+    {
+        return 'ostatus';
+    }
+
+    function handle($notice)
+    {
+        assert($notice instanceof Notice);
+
+        $this->notice = $notice;
+        $this->user = User::staticGet($notice->profile_id);
+
+        $this->pushUser();
+
+        foreach ($notice->getGroups() as $group) {
+            $oprofile = Ostatus_profile::staticGet('group_id', $group->id);
+            if ($oprofile) {
+                $this->pingReply($oprofile);
+            } else {
+                $this->pushGroup($group->id);
+            }
+        }
+
+        foreach ($notice->getReplies() as $profile_id) {
+            $oprofile = Ostatus_profile::staticGet('profile_id', $profile_id);
+            if ($oprofile) {
+                $this->pingReply($oprofile);
+            }
+        }
+
+        return true;
+    }
+
+    function pushUser()
+    {
+        if ($this->user) {
+            // For local posts, ping the PuSH hub to update their feed.
+            // http://identi.ca/api/statuses/user_timeline/1.atom
+            $feed = common_local_url('ApiTimelineUser',
+                                     array('id' => $this->user->id,
+                                           'format' => 'atom'));
+            $this->pushFeed($feed, array($this, 'userFeedForNotice'));
+        }
+    }
+
+    function pushGroup($group_id)
+    {
+        // For a local group, ping the PuSH hub to update its feed.
+        // Updates may come from either a local or a remote user.
+        $feed = common_local_url('ApiTimelineGroup',
+                                 array('id' => $group_id,
+                                       'format' => 'atom'));
+        $this->pushFeed($feed, array($this, 'groupFeedForNotice'), $group_id);
+    }
+
+    function pingReply($oprofile)
+    {
+        if ($this->user) {
+            // For local posts, send a Salmon ping to the mentioned
+            // remote user or group.
+            // @fixme as an optimization we can skip this if the
+            // remote profile is subscribed to the author.
+            $oprofile->notifyDeferred($this->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");
+        while ($sub->fetch()) {
+            $sub->distribute($atom);
+        }
+    }
+
+    /**
+     * Build a single-item version of the sending user's Atom feed.
+     * @return string
+     */
+    function userFeedForNotice()
+    {
+        // @fixme this feels VERY hacky...
+        // should probably be a cleaner way to do it
+
+        ob_start();
+        $api = new ApiTimelineUserAction();
+        $api->prepare(array('id' => $this->notice->profile_id,
+                            'format' => 'atom',
+                            'max_id' => $this->notice->id,
+                            'since_id' => $this->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)
+    {
+        // @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' => $this->notice->id,
+                      'since_id' => $this->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/pushinqueuehandler.php b/plugins/OStatus/lib/pushinqueuehandler.php
new file mode 100644 (file)
index 0000000..1fd29ae
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Process a feed distribution POST from a PuSH hub.
+ * @package FeedSub
+ * @author Brion Vibber <brion@status.net>
+ */
+
+class PushInQueueHandler extends QueueHandler
+{
+    function transport()
+    {
+        return 'pushin';
+    }
+
+    function handle($data)
+    {
+        assert(is_array($data));
+
+        $feedsub_id = $data['feedsub_id'];
+        $post = $data['post'];
+        $hmac = $data['hmac'];
+
+        $feedsub = FeedSub::staticGet('id', $feedsub_id);
+        if ($feedsub) {
+            try {
+                $feedsub->receive($post, $hmac);
+            } catch(Exception $e) {
+                common_log(LOG_ERR, "Exception during PuSH input processing for $feedsub->uri: " . $e->getMessage());
+            }
+        } else {
+            common_log(LOG_ERR, "Discarding POST to unknown feed subscription id $feedsub_id");
+        }
+        return true;
+    }
+}
diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php
new file mode 100644 (file)
index 0000000..b5f178c
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * A sample module to show best practices for StatusNet plugins
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package   StatusNet
+ * @author    James Walker <james@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+class Salmon
+{
+    /**
+     * Sign and post the given Atom entry as a Salmon message.
+     *
+     * @fixme pass through the actor for signing?
+     *
+     * @param string $endpoint_uri
+     * @param string $xml
+     * @return boolean success
+     */
+    public function post($endpoint_uri, $xml)
+    {
+        if (empty($endpoint_uri)) {
+            return false;
+        }
+
+        if (!common_config('ostatus', 'skip_signatures')) {
+            $xml = $this->createMagicEnv($xml);
+        }
+
+        $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) {
+            common_log(LOG_ERR, "Salmon post to $endpoint_uri failed: " . $e->getMessage());
+            return false;
+        }
+        if ($response->getStatus() != 200) {
+            common_log(LOG_ERR, "Salmon at $endpoint_uri returned status " .
+                $response->getStatus() . ': ' . $response->getBody());
+            return false;
+        }
+        return true;
+    }
+
+    public function createMagicEnv($text)
+    {
+        $magic_env = new MagicEnvelope();
+
+        // TODO: Should probably be getting the signer uri as an argument?
+        $signer_uri = $magic_env->getAuthor($text);
+
+        $env = $magic_env->signMessage($text, 'application/atom+xml', $signer_uri);
+
+        return $magic_env->unfold($env);
+    }
+
+
+    public function verifyMagicEnv($dom)
+    {
+        $magic_env = new MagicEnvelope();
+        
+        $env = $magic_env->fromDom($dom);
+
+        return $magic_env->verify($env);
+    }
+}
diff --git a/plugins/OStatus/lib/salmonaction.php b/plugins/OStatus/lib/salmonaction.php
new file mode 100644 (file)
index 0000000..a031691
--- /dev/null
@@ -0,0 +1,193 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @package OStatusPlugin
+ * @author James Walker <james@status.net>
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class SalmonAction extends Action
+{
+    var $xml      = null;
+    var $activity = null;
+
+    function prepare($args)
+    {
+        StatusNet::setApi(true); // Send smaller error pages
+
+        parent::prepare($args);
+
+        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            $this->clientError(_m('This method requires a POST.'));
+        }
+
+        if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
+            $this->clientError(_m('Salmon requires application/atom+xml'));
+        }
+
+        $xml = file_get_contents('php://input');
+
+        $dom = DOMDocument::loadXML($xml);
+
+        if ($dom->documentElement->namespaceURI != Activity::ATOM ||
+            $dom->documentElement->localName != 'entry') {
+            common_log(LOG_DEBUG, "Got invalid Salmon post: $xml");
+            $this->clientError(_m('Salmon post must be an Atom entry.'));
+        }
+
+        // Check the signature
+        $salmon = new Salmon;
+        if (!common_config('ostatus', 'skip_signatures')) {
+            if (!$salmon->verifyMagicEnv($dom)) {
+                common_log(LOG_DEBUG, "Salmon signature verification failed.");
+                $this->clientError(_m('Salmon signature verification failed.'));
+            }
+        }
+
+        $this->act = new Activity($dom->documentElement);
+        return true;
+    }
+
+    /**
+     * Check the posted activity type and break out to appropriate processing.
+     */
+
+    function handle($args)
+    {
+        StatusNet::setApi(true); // Send smaller error pages
+
+        common_log(LOG_DEBUG, "Got a " . $this->act->verb);
+        if (Event::handle('StartHandleSalmon', array($this->activity))) {
+            switch ($this->act->verb)
+            {
+            case ActivityVerb::POST:
+                $this->handlePost();
+                break;
+            case ActivityVerb::SHARE:
+                $this->handleShare();
+                break;
+            case ActivityVerb::FAVORITE:
+                $this->handleFavorite();
+                break;
+            case ActivityVerb::UNFAVORITE:
+                $this->handleUnfavorite();
+                break;
+            case ActivityVerb::FOLLOW:
+            case ActivityVerb::FRIEND:
+                $this->handleFollow();
+                break;
+            case ActivityVerb::UNFOLLOW:
+                $this->handleUnfollow();
+                break;
+            case ActivityVerb::JOIN:
+                $this->handleJoin();
+                break;
+            case ActivityVerb::LEAVE:
+                $this->handleLeave();
+                break;
+            case ActivityVerb::UPDATE_PROFILE:
+                $this->handleUpdateProfile();
+                break;
+            default:
+                throw new ClientException(_m("Unrecognized activity type."));
+            }
+            Event::handle('EndHandleSalmon', array($this->activity));
+        }
+    }
+
+    function handlePost()
+    {
+        throw new ClientException(_m("This target doesn't understand posts."));
+    }
+
+    function handleFollow()
+    {
+        throw new ClientException(_m("This target doesn't understand follows."));
+    }
+
+    function handleUnfollow()
+    {
+        throw new ClientException(_m("This target doesn't understand unfollows."));
+    }
+
+    function handleFavorite()
+    {
+        throw new ClientException(_m("This target doesn't understand favorites."));
+    }
+
+    function handleUnfavorite()
+    {
+        throw new ClientException(_m("This target doesn't understand unfavorites."));
+    }
+
+    function handleShare()
+    {
+        throw new ClientException(_m("This target doesn't understand share events."));
+    }
+
+    function handleJoin()
+    {
+        throw new ClientException(_m("This target doesn't understand joins."));
+    }
+
+    function handleLeave()
+    {
+        throw new ClientException(_m("This target doesn't understand leave events."));
+    }
+
+    /**
+     * Remote user sent us an update to their profile.
+     * If we already know them, accept the updates.
+     */
+    function handleUpdateProfile()
+    {
+        $oprofile = Ostatus_profile::getActorProfile($this->act);
+        if ($oprofile) {
+            common_log(LOG_INFO, "Got a profile-update ping from $oprofile->uri");
+            $oprofile->updateFromActivityObject($this->act->actor);
+        } else {
+            common_log(LOG_INFO, "Ignoring profile-update ping from unknown " . $this->act->actor->id);
+        }
+    }
+
+    /**
+     * @return Ostatus_profile
+     */
+    function ensureProfile()
+    {
+        $actor = $this->act->actor;
+        if (empty($actor->id)) {
+            common_log(LOG_ERR, "broken actor: " . var_export($actor, true));
+            common_log(LOG_ERR, "activity with no actor: " . var_export($this->act, true));
+            throw new Exception("Received a salmon slap from unidentified actor.");
+        }
+
+        return Ostatus_profile::ensureActivityObjectProfile($actor);
+    }
+
+    function saveNotice()
+    {
+        $oprofile = $this->ensureProfile();
+        return $oprofile->processPost($this->act, 'salmon');
+    }
+}
diff --git a/plugins/OStatus/lib/salmonqueuehandler.php b/plugins/OStatus/lib/salmonqueuehandler.php
new file mode 100644 (file)
index 0000000..aa97018
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Send a Salmon notification in the background.
+ * @package OStatusPlugin
+ * @author Brion Vibber <brion@status.net>
+ */
+class SalmonQueueHandler extends QueueHandler
+{
+    function transport()
+    {
+        return 'salmon';
+    }
+
+    function handle($data)
+    {
+        assert(is_array($data));
+        assert(is_string($data['salmonuri']));
+        assert(is_string($data['entry']));
+
+        $salmon = new Salmon();
+        $salmon->post($data['salmonuri'], $data['entry']);
+
+        // @fixme detect failure and attempt to resend
+        return true;
+    }
+}
diff --git a/plugins/OStatus/lib/webfinger.php b/plugins/OStatus/lib/webfinger.php
new file mode 100644 (file)
index 0000000..8a50376
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * A sample module to show best practices for StatusNet plugins
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package   StatusNet
+ * @author    James Walker <james@status.net>
+ * @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
+{
+    const PROFILEPAGE = 'http://webfinger.net/rel/profile-page';
+    const UPDATESFROM = 'http://schemas.google.com/g/2010#updates-from';
+
+    /**
+     * 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);
+
+        if (!$content) {
+            return false;
+        }
+
+        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 (file)
index 0000000..16d27f8
--- /dev/null
@@ -0,0 +1,183 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * A sample module to show best practices for StatusNet plugins
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package   StatusNet
+ * @author    James Walker <james@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+
+class 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/OStatus/locale/OStatus.po b/plugins/OStatus/locale/OStatus.po
new file mode 100644 (file)
index 0000000..dedc018
--- /dev/null
@@ -0,0 +1,104 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-07 20:38-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: tests/gettext-speedtest.php:57 FeedSubPlugin.php:76
+msgid "Feeds"
+msgstr ""
+
+#: FeedSubPlugin.php:77
+msgid "Feed subscription options"
+msgstr ""
+
+#: feedmunger.php:215
+#, php-format
+msgid "New post: \"%1$s\" %2$s"
+msgstr ""
+
+#: actions/feedsubsettings.php:41
+msgid "Feed subscriptions"
+msgstr ""
+
+#: actions/feedsubsettings.php:52
+msgid ""
+"You can subscribe to feeds from other sites; updates will appear in your "
+"personal timeline."
+msgstr ""
+
+#: actions/feedsubsettings.php:96
+msgid "Subscribe"
+msgstr ""
+
+#: actions/feedsubsettings.php:98
+msgid "Continue"
+msgstr ""
+
+#: actions/feedsubsettings.php:151
+msgid "Empty feed URL!"
+msgstr ""
+
+#: actions/feedsubsettings.php:161
+msgid "Invalid URL or could not reach server."
+msgstr ""
+
+#: actions/feedsubsettings.php:164
+msgid "Cannot read feed; server returned error."
+msgstr ""
+
+#: actions/feedsubsettings.php:167
+msgid "Cannot read feed; server returned an empty page."
+msgstr ""
+
+#: actions/feedsubsettings.php:170
+msgid "Bad HTML, could not find feed link."
+msgstr ""
+
+#: actions/feedsubsettings.php:173
+msgid "Could not find a feed linked from this URL."
+msgstr ""
+
+#: actions/feedsubsettings.php:176
+msgid "Not a recognized feed type."
+msgstr ""
+
+#: actions/feedsubsettings.php:180
+msgid "Bad feed URL."
+msgstr ""
+
+#: actions/feedsubsettings.php:188
+msgid "Feed is not PuSH-enabled; cannot subscribe."
+msgstr ""
+
+#: actions/feedsubsettings.php:208
+msgid "Feed subscription failed! Bad response from hub."
+msgstr ""
+
+#: actions/feedsubsettings.php:218
+msgid "Already subscribed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:220
+msgid "Feed subscribed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:222
+msgid "Feed subscription failed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:231
+msgid "Previewing feed:"
+msgstr ""
diff --git a/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po b/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po
new file mode 100644 (file)
index 0000000..f17dfa5
--- /dev/null
@@ -0,0 +1,106 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-07 14:14-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: FeedSubPlugin.php:77
+msgid "Feeds"
+msgstr "Flux"
+
+#: FeedSubPlugin.php:78
+msgid "Feed subscription options"
+msgstr "Préférences pour abonnement flux"
+
+#: feedmunger.php:215
+#, php-format
+msgid "New post: \"%1$s\" %2$s"
+msgstr "Nouveau: \"%1$s\" %2$s"
+
+#: actions/feedsubsettings.php:41
+msgid "Feed subscriptions"
+msgstr "Abonnements aux fluxes"
+
+#: actions/feedsubsettings.php:52
+msgid ""
+"You can subscribe to feeds from other sites; updates will appear in your "
+"personal timeline."
+msgstr ""
+"Abonner aux fluxes RSS ou Atom des autres sites web; les temps se trouverair"
+"en votre flux personnel."
+
+#: actions/feedsubsettings.php:96
+msgid "Subscribe"
+msgstr "Abonner"
+
+#: actions/feedsubsettings.php:98
+msgid "Continue"
+msgstr "Prochaine"
+
+#: actions/feedsubsettings.php:151
+msgid "Empty feed URL!"
+msgstr ""
+
+#: actions/feedsubsettings.php:161
+msgid "Invalid URL or could not reach server."
+msgstr ""
+
+#: actions/feedsubsettings.php:164
+msgid "Cannot read feed; server returned error."
+msgstr ""
+
+#: actions/feedsubsettings.php:167
+msgid "Cannot read feed; server returned an empty page."
+msgstr ""
+
+#: actions/feedsubsettings.php:170
+msgid "Bad HTML, could not find feed link."
+msgstr ""
+
+#: actions/feedsubsettings.php:173
+msgid "Could not find a feed linked from this URL."
+msgstr ""
+
+#: actions/feedsubsettings.php:176
+msgid "Not a recognized feed type."
+msgstr ""
+
+#: actions/feedsubsettings.php:180
+msgid "Bad feed URL."
+msgstr ""
+
+#: actions/feedsubsettings.php:188
+msgid "Feed is not PuSH-enabled; cannot subscribe."
+msgstr ""
+
+#: actions/feedsubsettings.php:208
+msgid "Feed subscription failed! Bad response from hub."
+msgstr ""
+
+#: actions/feedsubsettings.php:218
+msgid "Already subscribed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:220
+msgid "Feed subscribed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:222
+msgid "Feed subscription failed!"
+msgstr ""
+
+#: actions/feedsubsettings.php:231
+msgid "Previewing feed:"
+msgstr ""
diff --git a/plugins/OStatus/tests/FeedDiscoveryTest.php b/plugins/OStatus/tests/FeedDiscoveryTest.php
new file mode 100644 (file)
index 0000000..1c52497
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+    print "This script must be run from the command line\n";
+    exit();
+}
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+define('STATUSNET', true);
+define('LACONICA', true);
+
+require_once INSTALLDIR . '/lib/common.php';
+require_once INSTALLDIR . '/plugins/FeedSub/feedsub.php';
+
+class FeedDiscoveryTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider provider
+     *
+     */
+    public function testProduction($url, $html, $expected)
+    {
+        $sub = new FeedDiscovery();
+        $url = $sub->discoverFromHTML($url, $html);
+        $this->assertEquals($expected, $url);
+    }
+
+    static public function provider()
+    {
+        $sampleHeader = <<<END
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head profile="http://gmpg.org/xfn/11">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+
+<title>leŭksman  </title>
+
+<meta name="generator" content="WordPress 2.8.6" /> <!-- leave this for stats -->
+
+<link rel="stylesheet" href="http://leuksman.com/log/wp-content/themes/leuksman/style.css" type="text/css" media="screen" />
+<link rel="alternate" type="application/rss+xml" title="leŭksman RSS Feed" href="http://leuksman.com/log/feed/" />
+<link rel="pingback" href="http://leuksman.com/log/xmlrpc.php" />
+
+<meta name="viewport" content="width = 640" />
+
+<xmeta name="viewport" content="initial-scale=2.3, user-scalable=no" />
+
+<style type="text/css" media="screen">
+
+       #page { background: url("http://leuksman.com/log/wp-content/themes/leuksman/images/kubrickbg.jpg") repeat-y top; border: none; }
+
+</style>
+
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://leuksman.com/log/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://leuksman.com/log/wp-includes/wlwmanifest.xml" /> 
+<link rel='index' title='leŭksman' href='http://leuksman.com/log' />
+<meta name="generator" content="WordPress 2.8.6" />
+</head>
+<body>
+</body>
+</html>
+END;
+        return array(
+                     array('http://example.com/',
+                           '<html><link rel="alternate" href="http://example.com/feed/rss" type="application/rss+xml">',
+                           'http://example.com/feed/rss'),
+                     array('http://example.com/atom',
+                           '<html><link rel="alternate" href="http://example.com/feed/atom" type="application/atom+xml">',
+                           'http://example.com/feed/atom'),
+                     array('http://example.com/empty',
+                           '<html><link rel="alternate" href="http://example.com/index.pdf" type="application/pdf">',
+                           false),
+                     array('http://example.com/tagsoup',
+                           '<body><pre><LINK rel=alternate hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
+                           'http://example.com/feed/rss'),
+                     // 'rel' attribute must be lowercase, alone per http://www.rssboard.org/rss-autodiscovery
+                     array('http://example.com/tagsoup2',
+                           '<body><pre><LINK rel=" feeders    alternate 467" hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
+                           false),
+                     array('http://example.com/tagsoup3',
+                           '<body><pre><LINK rel=ALTERNATE hRef=http://example.com/feed/rss type=application/rss+xml><fnork',
+                           false),
+                     array('http://example.com/relative/link1',
+                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml">',
+                           'http://example.com/feed/rss'),
+                     array('http://example.com/relative/link2',
+                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml">',
+                           'http://example.com/feed/rss'),
+                     array('http://example.com/relative/link3',
+                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml">',
+                           'http://example.com/feed/rss'),
+                     array('http://example.com/base/link1',
+                           '<html><link rel="alternate" href="/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
+                           'http://target.example.com/feed/rss'),
+                     array('http://example.com/base/link2',
+                           '<html><link rel="alternate" href="feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
+                           'http://target.example.com/feed/rss'),
+                     array('http://example.com/base/link3',
+                           '<html><link rel="alternate" href="http:/feed/rss" type="application/rss+xml"><base href="http://target.example.com/">',
+                           'http://target.example.com/feed/rss'),
+                     // Trick question! There's a <base> but no href on it
+                     array('http://example.com/relative/fauxbase',
+                           '<html><link rel="alternate" href="../feed/rss" type="application/rss+xml"><base target="top">',
+                           'http://example.com/feed/rss'),
+                     // Actual WordPress blog header example
+                     array('http://leuksman.com/log/',
+                           $sampleHeader,
+                           'http://leuksman.com/log/feed/'));
+    }
+}
diff --git a/plugins/OStatus/tests/gettext-speedtest.php b/plugins/OStatus/tests/gettext-speedtest.php
new file mode 100644 (file)
index 0000000..8bbdf5e
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+    print "This script must be run from the command line\n";
+    exit();
+}
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+define('STATUSNET', true);
+define('LACONICA', true);
+
+require_once INSTALLDIR . '/scripts/commandline.inc';
+require_once INSTALLDIR . '/extlib/php-gettext/gettext.inc';
+
+common_init_locale("en_US");
+common_init_locale('fr');
+
+
+putenv("LANG=fr");
+putenv("LANGUAGE=fr");
+setlocale('fr.utf8');
+_setlocale('fr.utf8');
+
+_bindtextdomain("statusnet", INSTALLDIR . '/locale');
+_bindtextdomain("FeedSub", INSTALLDIR . '/plugins/FeedSub/locale');
+
+$times = 10000;
+$delta = array();
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = _("Send");
+}
+$delta["_"] = array((microtime(true) - $start) / $times, $result);
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = __("Send");
+}
+$delta["__"] = array((microtime(true) - $start) / $times, $result);
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = dgettext("FeedSub", "Feeds");
+}
+$delta["dgettext"] = array((microtime(true) - $start) / $times, $result);
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = _dgettext("FeedSub", "Feeds");
+}
+$delta["_dgettext"] = array((microtime(true) - $start) / $times, $result);
+
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = _m("Feeds");
+}
+$delta["_m"] = array((microtime(true) - $start) / $times, $result);
+
+
+$start = microtime(true);
+for($i = 0; $i < $times; $i++) {
+    $result = fake("Feeds");
+}
+$delta["fake"] = array((microtime(true) - $start) / $times, $result);
+
+foreach ($delta as $func => $bits) {
+    list($time, $result) = $bits;
+    $ms = $time * 1000.0;
+    printf("%10s %2.4fms %s\n", $func, $ms, $result);
+}
+
+
+function fake($str) {
+    return $str;
+}
+
diff --git a/plugins/OStatus/theme/base/css/ostatus.css b/plugins/OStatus/theme/base/css/ostatus.css
new file mode 100644 (file)
index 0000000..feeeb47
--- /dev/null
@@ -0,0 +1,48 @@
+/** theme: base for OStatus
+ *
+ * @package   StatusNet
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+#form_ostatus_connect.dialogbox,
+#form_ostatus_sub.dialogbox {
+width:70%;
+background-image:none;
+}
+#form_ostatus_sub.dialogbox {
+width:65%;
+}
+#form_ostatus_connect.dialogbox .form_data label,
+#form_ostatus_sub.dialogbox .form_data label {
+width:34%;
+}
+#form_ostatus_connect.dialogbox .form_data input,
+#form_ostatus_sub.dialogbox .form_data input {
+width:57%;
+}
+#form_ostatus_connect.dialogbox .form_data .form_guide,
+#form_ostatus_sub.dialogbox .form_data .form_guide {
+margin-left:36%;
+}
+
+#form_ostatus_connect.dialogbox #ostatus_nickname,
+#form_ostatus_sub.dialogbox #ostatus_nickname {
+display:none;
+}
+
+#form_ostatus_connect.dialogbox .submit_dialogbox,
+#form_ostatus_sub.dialogbox .submit_dialogbox {
+min-width:96px;
+}
+
+#subscriptions #entity_remote_subscribe {
+padding:0;
+float:right;
+}
+
+#subscriptions .entity_remote_subscribe {
+float:right;
+}
index c741e36741d97134feb09b992df984fce9459bae..f2dc610a55d0db2bda34add93b5f6bce5e6251dd 100644 (file)
@@ -3,7 +3,7 @@
 If you already have an account on %%site.name%%, you can [login](%%action.login%%) with your username and password as usual.
 To use OpenID in the future, you can [add an OpenID to your account](%%action.openidsettings%%) after you have logged in normally.
 
-There are many [Public OpenID providers](http://wiki.openid.net/Public_OpenID_providers), and you may already have an OpenID-enabled account on another service.
+There are many [Public OpenID providers](http://wiki.openid.net/OpenID-Providers), and you may already have an OpenID-enabled account on another service.
 
 * On wikis: If you have an account on an OpenID-enabled wiki, like [Wikitravel](http://wikitravel.org/), [wikiHow](http://www.wikihow.com/), [Vinismo](http://vinismo.com/), [AboutUs](http://aboutus.org/) or [Keiki](http://kei.ki/), you can log in to %%site.name%% by entering the **full URL** of your user page on that other wiki in the box above. For example, *http://kei.ki/en/User:Evan*.
 * [Yahoo!](http://openid.yahoo.com/) : If you have an account with Yahoo!, you can log in to this site by entering your Yahoo!-provided OpenID in the box above. Yahoo! OpenID URLs have the form *https://me.yahoo.com/yourusername*.
index d25ce696cf95ad83e97f9d3173784b4a66cfc9f9..438a728d83fb65c0934887353713cb6e747f05d3 100644 (file)
@@ -438,49 +438,7 @@ class FinishopenidloginAction extends Action
 
     function urlToNickname($openid)
     {
-        static $bad = array('query', 'user', 'password', 'port', 'fragment');
-
-        $parts = parse_url($openid);
-
-        # If any of these parts exist, this won't work
-
-        foreach ($bad as $badpart) {
-            if (array_key_exists($badpart, $parts)) {
-                return null;
-            }
-        }
-
-        # We just have host and/or path
-
-        # If it's just a host...
-        if (array_key_exists('host', $parts) &&
-            (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0))
-        {
-            $hostparts = explode('.', $parts['host']);
-
-            # Try to catch common idiom of nickname.service.tld
-
-            if ((count($hostparts) > 2) &&
-                (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au
-                (strcmp($hostparts[0], 'www') != 0))
-            {
-                return $this->nicknamize($hostparts[0]);
-            } else {
-                # Do the whole hostname
-                return $this->nicknamize($parts['host']);
-            }
-        } else {
-            if (array_key_exists('path', $parts)) {
-                # Strip starting, ending slashes
-                $path = preg_replace('@/$@', '', $parts['path']);
-                $path = preg_replace('@^/@', '', $path);
-                if (strpos($path, '/') === false) {
-                    return $this->nicknamize($path);
-                }
-            }
-        }
-
-        return null;
+        return common_url_to_nickname($openid);
     }
 
     function xriToNickname($xri)
@@ -510,7 +468,6 @@ class FinishopenidloginAction extends Action
 
     function nicknamize($str)
     {
-        $str = preg_replace('/\W/', '', $str);
-        return strtolower($str);
+        return common_nicknamize($str);
     }
 }
diff --git a/plugins/PostDebug/PostDebugPlugin.php b/plugins/PostDebug/PostDebugPlugin.php
new file mode 100644 (file)
index 0000000..48fe28e
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * Debugging helper plugin -- records detailed data on POSTs to log
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Sample
+ * @package   StatusNet
+ * @author    Brion Vibber <brionv@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+class PostDebugPlugin extends Plugin
+{
+    /**
+     * Set to a directory to dump individual items instead of
+     * sending to the debug log
+     */
+    public $dir=false;
+
+    public function onArgsInitialize(&$args)
+    {
+        if (isset($_SERVER['REQUEST_METHOD']) &&
+            $_SERVER['REQUEST_METHOD'] == 'POST') {
+            $this->doDebug();
+        }
+    }
+
+    public function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'PostDebug',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Brion Vibber',
+                            'homepage' => 'http://status.net/wiki/Plugin:PostDebug',
+                            'rawdescription' =>
+                            _m('Debugging tool to record request details on POST.'));
+        return true;
+    }
+
+    protected function doDebug()
+    {
+        $data = array('timestamp' => gmdate('r'),
+                      'remote_addr' => @$_SERVER['REMOTE_ADDR'],
+                      'url' => @$_SERVER['REQUEST_URI'],
+                      'have_session' => common_have_session(),
+                      'logged_in' => common_logged_in(),
+                      'is_real_login' => common_is_real_login(),
+                      'user' => common_logged_in() ? common_current_user()->nickname : null,
+                      'headers' => $this->getHttpHeaders(),
+                      'post_data' => $this->sanitizePostData($_POST));
+        $this->saveDebug($data);
+    }
+
+    protected function saveDebug($data)
+    {
+        $output = var_export($data, true);
+        if ($this->dir) {
+            $file = $this->dir . DIRECTORY_SEPARATOR . $this->logFileName();
+            file_put_contents($file, $output);
+        } else {
+            common_log(LOG_DEBUG, "PostDebug: $output");
+        }
+    }
+
+    protected function logFileName()
+    {
+        $base = common_request_id();
+        $base = preg_replace('/^(.+?) .*$/', '$1', $base);
+        $base = str_replace(':', '-', $base);
+        $base = rawurlencode($base);
+        return $base;
+    }
+
+    protected function getHttpHeaders()
+    {
+        if (function_exists('getallheaders')) {
+            $headers = getallheaders();
+        } else {
+            $headers = array();
+            $prefix = 'HTTP_';
+            $prefixLen = strlen($prefix);
+            foreach ($_SERVER as $key => $val) {
+                if (substr($key, 0, $prefixLen) == $prefix) {
+                    $header = $this->normalizeHeader(substr($key, $prefixLen));
+                    $headers[$header] = $val;
+                }
+            }
+        }
+        foreach ($headers as $header => $val) {
+            if (strtolower($header) == 'cookie') {
+                $headers[$header] = $this->sanitizeCookies($val);
+            }
+        }
+        return $headers;
+    }
+
+    protected function normalizeHeader($key)
+    {
+        return implode('-',
+                       array_map('ucfirst',
+                                 explode("_",
+                                         strtolower($key))));
+    }
+
+    function sanitizeCookies($val)
+    {
+        $blacklist = array(session_name(), 'rememberme');
+        foreach ($blacklist as $name) {
+            $val = preg_replace("/(^|;\s*)({$name}=)(.*?)(;|$)/",
+                                "$1$2########$4",
+                                $val);
+        }
+        return $val;
+    }
+
+    function sanitizePostData($data)
+    {
+        $blacklist = array('password', 'confirm', 'token');
+        foreach ($data as $key => $val) {
+            if (in_array($key, $blacklist)) {
+                $data[$key] = '########';
+            }
+        }
+        return $data;
+    }
+
+}
+
index 14d1608d3c8b25bf8311bf82dab0dd94d7e0a02d..fb4eff73894c0791aa37d6de96379a051ba58782 100644 (file)
@@ -45,6 +45,7 @@ class PoweredByStatusNetPlugin extends Plugin
 {
     function onEndAddressData($action)
     {
+        $action->text(' ');
         $action->elementStart('span', 'poweredby');
         $action->raw(sprintf(_m('powered by %s'),
                      sprintf('<a href="http://status.net/">%s</a>',
diff --git a/plugins/Realtime/icon_external.gif b/plugins/Realtime/icon_external.gif
deleted file mode 100644 (file)
index c4118d5..0000000
Binary files a/plugins/Realtime/icon_external.gif and /dev/null differ
diff --git a/plugins/Realtime/icon_pause.gif b/plugins/Realtime/icon_pause.gif
deleted file mode 100644 (file)
index ced0b64..0000000
Binary files a/plugins/Realtime/icon_pause.gif and /dev/null differ
diff --git a/plugins/Realtime/icon_play.gif b/plugins/Realtime/icon_play.gif
deleted file mode 100644 (file)
index 794ec85..0000000
Binary files a/plugins/Realtime/icon_play.gif and /dev/null differ
index 31e7c2ae6638c4b49537022c1b25f54d1230b6ca..f43c97de52e71bb8053b18ffaf38ed70899a6e9b 100644 (file)
@@ -64,18 +64,9 @@ float: left;
 }
 
 #realtime_play {
-background: url(icon_play.gif) no-repeat 47% 47%;
 margin-left: 4px;
 }
 
-#realtime_pause {
-background: url(icon_pause.gif) no-repeat 47% 47%;
-}
-
-#realtime_popup {
-background: url(icon_external.gif) no-repeat 0 30%;
-}
-
 #queued_counter {
 float:left;
 line-height:1.2;
index 52151f9de8dad1dd42df0e95034b020ff98e9e32..2e5851ae531e539dc07f85a0d0eab80915a87fc8 100644 (file)
@@ -95,9 +95,7 @@ RealtimeUpdate = {
         $("#notices_primary .notice:first").css({display:"none"});
         $("#notices_primary .notice:first").fadeIn(1000);
 
-        SN.U.FormXHR($('#'+noticeItemID+' .form_favor'));
         SN.U.NoticeReplyTo($('#'+noticeItemID));
-        SN.U.FormXHR($('#'+noticeItemID+' .form_repeat'));
         SN.U.NoticeWithAttachment($('#'+noticeItemID));
      },
 
@@ -136,7 +134,7 @@ RealtimeUpdate = {
           ni = "<li class=\"hentry notice\" id=\"notice-"+unique+"\">"+
                "<div class=\"entry-title\">"+
                "<span class=\"vcard author\">"+
-               "<a href=\""+user['profile_url']+"\" class=\"url\">"+
+               "<a href=\""+user['profile_url']+"\" class=\"url\" title=\""+user['name']+"\">"+
                "<img src=\""+user['profile_image_url']+"\" class=\"avatar photo\" width=\"48\" height=\"48\" alt=\""+user['screen_name']+"\"/>"+
                "<span class=\"nickname fn\">"+user['screen_name']+"</span>"+
                "</a>"+
@@ -180,7 +178,7 @@ RealtimeUpdate = {
 
           ni = ni+"</div>";
 
-               "</li>";
+          ni = ni+"</li>";
           return ni;
      },
 
@@ -211,10 +209,10 @@ RealtimeUpdate = {
           var rf;
           rf = "<form id=\"repeat-"+id+"\" class=\"form_repeat\" method=\"post\" action=\""+RealtimeUpdate._repeaturl+"\">"+
                "<fieldset>"+
-               "<legend>Favor this notice</legend>"+
+               "<legend>Repeat this notice?</legend>"+
                "<input name=\"token-"+id+"\" type=\"hidden\" id=\"token-"+id+"\" value=\""+session_key+"\"/>"+
-               "<input name=\"notice\" type=\"hidden\" id=\"notice-n"+id+"\" value=\""+id+"\"/>"+
-               "<input type=\"submit\" id=\"repeat-submit-"+id+"\" name=\"repeat-submit-"+id+"\" class=\"submit\" value=\"Favor\" title=\"Repeat this notice\"/>"+
+               "<input name=\"notice\" type=\"hidden\" id=\"notice-"+id+"\" value=\""+id+"\"/>"+
+               "<input type=\"submit\" id=\"repeat-submit-"+id+"\" name=\"repeat-submit-"+id+"\" class=\"submit\" value=\"Yes\" title=\"Repeat this notice\"/>"+
                "</fieldset>"+
                "</form>";
 
index 0cfd8a1c3e9d9eb7e3f33a7e1830cc7ef437db13..dfbd0ad4f256ffa578a2a7cdde65a0e2cd4580de 100644 (file)
@@ -119,13 +119,15 @@ class HelloAction extends Action
     }
 
     /**
-     * show content in the content area
+     * Show content in the content area
      *
      * The default StatusNet page has a lot of decorations: menus,
      * logos, tabs, all that jazz. This method is used to show
      * content in the content area of the page; it's the main
      * thing you want to overload.
      *
+     * This method also demonstrates use of a plural localized string.
+     *
      * @return void
      */
 
@@ -138,7 +140,9 @@ class HelloAction extends Action
             $this->element('p', array('class' => 'greeting'),
                            sprintf(_m('Hello, %s'), $this->user->nickname));
             $this->element('p', array('class' => 'greeting_count'),
-                           sprintf(_m('I have greeted you %d time(s).'),
+                           sprintf(_m('I have greeted you %d time.',
+                                      'I have greeted you %d times.',
+                                      $this->gc->greeting_count),
                                    $this->gc->greeting_count));
         }
     }
diff --git a/plugins/Sample/locale/Sample.po b/plugins/Sample/locale/Sample.po
new file mode 100644 (file)
index 0000000..e0d2aa8
--- /dev/null
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-02-24 16:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: hello.php:115 SamplePlugin.php:266
+msgid "Hello"
+msgstr ""
+
+#: hello.php:117 hello.php:141
+#, php-format
+msgid "Hello, %s"
+msgstr ""
+
+#: hello.php:138
+msgid "Hello, stranger!"
+msgstr ""
+
+#: hello.php:143
+#, php-format
+msgid "I have greeted you %d time."
+msgid_plural "I have greeted you %d times."
+msgstr[0] ""
+msgstr[1] ""
+
+#: SamplePlugin.php:266
+msgid "A warm greeting"
+msgstr ""
+
+#: SamplePlugin.php:277
+msgid "A sample plugin to show basics of development for new hackers."
+msgstr ""
+
+#: User_greeting_count.php:163
+#, php-format
+msgid "Could not save new greeting count for %d"
+msgstr ""
+
+#: User_greeting_count.php:176
+#, php-format
+msgid "Could not increment greeting count for %d"
+msgstr ""
index a33869c19ea2be076c4db748a100a1fb9e268b3f..ae3dfe0365155983e6518046afd1def6bb1ec51d 100644 (file)
@@ -182,21 +182,6 @@ class UserFlagPlugin extends Plugin
         return true;
     }
 
-    /**
-     * Add our plugin's CSS to page output
-     *
-     * @param Action $action action being shown
-     *
-     * @return boolean hook result
-     */
-
-    function onEndShowStatusNetStyles($action)
-    {
-        $action->cssLink(common_path('plugins/UserFlag/userflag.css'),
-                         null, 'screen, projection, tv');
-        return true;
-    }
-
     /**
      * Initialize any flagging buttons on the page
      *
@@ -208,8 +193,8 @@ class UserFlagPlugin extends Plugin
     function onEndShowScripts($action)
     {
         $action->inlineScript('if ($(".form_entity_flag").length > 0) { '.
-                              'SN.U.FormXHR($(".form_entity_flag")); '.
-                              '}');
+                              '$(".form_entity_flag").bind("click", function() {'.
+                              'SN.U.FormXHR($(this)); return false; }); }');
         return true;
     }
 
index 5ad6055d331a85ceaba61ccf5d83c116399f2ca1..eefd15c3680bb9c48426540b32846a9be03ba2d1 100644 (file)
@@ -54,7 +54,7 @@ class ClearFlagForm extends ProfileActionForm
 
     function formClass()
     {
-        return 'form_entity_clearflag';
+        return 'form_user_clearflag';
     }
 
     /**
diff --git a/plugins/UserFlag/icon_flag.gif b/plugins/UserFlag/icon_flag.gif
deleted file mode 100644 (file)
index 68c8aee..0000000
Binary files a/plugins/UserFlag/icon_flag.gif and /dev/null differ
diff --git a/plugins/UserFlag/userflag.css b/plugins/UserFlag/userflag.css
deleted file mode 100644 (file)
index 98da24c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-.entity_flag input.submit,
-.entity_flag p {
-background:url(icon_flag.gif) 5px 5px no-repeat;
-}
old mode 100644 (file)
new mode 100755 (executable)
index b102f99..fe0e46d
@@ -28,6 +28,7 @@ setconfig.php [options] [section] [setting] <value>
 With three args, set the setting to the value.
 With two args, just show the setting.
 With -d, delete the setting.
+With no args, lists all currently set values.
 
   [section]   section to use (required)
   [setting]   setting to use (required)
@@ -39,6 +40,21 @@ END_OF_SETCONFIG_HELP;
 
 require_once INSTALLDIR.'/scripts/commandline.inc';
 
+if (empty($args)) {
+    $count = 0;
+    $config = new Config();
+    $config->find();
+    while ($config->fetch()) {
+        $count++;
+        printf("%-20s %-20s %s\n", $config->section, $config->setting,
+               var_export($config->value, true));
+    }
+    if ($count == 0) {
+        print "No configuration set in database for this site.\n";
+    }
+    exit(0);
+}
+
 if (count($args) < 2 || count($args) > 3) {
     show_help();
     exit(1);
index f882f673a4d9d00025dcfe0154c7068ce60142c8..61a6ac78331d543f66af381255961b103ee9f15a 100755 (executable)
@@ -63,7 +63,10 @@ xgettext \
     --output=locale/$domain.po \
     --language=PHP \
     --keyword='' \
-    --keyword="_m:1" \
+    --keyword="_m:1,1t" \
+    --keyword="_m:1c,2,2t" \
+    --keyword="_m:1,2,3t" \
+    --keyword="_m:1c,2,3,4t" \
 
 END;
     foreach ($files as $file) {
@@ -186,6 +189,9 @@ foreach ($args as $arg) {
         $allplugins = true;
     } elseif (substr($arg, 0, 9) == "--plugin=") {
         $plugins[] = substr($arg, 9);
+    } elseif ($arg == '--help') {
+        echo "options: --all --core --plugins --plugin=Foo\n\n";
+        exit(0);
     }
 }
 
diff --git a/tests/ActivityParseTests.php b/tests/ActivityParseTests.php
new file mode 100644 (file)
index 0000000..d1d8717
--- /dev/null
@@ -0,0 +1,328 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+    print "This script must be run from the command line\n";
+    exit();
+}
+
+// XXX: we should probably have some common source for this stuff
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+define('STATUSNET', true);
+
+require_once INSTALLDIR . '/lib/common.php';
+
+class ActivityParseTests extends PHPUnit_Framework_TestCase
+{
+    public function testExample1()
+    {
+        global $_example1;
+        $dom = DOMDocument::loadXML($_example1);
+        $act = new Activity($dom->documentElement);
+
+        $this->assertFalse(empty($act));
+
+        $this->assertEquals($act->time, 1243860840);
+        $this->assertEquals($act->verb, ActivityVerb::POST);
+
+        $this->assertFalse(empty($act->object));
+        $this->assertEquals($act->object->title, 'Punctuation Changeset');
+        $this->assertEquals($act->object->type, 'http://versioncentral.example.org/activity/changeset');
+        $this->assertEquals($act->object->summary, 'Fixing punctuation because it makes it more readable.');
+        $this->assertEquals($act->object->id, 'tag:versioncentral.example.org,2009:/change/1643245');
+    }
+
+    public function testExample3()
+    {
+        global $_example3;
+        $dom = DOMDocument::loadXML($_example3);
+
+        $feed = $dom->documentElement;
+
+        $entries = $feed->getElementsByTagName('entry');
+
+        $entry = $entries->item(0);
+
+        $act = new Activity($entry, $feed);
+
+        $this->assertFalse(empty($act));
+        $this->assertEquals($act->time, 1071340202);
+        $this->assertEquals($act->link, 'http://example.org/2003/12/13/atom03.html');
+
+        $this->assertEquals($act->verb, ActivityVerb::POST);
+
+        $this->assertFalse(empty($act->actor));
+        $this->assertEquals($act->actor->type, ActivityObject::PERSON);
+        $this->assertEquals($act->actor->title, 'John Doe');
+        $this->assertEquals($act->actor->id, 'mailto:johndoe@example.com');
+
+        $this->assertFalse(empty($act->object));
+        $this->assertEquals($act->object->type, ActivityObject::NOTE);
+        $this->assertEquals($act->object->id, 'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a');
+        $this->assertEquals($act->object->title, 'Atom-Powered Robots Run Amok');
+        $this->assertEquals($act->object->summary, 'Some text.');
+        $this->assertEquals($act->object->link, 'http://example.org/2003/12/13/atom03.html');
+
+        $this->assertFalse(empty($act->context));
+
+        $this->assertTrue(empty($act->target));
+
+        $this->assertEquals($act->entry, $entry);
+        $this->assertEquals($act->feed, $feed);
+    }
+
+    public function testExample4()
+    {
+        global $_example4;
+        $dom = DOMDocument::loadXML($_example4);
+
+        $entry = $dom->documentElement;
+
+        $act = new Activity($entry);
+
+        $this->assertFalse(empty($act));
+        $this->assertEquals(1266547958, $act->time);
+        $this->assertEquals('http://example.net/notice/14', $act->link);
+
+        $this->assertFalse(empty($act->context));
+        $this->assertEquals('http://example.net/notice/12', $act->context->replyToID);
+        $this->assertEquals('http://example.net/notice/12', $act->context->replyToUrl);
+        $this->assertEquals('http://example.net/conversation/11', $act->context->conversation);
+        $this->assertEquals(array('http://example.net/user/1'), $act->context->attention);
+
+        $this->assertFalse(empty($act->object));
+        $this->assertEquals($act->object->content,
+                            '@<span class="vcard"><a href="http://example.net/user/1" class="url"><span class="fn nickname">evan</span></a></span> now is the time for all good men to come to the aid of their country. #<span class="tag"><a href="http://example.net/tag/thetime" rel="tag">thetime</a></span>');
+
+        $this->assertFalse(empty($act->actor));
+    }
+
+    public function testExample5()
+    {
+        global $_example5;
+        $dom = DOMDocument::loadXML($_example5);
+
+        $feed = $dom->documentElement;
+
+        // @todo Test feed elements
+
+        $entries = $feed->getElementsByTagName('entry');
+        $entry = $entries->item(0);
+
+        $act = new Activity($entry, $feed);
+
+        // Post
+        $this->assertEquals($act->verb, ActivityVerb::POST);
+        $this->assertFalse(empty($act->context));
+
+        // Actor w/Portable Contacts stuff
+        $this->assertFalse(empty($act->actor));
+        $this->assertEquals($act->actor->type, ActivityObject::PERSON);
+        $this->assertEquals($act->actor->title, 'Test User');
+        $this->assertEquals($act->actor->id, 'http://example.net/mysite/user/3');
+        $this->assertEquals($act->actor->link, 'http://example.net/mysite/testuser');
+        $this->assertEquals(
+            $act->actor->avatar,
+            'http://example.net/mysite/avatar/3-96-20100224004207.jpeg'
+        );
+        $this->assertEquals($act->actor->displayName, 'Test User');
+
+        $poco = $act->actor->poco;
+        $this->assertEquals($poco->preferredUsername, 'testuser');
+        $this->assertEquals($poco->address->formatted, 'San Francisco, CA');
+        $this->assertEquals($poco->urls[0]->type, 'homepage');
+        $this->assertEquals($poco->urls[0]->value, 'http://example.com/blog.html');
+        $this->assertEquals($poco->urls[0]->primary, 'true');
+        $this->assertEquals($act->actor->geopoint, '37.7749295 -122.4194155');
+
+    }
+
+}
+
+$_example1 = <<<EXAMPLE1
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns='http://www.w3.org/2005/Atom' xmlns:activity='http://activitystrea.ms/spec/1.0/'>
+  <id>tag:versioncentral.example.org,2009:/commit/1643245</id>
+  <published>2009-06-01T12:54:00Z</published>
+  <title>Geraldine committed a change to yate</title>
+  <content type="xhtml">Geraldine just committed a change to yate on VersionCentral</content>
+  <link rel="alternate" type="text/html"
+        href="http://versioncentral.example.org/geraldine/yate/commit/1643245" />
+  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
+  <activity:verb>http://versioncentral.example.org/activity/commit</activity:verb>
+  <activity:object>
+    <activity:object-type>http://versioncentral.example.org/activity/changeset</activity:object-type>
+    <id>tag:versioncentral.example.org,2009:/change/1643245</id>
+    <title>Punctuation Changeset</title>
+    <summary>Fixing punctuation because it makes it more readable.</summary>
+    <link rel="alternate" type="text/html" href="..." />
+  </activity:object>
+</entry>
+EXAMPLE1;
+
+$_example2 = <<<EXAMPLE2
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns='http://www.w3.org/2005/Atom' xmlns:activity='http://activitystrea.ms/spec/1.0/'>
+  <id>tag:photopanic.example.com,2008:activity01</id>
+  <title>Geraldine posted a Photo on PhotoPanic</title>
+  <published>2008-11-02T15:29:00Z</published>
+  <link rel="alternate" type="text/html" href="/geraldine/activities/1" />
+  <activity:verb>
+  http://activitystrea.ms/schema/1.0/post
+  </activity:verb>
+  <activity:object>
+    <id>tag:photopanic.example.com,2008:photo01</id>
+    <title>My Cat</title>
+    <published>2008-11-02T15:29:00Z</published>
+    <link rel="alternate" type="text/html" href="/geraldine/photos/1" />
+    <activity:object-type>
+      tag:atomactivity.example.com,2008:photo
+    </activity:object-type>
+    <source>
+      <title>Geraldine's Photos</title>
+      <link rel="self" type="application/atom+xml" href="/geraldine/photofeed.xml" />
+      <link rel="alternate" type="text/html" href="/geraldine/" />
+    </source>
+  </activity:object>
+  <content type="html">
+     &lt;p&gt;Geraldine posted a Photo on PhotoPanic&lt;/p&gt;
+     &lt;img src="/geraldine/photo1.jpg"&gt;
+  </content>
+</entry>
+EXAMPLE2;
+
+$_example3 = <<<EXAMPLE3
+<?xml version="1.0" encoding="utf-8"?>
+
+<feed xmlns="http://www.w3.org/2005/Atom">
+
+    <title>Example Feed</title>
+    <subtitle>A subtitle.</subtitle>
+    <link href="http://example.org/feed/" rel="self" />
+    <link href="http://example.org/" />
+    <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
+    <updated>2003-12-13T18:30:02Z</updated>
+    <author>
+        <name>John Doe</name>
+        <email>johndoe@example.com</email>
+    </author>
+
+    <entry>
+        <title>Atom-Powered Robots Run Amok</title>
+        <link href="http://example.org/2003/12/13/atom03" />
+        <link rel="alternate" type="text/html" href="http://example.org/2003/12/13/atom03.html"/>
+        <link rel="edit" href="http://example.org/2003/12/13/atom03/edit"/>
+        <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+        <updated>2003-12-13T18:30:02Z</updated>
+        <summary>Some text.</summary>
+    </entry>
+
+</feed>
+EXAMPLE3;
+
+$_example4 = <<<EXAMPLE4
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns="http://www.w3.org/2005/Atom" 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">
+ <title>@evan now is the time for all good men to come to the aid of their country. #thetime</title>
+ <summary>@evan now is the time for all good men to come to the aid of their country. #thetime</summary>
+<author>
+ <name>spock</name>
+ <uri>http://example.net/user/2</uri>
+</author>
+<activity:actor>
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
+ <id>http://example.net/user/2</id>
+ <title>spock</title>
+ <link type="image/png" rel="avatar" href="http://example.net/theme/identica/default-avatar-profile.png"></link>
+</activity:actor>
+ <link rel="alternate" type="text/html" href="http://example.net/notice/14"/>
+ <id>http://example.net/notice/14</id>
+ <published>2010-02-19T02:52:38+00:00</published>
+ <updated>2010-02-19T02:52:38+00:00</updated>
+ <link rel="related" href="http://example.net/notice/12"/>
+ <thr:in-reply-to ref="http://example.net/notice/12" href="http://example.net/notice/12"></thr:in-reply-to>
+ <link rel="ostatus:conversation" href="http://example.net/conversation/11"/>
+ <link rel="ostatus:attention" href="http://example.net/user/1"/>
+ <content type="html">@&lt;span class=&quot;vcard&quot;&gt;&lt;a href=&quot;http://example.net/user/1&quot; class=&quot;url&quot;&gt;&lt;span class=&quot;fn nickname&quot;&gt;evan&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; now is the time for all good men to come to the aid of their country. #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;http://example.net/tag/thetime&quot; rel=&quot;tag&quot;&gt;thetime&lt;/a&gt;&lt;/span&gt;</content>
+ <category term="thetime"></category>
+</entry>
+EXAMPLE4;
+
+$_example5 = <<<EXAMPLE5
+<?xml version="1.0" encoding="UTF-8"?>
+<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" 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:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0">
+ <id>3</id>
+ <title>testuser timeline</title>
+ <subtitle>Updates from testuser on Zach Dev!</subtitle>
+ <logo>http://example.net/mysite/avatar/3-96-20100224004207.jpeg</logo>
+ <updated>2010-02-24T06:38:49+00:00</updated>
+<author>
+ <name>testuser</name>
+ <uri>http://example.net/mysite/user/3</uri>
+
+</author>
+ <link href="http://example.net/mysite/testuser" rel="alternate" type="text/html"/>
+ <link href="http://example.net/mysite/api/statuses/user_timeline/3.atom" rel="self" type="application/atom+xml"/>
+ <link href="http://example.net/mysite/main/sup#3" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
+ <link href="http://example.net/mysite/main/push/hub" rel="hub"/>
+ <link href="http://example.net/mysite/main/salmon/user/3" rel="salmon"/>
+<activity:subject>
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
+ <id>http://example.net/mysite/user/3</id>
+ <title>Test User</title>
+ <link rel="alternate" type="text/html" href="http://example.net/mysite/testuser"/>
+ <link type="image/jpeg" rel="avatar" href="http://example.net/mysite/avatar/3-96-20100224004207.jpeg"/>
+ <georss:point>37.7749295 -122.4194155</georss:point>
+
+<poco:preferredUsername>testuser</poco:preferredUsername>
+<poco:displayName>Test User</poco:displayName>
+<poco:note>Just another test user.</poco:note>
+<poco:address>
+ <poco:formatted>San Francisco, CA</poco:formatted>
+</poco:address>
+<poco:urls>
+ <poco:type>homepage</poco:type>
+ <poco:value>http://example.com/blog.html</poco:value>
+ <poco:primary>true</poco:primary>
+
+</poco:urls>
+</activity:subject>
+<entry>
+ <title>Hey man, is that Freedom Code?! #freedom #hippy</title>
+ <summary>Hey man, is that Freedom Code?! #freedom #hippy</summary>
+<author>
+ <name>testuser</name>
+ <uri>http://example.net/mysite/user/3</uri>
+</author>
+<activity:actor>
+ <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
+ <id>http://example.net/mysite/user/3</id>
+ <title>Test User</title>
+ <link rel="alternate" type="text/html" href="http://example.net/mysite/testuser"/>
+ <link type="image/jpeg" rel="avatar" href="http://example.net/mysite/avatar/3-96-20100224004207.jpeg"/>
+ <georss:point>37.7749295 -122.4194155</georss:point>
+
+<poco:preferredUsername>testuser</poco:preferredUsername>
+<poco:displayName>Test User</poco:displayName>
+<poco:note>Just another test user.</poco:note>
+<poco:address>
+ <poco:formatted>San Francisco, CA</poco:formatted>
+</poco:address>
+<poco:urls>
+ <poco:type>homepage</poco:type>
+ <poco:value>http://example.com/blog.html</poco:value>
+ <poco:primary>true</poco:primary>
+
+</poco:urls>
+</activity:actor>
+ <link rel="alternate" type="text/html" href="http://example.net/mysite/notice/7"/>
+ <id>http://example.net/mysite/notice/7</id>
+ <published>2010-02-24T00:53:06+00:00</published>
+ <updated>2010-02-24T00:53:06+00:00</updated>
+ <link rel="ostatus:conversation" href="http://example.net/mysite/conversation/7"/>
+ <content type="html">Hey man, is that Freedom Code?! #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;http://example.net/mysite/tag/freedom&quot; rel=&quot;tag&quot;&gt;freedom&lt;/a&gt;&lt;/span&gt; #&lt;span class=&quot;tag&quot;&gt;&lt;a href=&quot;http://example.net/mysite/tag/hippy&quot; rel=&quot;tag&quot;&gt;hippy&lt;/a&gt;&lt;/span&gt;</content>
+ <georss:point>37.8313160 -122.2852473</georss:point>
+
+</entry>
+</feed>
+EXAMPLE5;
diff --git a/tests/TagURITest.php b/tests/TagURITest.php
new file mode 100644 (file)
index 0000000..d23f8bf
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+    print "This script must be run from the command line\n";
+    exit();
+}
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+define('STATUSNET', true);
+
+require_once INSTALLDIR . '/lib/common.php';
+
+$config['site']['server'] = 'example.net';
+$config['site']['path']   = '/apps/statusnet';
+
+class TagURITest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider provider
+     */
+    public function testProduction($format, $args, $uri)
+    {
+        $minted = call_user_func_array(array('TagURI', 'mint'),
+                                       array_merge(array($format), $args));
+
+        $this->assertEquals($uri, $minted);
+    }
+
+    static public function provider()
+    {
+        return array(array('favorite:%d:%d',
+                           array(1, 3),
+                           'tag:example.net,'.date('Y-m-d').':apps:statusnet:favorite:1:3'));
+    }
+}
+
index ed8853e57e665dfbd66bd0b09f970ef1f629a077..52f97f6b12b64378be02d92685f87afe49b744e3 100644 (file)
@@ -288,7 +288,7 @@ margin-left:18px;
 }
 #site_nav_global_primary li {
 display:inline;
-margin-left:11px;
+margin-left:18px;
 }
 
 .system_notice dt {
@@ -370,7 +370,7 @@ margin-bottom:11px;
 
 #site_nav_global_secondary ul li {
 display:inline;
-margin-right:11px;
+margin-right:18px;
 }
 #export_data li a {
 padding-left:20px;
@@ -383,15 +383,13 @@ padding-left:28px;
 }
 
 #export_data ul {
-display:inline;
+width:100%;
+float:left;
 }
 #export_data li {
 list-style-type:none;
-display:inline;
-margin-left:11px;
-}
-#export_data li:first-child {
-margin-left:0;
+float:left;
+margin-right:11px;
 }
 
 #licenses {
@@ -801,8 +799,8 @@ list-style-type:none;
 display:inline;
 }
 .entity_tags li {
-display:inline;
-margin-right:4px;
+float:left;
+margin-right:11px;
 }
 
 .aside .section {
@@ -820,6 +818,7 @@ font-size:1em;
 #entity_statistics dt,
 #entity_statistics dd {
 display:inline;
+margin-right:11px;
 }
 #entity_statistics dt:after {
 content: ":";
@@ -1036,6 +1035,7 @@ text-decoration:underline;
 
 .notice .entry-title {
 overflow:hidden;
+word-wrap:break-word;
 }
 .notice .entry-title.ov {
 overflow:visible;
@@ -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;
@@ -1413,6 +1427,9 @@ margin-bottom:18px;
 .hentry .entry-content li li {
 margin-left:18px;
 }
+.hentry .entry-content .form_settings ul {
+margin-left:0;
+}
 
 #content #plugin_authors {
 min-width:122px;
@@ -1473,12 +1490,18 @@ text-align:center;
 }
 .aside .tag-cloud {
 font-size:0.8em;
+word-wrap:break-word;
 }
 .tag-cloud li {
 display:inline;
 margin-right:7px;
 line-height:1.25;
 }
+
+.tag-cloud li:before {
+content:'\0009';
+}
+
 .aside .tag-cloud li {
 line-height:1.5;
 }
diff --git a/theme/base/images/icons/README b/theme/base/images/icons/README
new file mode 100644 (file)
index 0000000..ea58214
--- /dev/null
@@ -0,0 +1,54 @@
+/**
+ * @author    Paul Jarvis http://code.google.com/p/twotiny/
+ * @license   http://dev.perl.org/licenses/ Artistic License/GPL
+ * @note
+        White left arrow with green background
+        White right arrow with green background
+        White clip with green background
+        White heart with green background
+        White reply with green background
+        White garbage with green background
+        White pencil with green background
+        White envelope with green background
+        White speech bubble with green background
+        White shield with green background
+        White asterisk with green background
+        White x with green background
+        White plus with green background
+        White minus with green background
+        White skull with green background
+        White recycle with green background
+        White external with green background
+        White key with green background
+        White flag with green background
+        White checkmark with green background
+        White reject with green background
+        White play with green background
+        White pause with green background
+ */
+
+
+/**
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ * @note
+        Green clip with transparent background
+        Green heart with white background
+        White person with tie with green background
+        White sherif badge with green background
+        White boxes with green background
+        White speech bubble broken with green background
+        Green recycle with transparent background
+        Green pin with white background
+        White pin with green background
+        White underscore with green background
+        White C with green background
+ */
+
+Created by various authors
+* FOAF icon from http://iandavis.com/2006/foaf-icons/ with Public Domain license
+* Atom feed icon from http://intertwingly.net/wiki/pie/Icon with Public Domain license
+* RSS feed icon from http://www.feedicons.com/ (Mozilla, Microsoft, Matt Brett) with MPL/GPL/LGPL tri-license
+* Processing icon from/by Unknown with Unknown license //FIXME
diff --git a/theme/base/images/icons/icon_geo.png b/theme/base/images/icons/icon_geo.png
deleted file mode 100644 (file)
index 8df2456..0000000
Binary files a/theme/base/images/icons/icon_geo.png and /dev/null differ
index f93d33d79bce50e1e407c98d534c6cbff24d4366..be884ff48944d2ec4694f426ada7644b0aa0e101 100644 (file)
Binary files a/theme/base/images/icons/icons-01.gif and b/theme/base/images/icons/icons-01.gif differ
diff --git a/theme/base/images/icons/twotone/green/against.gif b/theme/base/images/icons/twotone/green/against.gif
new file mode 100644 (file)
index 0000000..ca796c8
Binary files /dev/null and b/theme/base/images/icons/twotone/green/against.gif differ
diff --git a/theme/base/images/icons/twotone/green/checkmark.gif b/theme/base/images/icons/twotone/green/checkmark.gif
new file mode 100644 (file)
index 0000000..892429d
Binary files /dev/null and b/theme/base/images/icons/twotone/green/checkmark.gif differ
diff --git a/theme/base/images/icons/twotone/green/clear.gif b/theme/base/images/icons/twotone/green/clear.gif
new file mode 100644 (file)
index 0000000..2666430
Binary files /dev/null and b/theme/base/images/icons/twotone/green/clear.gif differ
diff --git a/theme/base/images/icons/twotone/green/flag.gif b/theme/base/images/icons/twotone/green/flag.gif
new file mode 100644 (file)
index 0000000..68c8aee
Binary files /dev/null and b/theme/base/images/icons/twotone/green/flag.gif differ
index 7c68b34f61008753d12394806c3cf46f7b04effd..cf1839194a6d8e91d3ec988abe7d5be227143d28 100644 (file)
Binary files a/theme/base/logo.png and b/theme/base/logo.png differ
index 726062e473f17b2b5c06c2803835800b3c4f0518..285c2ad836f88615faea0d1f8434c8358050bd25 100644 (file)
@@ -1628,15 +1628,23 @@ button.close,
 .form_user_unsubscribe input.submit,
 .form_group_join input.submit,
 .form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a,
 .entity_moderation p,
 .entity_sandbox input.submit,
 .entity_silence input.submit,
 .entity_delete input.submit,
 .notice-options .repeated,
-.form_notice a#notice_data-geo_name,
 .form_notice label[for=notice_data-geo],
-button.minimize {
+button.minimize,
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit,
+#realtime_play,
+#realtime_pause,
+#realtime_popup {
 background-image:url(../../base/images/icons/icons-01.gif);
 background-repeat:no-repeat;
 background-color:transparent;
@@ -1899,6 +1907,31 @@ background-position: 5px -1445px;
 .entity_delete input.submit {
 background-position: 5px -1511px;
 }
+.form_reset_key input.submit {
+background-position: 5px -1973px;
+}
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
+#realtime_play {
+background-position: 0 -2308px;
+}
+#realtime_pause {
+background-position: 0 -2374px;
+}
+#realtime_popup {
+background-position: 0 -1714px;
+}
 
 
 /* NOTICES */
index 06711850fc3856c3452290b977f031ac9a8a9c76..8ae2b4014199ef77d605a0f3c89e75b98bce7e81 100644 (file)
@@ -1,7 +1,7 @@
 /** theme: default
  *
  * @package   StatusNet
- * @author Sarven Capadisli <csarven@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
  * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
@@ -18,7 +18,7 @@ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
 font-size:1em;
 }
 address {
-margin-right:5.7%;
+margin-right:5.3%;
 }
 input, textarea, select {
 border-width:2px;
@@ -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] {
@@ -181,6 +184,7 @@ button.close,
 .form_user_unsubscribe input.submit,
 .form_group_join input.submit,
 .form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a,
 .entity_moderation p,
 .entity_sandbox input.submit,
@@ -189,7 +193,14 @@ button.close,
 .notice-options .repeated,
 .form_notice label[for=notice_data-geo],
 button.minimize,
-.form_reset_key input.submit {
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit,
+#realtime_play,
+#realtime_pause,
+#realtime_popup {
 background-image:url(../../base/images/icons/icons-01.gif);
 background-repeat:no-repeat;
 background-color:transparent;
@@ -217,7 +228,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;
 }
 
@@ -283,6 +295,7 @@ background-position:0 1px;
 .form_group_leave input.submit,
 .form_user_subscribe input.submit,
 .form_user_unsubscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a {
 background-color:#AAAAAA;
 color:#FFFFFF;
@@ -293,18 +306,20 @@ background-position:5px -1246px;
 }
 .form_group_join input.submit,
 .form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a {
 background-position:5px -1181px;
 }
 
 .entity_edit a {
-background-position: 5px -718px;
+background-position: 5px -719px;
 }
 .entity_send-a-message a {
 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);
@@ -338,6 +353,29 @@ background-position: 5px -1511px;
 .form_reset_key input.submit {
 background-position: 5px -1973px;
 }
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
+#realtime_play {
+background-position: 0 -2308px;
+}
+#realtime_pause {
+background-position: 0 -2374px;
+}
+#realtime_popup {
+background-position: 0 -1714px;
+}
+
 
 /* NOTICES */
 .notice .attachment {
index 550d373fef4005342c4e1daa7cb2c115db54f46c..cf1839194a6d8e91d3ec988abe7d5be227143d28 100644 (file)
Binary files a/theme/default/logo.png and b/theme/default/logo.png differ
index b72f7aff5b114e134e3fb1b510d1c47baf76306f..66bb5f67871596723fcd928c80ed5ebc18899a32 100644 (file)
Binary files a/theme/default/mobilelogo.png and b/theme/default/mobilelogo.png differ
index 1ac96ab5be4b3ad8a2210d5cb0145c0a27b71f99..737e3a10326d13fd1db8d7de858c49252759c367 100644 (file)
@@ -1,7 +1,7 @@
 /** theme: identica
  *
  * @package   StatusNet
- * @author Sarven Capadisli <csarven@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
  * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
@@ -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 {
@@ -88,6 +92,7 @@ color:#FFFFFF;
 border-color:transparent;
 text-shadow:none;
 }
+
 .dialogbox .submit_dialogbox,
 input.submit,
 .form_notice input.submit {
@@ -133,9 +138,6 @@ color:#002FA7;
 #content tbody tr {
 border-top-color:#CEE1E9;
 }
-.mark-top {
-border-color:#AAAAAA;
-}
 
 #aside_primary {
 background-color:#CEE1E9;
@@ -144,7 +146,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] {
@@ -181,6 +185,7 @@ button.close,
 .form_user_unsubscribe input.submit,
 .form_group_join input.submit,
 .form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a,
 .entity_moderation p,
 .entity_sandbox input.submit,
@@ -189,7 +194,14 @@ button.close,
 .notice-options .repeated,
 .form_notice label[for=notice_data-geo],
 button.minimize,
-.form_reset_key input.submit {
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit,
+#realtime_play,
+#realtime_pause,
+#realtime_popup {
 background-image:url(../../base/images/icons/icons-01.gif);
 background-repeat:no-repeat;
 background-color:transparent;
@@ -217,7 +229,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;
 }
 
@@ -282,6 +295,7 @@ background-position:0 1px;
 .form_group_leave input.submit,
 .form_user_subscribe input.submit,
 .form_user_unsubscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a {
 background-color:#AAAAAA;
 color:#FFFFFF;
@@ -292,18 +306,20 @@ background-position:5px -1246px;
 }
 .form_group_join input.submit,
 .form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
 .entity_subscribe a {
 background-position:5px -1181px;
 }
 
 .entity_edit a {
-background-position: 5px -718px;
+background-position: 5px -719px;
 }
 .entity_send-a-message a {
 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);
@@ -337,6 +353,28 @@ background-position: 5px -1511px;
 .form_reset_key input.submit {
 background-position: 5px -1973px;
 }
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
+#realtime_play {
+background-position: 0 -2308px;
+}
+#realtime_pause {
+background-position: 0 -2374px;
+}
+#realtime_popup {
+background-position: 0 -1714px;
+}
 
 /* NOTICES */
 .notice .attachment {
index b72f7aff5b114e134e3fb1b510d1c47baf76306f..66bb5f67871596723fcd928c80ed5ebc18899a32 100644 (file)
Binary files a/theme/identica/mobilelogo.png and b/theme/identica/mobilelogo.png differ
diff --git a/theme/otalk/css/base.css b/theme/otalk/css/base.css
deleted file mode 100644 (file)
index 8af86f9..0000000
+++ /dev/null
@@ -1,1211 +0,0 @@
-/** theme: otalk base
- *
- * @package   StatusNet
- * @author Sarven Capadisli <csarven@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://status.net/
- */
-
-* { margin:0; padding:0; }
-img { display:block; border:0; }
-a abbr { cursor: pointer; border-bottom:0; }
-table { border-collapse:collapse; }
-ol { list-style-position:inside; }
-html { font-size: 87.5%; background-color:#fff; }
-body {
-background-color:#fff;
-color:#000;
-font-family:sans-serif;
-font-size:1em;
-line-height:1.65;
-position:relative;
-}
-h1,h2,h3,h4,h5,h6 {
-margin-bottom:7px;
-overflow:hidden;
-}
-h1 {
-font-size:1.4em;
-margin-bottom:18px;
-}
-#showstream h1 { display:none; }
-h2 { font-size:1.3em; }
-h3 { font-size:1.2em; }
-h4 { font-size:1.1em; }
-h5 { font-size:1em; }
-h6 { font-size:0.9em; }
-
-caption {
-font-weight:bold;
-}
-legend {
-font-weight:bold;
-font-size:1.3em;
-}
-input, textarea, select, option {
-padding:4px;
-font-family:sans-serif;
-font-size:1em;
-}
-input, textarea, select {
-border-width:2px;
-border-style: solid;
-border-radius:4px;
--moz-border-radius:4px;
--webkit-border-radius:4px;
-}
-
-input.submit {
-font-weight:bold;
-cursor:pointer;
-}
-textarea {
-overflow:auto;
-}
-option {
-padding-bottom:0;
-}
-fieldset {
-padding:0;
-border:0;
-}
-form ul li {
-list-style-type:none;
-margin:0 0 18px 0;
-}
-form label {
-font-weight:bold;
-}
-input.checkbox {
-position:relative;
-top:2px;
-left:0;
-border:0;
-}
-
-.error,
-.success {
-padding:4px 7px;
-border-radius:4px;
--moz-border-radius:4px;
--webkit-border-radius:4px;
-margin-bottom:18px;
-}
-form label.submit {
-display:none;
-}
-
-.form_settings {
-clear:both;
-}
-
-.form_settings fieldset {
-margin-bottom:29px;
-}
-.form_settings input.remove {
-margin-left:11px;
-}
-.form_settings .form_data li {
-width:100%;
-float:left;
-}
-.form_settings .form_data label {
-float:left;
-}
-.form_settings .form_data textarea,
-.form_settings .form_data select,
-.form_settings .form_data input {
-margin-left:11px;
-float:left;
-}
-.form_settings .form_data input.submit {
-margin-left:0;
-}
-
-.form_settings label {
-margin-top:2px;
-width:152px;
-}
-
-.form_actions label {
-display:none;
-}
-.form_guide {
-font-style:italic;
-}
-
-.form_settings #settings_autosubscribe label {
-display:inline;
-font-weight:bold;
-}
-
-#form_settings_profile legend,
-#form_login legend,
-#form_register legend,
-#form_password legend,
-#form_settings_avatar legend,
-#newgroup legend,
-#editgroup legend,
-#form_tag_user legend,
-#form_remote_subscribe legend,
-#form_openid_login legend,
-#form_search legend,
-#form_invite legend,
-#form_notice_delete legend,
-#form_password_recover legend,
-#form_password_change legend {
-display:none;
-}
-
-.form_settings .form_data p.form_guide {
-clear:both;
-margin-left:163px;
-margin-bottom:0;
-}
-
-.form_settings p {
-margin-bottom:11px;
-}
-
-.form_settings input.checkbox {
-margin-top:3px;
-margin-left:0;
-}
-.form_settings label.checkbox {
-font-weight:normal;
-margin-top:0;
-margin-right:0;
-margin-left:11px;
-float:left;
-width:90%;
-}
-
-
-#form_login p.form_guide,
-#form_register #settings_rememberme p.form_guide,
-#form_openid_login #settings_rememberme p.form_guide,
-#settings_twitter_remove p.form_guide,
-#form_search ul.form_data #q {
-margin-left:0;
-}
-
-.form_settings .form_note {
-border-radius:4px;
--moz-border-radius:4px;
--webkit-border-radius:4px;
-padding:0 7px;
-}
-
-
-.form_settings input.form_action-primary {
-padding:0;
-}
-.form_settings input.form_action-secondary {
-margin-left:29px;
-}
-
-#form_search .submit {
-margin-left:11px;
-}
-
-address {
-float:left;
-margin-bottom:18px;
-margin-left:18px;
-}
-address.vcard img.logo {
-margin-right:0;
-}
-address .fn {
-font-weight:bold;
-}
-address img + .fn {
-display:none;
-}
-
-#header {
-width:100%;
-position:relative;
-float:left;
-padding-top:18px;
-margin-bottom:29px;
-}
-
-#site_nav_global_primary {
-float:right;
-margin-right:18px;
-margin-bottom:11px;
-margin-left:18px;
-}
-#site_nav_global_primary ul li {
-display:inline;
-margin-left:11px;
-}
-
-.system_notice dt {
-font-weight:bold;
-text-transform:uppercase;
-display:none;
-}
-
-#site_notice {
-position:absolute;
-top:65px;
-right:18px;
-width:250px;
-width:24%;
-}
-#page_notice {
-clear:both;
-margin-bottom:18px;
-}
-
-
-#anon_notice {
-float:left;
-width:43.2%;
-padding:1.1%;
-border-radius:7px;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-border-width:2px;
-border-style:solid;
-line-height:1.5;
-font-size:1.1em;
-font-weight:bold;
-}
-
-
-#footer {
-float:left;
-width:64%;
-padding:18px;
-}
-
-#site_nav_local_views {
-float:left;
-}
-#site_nav_local_views dt {
-display:none;
-}
-#site_nav_local_views li {
-float:left;
-margin-right:18px;
-list-style-type:none;
-}
-#site_nav_local_views a {
-float:left;
-text-decoration:none;
-padding:4px 11px;
--moz-border-radius-topleft:4px;
--moz-border-radius-topright:4px;
--webkit-border-top-left-radius:4px;
--webkit-border-top-right-radius:4px;
-border-width:0;
-border-style:solid;
-border-bottom:0;
-text-shadow: 2px 2px 2px #ddd;
-font-weight:bold;
-}
-#site_nav_local_views .nav {
-float:left;
-width:100%;
-border-bottom-width:1px;
-border-bottom-style:solid;
-}
-
-#site_nav_global_primary dt,
-#site_nav_global_secondary dt {
-display:none;
-}
-
-#site_nav_global_secondary {
-margin-bottom:11px;
-}
-
-#site_nav_global_secondary ul li {
-display:inline;
-margin-right:11px;
-}
-#export_data li a {
-padding-left:20px;
-}
-#export_data li a.foaf {
-padding-left:30px;
-}
-#export_data li a.export_vcard {
-padding-left:28px;
-}
-
-#export_data ul {
-display:inline;
-}
-#export_data li {
-list-style-type:none;
-display:inline;
-margin-left:11px;
-}
-#export_data li:first-child {
-margin-left:0;
-}
-
-#licenses {
-font-size:0.9em;
-}
-
-#licenses dt {
-font-weight:bold;
-display:none;
-}
-#licenses dd {
-margin-bottom:11px;
-line-height:1.5;
-}
-
-#site_content_license_cc {
-margin-bottom:0;
-}
-#site_content_license_cc img {
-display:inline;
-vertical-align:top;
-margin-right:4px;
-}
-
-#wrap {
-margin:0 auto;
-width:100%;
-min-width:760px;
-max-width:1003px;
-overflow:hidden;
-}
-
-#core {
-position:relative;
-width:100%;
-float:left;
-margin-bottom:1em;
-}
-
-#content {
-width:67.9%;
-min-height:259px;
-padding-top:1.795%;
-padding-bottom:1.795%;
-float:left;
-clear:left;
-border-radius:7px;
--moz-border-radius:7px;
--moz-border-radius-topleft:0;
--webkit-border-radius:7px;
--webkit-border-top-left-radius:0;
-border-style:solid;
-border-width:0;
-margin-bottom:18px;
-}
-
-#content_inner {
-position:relative;
-width:100%;
-float:left;
-}
-
-#aside_primary {
-width:27.917%;
-min-height:259px;
-float:left;
-padding:1.795%;
-margin-left:0.385%;
-border-radius:7px;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-border-width:1px;
-border-style:solid;
-}
-
-#form_notice {
-width:45.664%;
-float:left;
-position:relative;
-line-height:1;
-}
-#form_notice fieldset {
-border:0;
-padding:0;
-}
-#form_notice legend {
-display:none;
-}
-#form_notice textarea {
-float:left;
-border-radius:7px;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-width:80.789%;
-height:67px;
-line-height:1.5;
-padding:7px 7px 16px 7px;
-}
-#form_notice label {
-display:block;
-float:left;
-font-size:1.3em;
-margin-bottom:7px;
-}
-#form_notice #notice_submit label {
-display:none;
-}
-#form_notice .form_note {
-position:absolute;
-top:99px;
-right:98px;
-z-index:9;
-}
-#form_notice .form_note dt {
-font-weight:bold;
-display:none;
-}
-#notice_text-count {
-font-weight:bold;
-line-height:1.15;
-padding:1px 2px;
-}
-#form_notice #notice_action-submit {
-width:14%;
-height:47px;
-padding:0;
-position:absolute;
-bottom:0;
-right:0;
-}
-#form_notice label[for=to] {
-margin-top:7px;
-}
-#form_notice select[id=to] {
-margin-bottom:7px;
-margin-left:18px;
-float:left;
-}
-
-
-/* entity_profile */
-.entity_profile {
-position:relative;
-width:521px;
-min-height:123px;
-float:left;
-margin-bottom:18px;
-margin-left:0;
-overflow:hidden;
-}
-.entity_profile dt,
-#entity_statistics dt {
-font-weight:bold;
-}
-.entity_profile dd {
-display:inline;
-}
-
-.entity_profile .entity_depiction {
-float:left;
-width:96px;
-margin-right:18px;
-margin-bottom:18px;
-}
-
-.entity_profile .entity_fn,
-.entity_profile .entity_nickname,
-.entity_profile .entity_location,
-.entity_profile .entity_url,
-.entity_profile .entity_note,
-.entity_profile .entity_tags {
-margin-left:113px;
-margin-bottom:4px;
-}
-
-.entity_profile .entity_fn,
-.entity_profile .entity_nickname {
-margin-left:11px;
-display:inline;
-font-weight:bold;
-}
-.entity_profile .entity_nickname {
-margin-left:0;
-}
-
-.entity_profile .entity_fn dd:before {
-content: "(";
-font-weight:normal;
-}
-.entity_profile .entity_fn dd:after {
-content: ")";
-font-weight:normal;
-}
-
-.entity_profile dt {
-display:none;
-}
-.entity_profile h2 {
-display:none;
-}
-/* entity_profile */
-
-
-/*entity_actions*/
-.entity_actions {
-float:left;
-margin-left:4.35%;
-max-width:25%;
-}
-.entity_actions h2 {
-display:none;
-}
-.entity_actions ul {
-list-style-type:none;
-}
-.entity_actions li {
-margin-bottom:4px;
-}
-.entity_actions li:first-child {
-border-top:0;
-}
-.entity_actions fieldset {
-border:0;
-padding:0;
-}
-.entity_actions legend {
-display:none;
-}
-
-.entity_actions input.submit {
-display:block;
-text-align:left;
-width:100%;
-}
-.entity_actions a,
-.entity_nudge p,
-.entity_remote_subscribe {
-text-decoration:none;
-font-weight:bold;
-display:block;
-}
-
-.form_user_block input.submit,
-.form_user_unblock input.submit,
-.entity_send-a-message a,
-.entity_edit a,
-.form_user_nudge input.submit,
-.entity_nudge p {
-border:0;
-padding-left:20px;
-}
-
-.entity_edit a,
-.entity_send-a-message a,
-.entity_nudge p {
-padding:4px 4px 4px 23px;
-}
-
-.entity_remote_subscribe {
-padding:4px;
-border-width:2px;
-border-style:solid;
-border-radius:4px;
--moz-border-radius:4px;
--webkit-border-radius:4px;
-}
-.entity_actions .accept {
-margin-bottom:18px;
-}
-
-.entity_tags ul {
-list-style-type:none;
-display:inline;
-}
-.entity_tags li {
-display:inline;
-margin-right:4px;
-}
-
-.aside .section {
-margin-bottom:29px;
-clear:both;
-float:left;
-width:100%;
-}
-.aside .section h2 {
-text-transform:uppercase;
-font-size:1em;
-}
-
-#entity_statistics dt,
-#entity_statistics dd {
-display:inline;
-}
-#entity_statistics dt:after {
-content: ":";
-}
-
-.section ul.entities {
-float:left;
-width:100%;
-}
-.section .entities li {
-list-style-type:none;
-float:left;
-margin-right:7px;
-margin-bottom:7px;
-}
-.section .entities li .photo {
-margin-right:0;
-margin-bottom:0;
-}
-.section .entities li .fn {
-display:none;
-}
-
-.aside .section p,
-.aside .section .more {
-clear:both;
-}
-
-.profile .entity_profile {
-margin-bottom:0;
-min-height:60px;
-}
-
-
-.profile .form_group_join legend,
-.profile .form_group_leave legend,
-.profile .form_user_subscribe legend,
-.profile .form_user_unsubscribe legend {
-display:none;
-}
-
-.profiles {
-list-style-type:none;
-}
-.profile .entity_profile .entity_location {
-width:auto;
-clear:none;
-margin-left:11px;
-}
-.profile .entity_profile dl,
-.profile .entity_profile dd {
-display:inline;
-float:none;
-}
-.profile .entity_profile .entity_note,
-.profile .entity_profile .entity_url,
-.profile .entity_profile .entity_tags,
-.profile .entity_profile .form_subscription_edit {
-margin-left:59px;
-clear:none;
-display:block;
-width:auto;
-}
-.profile .entity_profile .entity_tags dt {
-display:inline;
-margin-right:11px;
-}
-
-
-.profile .entity_profile .form_subscription_edit label {
-font-weight:normal;
-margin-right:11px;
-}
-
-
-/* NOTICE */
-.notice,
-.profile {
-position:relative;
-clear:both;
-float:left;
-width:100%;
-border-width:0;
-border-style:solid;
-margin-bottom:29px;
-}
-.notices li {
-list-style-type:none;
-}
-
-#content .notice {
-width:37%;
-margin-left:17px;
-margin-bottom:47px;
-clear:none;
-overflow:hidden;
-padding: 0 0 0 65px;
-min-height:235px;
-}
-
-#aside_primary .notice {
-margin-bottom:18px;
-}
-
-#shownotice #content .notice {
-width:96%;
-}
-
-
-/* NOTICES */
-#notices_primary {
-float:left;
-width:100%;
-border-radius:7px;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-}
-#notices_primary h2 {
-display:none;
-}
-.notice-data a span {
-display:block;
-padding-left:28px;
-}
-
-.notice .author {
-margin-right:11px;
-}
-
-#content .notice .author {
-/*overflow:hidden;*/
-}
-
-.fn {
-overflow:hidden;
-}
-
-.notice .author .fn {
-font-weight:bold;
-}
-
-.notice .author .photo {
-margin-bottom:0;
-}
-
-#content .notice .author .photo {
-margin-left:-83px;
-padding-right:17px;
-}
-
-
-.vcard .photo {
-display:inline;
-margin-right:11px;
-margin-bottom:11px;
-float:left;
-}
-.vcard .url {
-text-decoration:none;
-}
-.vcard .url:hover {
-text-decoration:underline;
-}
-
-.notice .entry-title {
-float:left;
-width:100%;
-overflow:hidden;
-}
-#content .notice .entry-title {
-overflow:visible;
-margin-bottom:11px;
-padding:18px;
-width:85%;
-border-radius:7px;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-min-height:161px;
-}
-
-#shownotice .notice .entry-title {
-font-size:2.2em;
-}
-
-.notice p.entry-content {
-display:inline;
-}
-
-#content .notice p.entry-content
-overflow:hidden;
-}
-
-.notice p.entry-content .vcard a {
-border-radius:4px;
--moz-border-radius:4px;
--webkit-border-radius:4px;
-}
-
-.notice div.entry-content {
-clear:left;
-float:left;
-font-size:0.95em;
-}
-#showstream .notice div.entry-content {
-margin-left:0;
-}
-
-.notice .notice-options a,
-.notice .notice-options input {
-float:left;
-font-size:1.025em;
-}
-
-.notice div.entry-content dl,
-.notice div.entry-content dt,
-.notice div.entry-content dd {
-display:inline;
-}
-
-.notice div.entry-content .timestamp dt,
-.notice div.entry-content .response dt {
-display:none;
-}
-.notice div.entry-content .timestamp a {
-display:inline-block;
-}
-.notice div.entry-content .device dt {
-text-transform:lowercase;
-}
-
-
-
-.notice-data {
-position:absolute;
-top:18px;
-right:0;
-min-height:50px;
-margin-bottom:4px;
-}
-.notice .entry-content .notice-data dt {
-display:none;
-}
-
-.notice-data a {
-display:block;
-outline:none;
-}
-
-.notice-options {
-position:absolute;
-top:120px;
-left:30px;
-font-size:0.95em;
-}
-
-.notice-options a {
-float:left;
-}
-.notice-options .notice_delete,
-.notice-options .notice_reply,
-.notice-options .form_favor,
-.notice-options .form_disfavor {
-position:absolute;
-left:0;
-}
-.notice-options .form_favor,
-.notice-options .form_disfavor {
-top:0;
-}
-.notice-options .notice_reply {
-top:29px;
-}
-.notice-options .notice_delete {
-top:58px;
-}
-.notice-options .notice_reply dt {
-display:none;
-}
-
-.notice-options input,
-.notice-options a {
-text-indent:-9999px;
-outline:none;
-}
-
-.notice-options .notice_reply a,
-.notice-options input.submit {
-display:block;
-border:0;
-}
-.notice-options .notice_reply a,
-.notice-options .notice_delete a {
-text-decoration:none;
-padding-left:16px;
-}
-
-.notice-options form input.submit {
-width:16px;
-padding:2px 0;
-}
-
-.notice-options .notice_delete dt,
-.notice-options .form_favor legend,
-.notice-options .form_disfavor legend {
-display:none;
-}
-.notice-options .notice_delete fieldset,
-.notice-options .form_favor fieldset,
-.notice-options .form_disfavor fieldset {
-border:0;
-padding:0;
-}
-
-
-#usergroups #new_group {
-float: left;
-margin-right: 2em;
-}
-#new_group, #group_search {
-margin-bottom:18px;
-}
-#new_group a {
-padding-left:20px;
-}
-
-
-#filter_tags {
-margin-bottom:11px;
-float:left;
-}
-#filter_tags dt {
-display:none;
-}
-#filter_tags ul {
-list-style-type:none;
-}
-#filter_tags ul li {
-float:left;
-margin-left:7px;
-padding-left:7px;
-border-left-width:1px;
-border-left-style:solid;
-}
-#filter_tags ul li.child_1 {
-margin-left:0;
-border-left:0;
-padding-left:0;
-}
-#filter_tags ul li#filter_tags_all a {
-font-weight:bold;
-margin-top:7px;
-float:left;
-}
-
-#filter_tags ul li#filter_tags_item label {
-margin-right:7px;
-}
-#filter_tags ul li#filter_tags_item label,
-#filter_tags ul li#filter_tags_item select {
-display:inline;
-}
-#filter_tags ul li#filter_tags_item p {
-float:left;
-margin-left:38px;
-}
-#filter_tags ul li#filter_tags_item input {
-position:relative;
-top:3px;
-left:3px;
-}
-
-
-
-.pagination {
-float:left;
-clear:both;
-width:100%;
-margin-top:18px;
-}
-
-.pagination dt {
-font-weight:bold;
-display:none;
-}
-
-.pagination .nav {
-float:left;
-width:100%;
-list-style-type:none;
-}
-
-.pagination .nav_prev {
-float:left;
-}
-.pagination .nav_next {
-float:right;
-}
-
-.pagination a {
-display:block;
-text-decoration:none;
-font-weight:bold;
-padding:7px;
-border-width:1px;
-border-style:solid;
--moz-border-radius:7px;
--webkit-border-radius:7px;
-border-radius:7px;
-}
-
-.pagination .nav_prev a {
-padding-left:30px;
-}
-.pagination .nav_next a {
-padding-right:30px;
-}
-/* END: NOTICE */
-
-
-.hentry .entry-content p {
-margin-bottom:18px;
-}
-.hentry entry-content ol,
-.hentry .entry-content ul {
-list-style-position:inside;
-}
-.hentry .entry-content li {
-margin-bottom:18px;
-}
-.hentry .entry-content li li {
-margin-left:18px;
-}
-
-
-
-
-/* TOP_POSTERS */
-.section tbody td {
-padding-right:11px;
-padding-bottom:11px;
-}
-.section .vcard .photo {
-margin-right:7px;
-margin-bottom:0;
-}
-
-.section .notice {
-padding-top:7px;
-padding-bottom:7px;
-border-top:0;
-}
-
-.section .notice:first-child {
-padding-top:0;
-}
-
-.section .notice .author {
-margin-right:0;
-}
-.section .notice .author .fn {
-display:none;
-}
-
-
-/* tagcloud */
-.tag-cloud {
-list-style-type:none;
-text-align:center;
-}
-.aside .tag-cloud {
-font-size:0.8em;
-}
-.tag-cloud li {
-display:inline;
-margin-right:7px;
-line-height:1.25;
-}
-.aside .tag-cloud li {
-line-height:1.5;
-}
-.tag-cloud li a {
-text-decoration:none;
-}
-#tagcloud.section dt {
-text-transform:uppercase;
-font-weight:bold;
-}
-.tag-cloud-1 {
-font-size:1em;
-}
-.tag-cloud-2 {
-font-size:1.25em;
-}
-.tag-cloud-3 {
-font-size:1.75em;
-}
-.tag-cloud-4 {
-font-size:2em;
-}
-.tag-cloud-5 {
-font-size:2.25em;
-}
-.tag-cloud-6 {
-font-size:2.75em;
-}
-.tag-cloud-7 {
-font-size:3.25em;
-}
-
-#publictagcloud #tagcloud.section dt {
-display:none;
-}
-
-#form_settings_photo .form_data {
-clear:both;
-}
-
-#form_settings_avatar li {
-width:auto;
-}
-#form_settings_avatar input {
-margin-left:0;
-}
-#avatar_original,
-#avatar_preview {
-float:left;
-}
-#avatar_preview {
-margin-left:29px;
-}
-#avatar_preview_view {
-height:96px;
-width:96px;
-margin-bottom:18px;
-overflow:hidden;
-}
-
-#settings_attach,
-#form_settings_avatar .form_actions {
-clear:both;
-}
-
-#form_settings_avatar .form_actions {
-margin-bottom:0;
-}
-
-#form_settings_design #settings_design_color .form_data,
-#form_settings_design #color-picker {
-float:left;
-}
-#form_settings_design #settings_design_color .form_data {
-width:400px;
-margin-right:28px;
-}
-
-.instructions ul {
-list-style-position:inside;
-}
-.instructions p,
-.instructions ul {
-margin-bottom:18px;
-}
-.help dt {
-display:none;
-}
-.guide {
-clear:both;
-}
diff --git a/theme/otalk/css/display.css b/theme/otalk/css/display.css
deleted file mode 100644 (file)
index bdfaea7..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/** theme: otalk
- *
- * @package   StatusNet
- * @author Sarven Capadisli <csarven@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://status.net/
- */
-
-@import url(base.css);
-
-html {
-}
-
-html,
-body,
-a:active {
-}
-body {
-font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
-font-size:1em;
-background:#ddd url(../images/illustrations/illu_pattern-01.png) repeat 0 0;
-background-color:rgba(127, 127, 127, 0.1);
-}
-address {
-margin-right:7.18%;
-}
-
-input, textarea, select, option {
-font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
-}
-input, textarea, select,
-.entity_remote_subscribe {
-border-color:#aaa;
-}
-#filter_tags ul li {
-border-color:#ddd;
-}
-
-.form_settings input.form_action-primary {
-background:none;
-}
-
-input.submit,
-#form_notice.warning #notice_text-count,
-.form_settings .form_note,
-.entity_remote_subscribe {
-background-color:#9BB43E;
-}
-
-input:focus, textarea:focus, select:focus,
-#form_notice.warning #notice_data-text {
-border-color:#9BB43E;
-}
-input.submit,
-.entity_remote_subscribe {
-color:#fff;
-}
-
-a,
-div.notice-options input,
-.form_user_block input.submit,
-.form_user_unblock input.submit,
-.entity_send-a-message a,
-.form_user_nudge input.submit,
-.entity_nudge p,
-.form_settings input.form_action-primary {
-color:#8F0000;
-}
-
-.notice,
-.profile {
-border-color:#CEE1E9;
-}
-#content .notice .entry-title,
-input, textarea, select, option,
-.pagination .nav_prev a,
-.pagination .nav_next a {
-background-color:rgba(255,255,255,0.8);
-}
-
-#content .notices li.hover .entry-title {
-background-color:rgba(255,255,255,0.9);
-}
-
-#content .notice:nth-child(1) .entry-title {
-background-color:rgba(255,255,255,0.95);
-}
-#content .notice:nth-child(2) .entry-title {
-background-color:rgba(255,255,255,0.9);
-}
-#content .notice:nth-child(3) .entry-title {
-background-color:rgba(255,255,255,0.8);
-}
-#content .notice:nth-child(4) .entry-title {
-background-color:rgba(255,255,255,0.7);
-}
-#content .notice:nth-child(5) .entry-title {
-background-color:rgba(255,255,255,0.6);
-}
-#content .notice:nth-child(6) .entry-title {
-background-color:rgba(255,255,255,0.5);
-}
-#content .notice:nth-child(7) .entry-title {
-background-color:rgba(255,255,255,0.4);
-}
-#content .notice:nth-child(8) .entry-title {
-background-color:rgba(255,255,255,0.3);
-}
-#content .notice:nth-child(9) .entry-title {
-background-color:rgba(255,255,255,0.2);
-}
-#content .notice:nth-child(10) {
-background-color:rgba(255,255,255,0.1);
-}
-
-
-#content .notice .author .photo {
-background:url(../images/illustrations/illu_arrow-left-01.gif) no-repeat 100% 0;
-}
-
-.section .profile {
-border-top-color:#87B4C8;
-}
-
-#aside_primary {
-background-color:rgba(206, 225, 233,0.5);
-}
-
-#notice_text-count {
-color:#333;
-}
-#form_notice.warning #notice_text-count {
-color:#000;
-}
-#form_notice.processing #notice_action-submit {
-background:#fff url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
-cursor:wait;
-text-indent:-9999px;
-}
-
-#content,
-#site_nav_local_views .nav,
-#site_nav_local_views a,
-#aside_primary {
-border-color:#fff;
-}
-#content,
-#site_nav_local_views .current a {
-background-color:transparent;
-/*background-color:red;*/
-}
-
-#site_nav_local_views .current a {
-background-color:transparent;
-}
-
-#site_nav_local_views a {
-background-color:rgba(127, 127, 127, 0.2);
-}
-#site_nav_local_views a:hover {
-background-color:rgba(255, 255, 255, 0.8);
-}
-
-.error {
-background-color:#F7E8E8;
-}
-.success {
-background-color:#EFF3DC;
-}
-
-#anon_notice {
-background-color:rgba(206, 225, 233, 0.7);
-color:#fff;
-border-color:#fff;
-}
-
-#showstream #anon_notice {
-background-color:rgba(155, 180, 62, 0.7);
-}
-
-#export_data li a {
-background-repeat:no-repeat;
-background-position:0 45%;
-}
-#export_data li a.rss {
-background-image:url(../../base/images/icons/icon_rss.png);
-}
-#export_data li a.atom {
-background-image:url(../../base/images/icons/icon_atom.png);
-}
-#export_data li a.foaf {
-background-image:url(../../base/images/icons/icon_foaf.gif);
-}
-
-.entity_edit a,
-.entity_send-a-message a,
-.form_user_nudge input.submit,
-.form_user_block input.submit,
-.form_user_unblock input.submit,
-.entity_nudge p {
-background-position: 0 40%;
-background-repeat: no-repeat;
-background-color:transparent;
-}
-.form_group_join input.submit,
-.form_group_leave input.submit
-.form_user_subscribe input.submit,
-.form_user_unsubscribe input.submit {
-background-color:#9BB43E;
-color:#fff;
-}
-.form_user_unsubscribe input.submit,
-.form_group_leave input.submit,
-.form_user_authorization input.reject {
-background-color:#87B4C8;
-}
-
-.entity_edit a {
-background-image:url(../../base/images/icons/twotone/green/edit.gif);
-}
-.entity_send-a-message a {
-background-image:url(../../base/images/icons/twotone/green/quote.gif);
-}
-.entity_nudge p,
-.form_user_nudge input.submit {
-background-image:url(../../base/images/icons/twotone/green/mail.gif);
-}
-.form_user_block input.submit,
-.form_user_unblock input.submit {
-background-image:url(../../base/images/icons/twotone/green/shield.gif);
-}
-
-/* NOTICES */
-.notices li.over {
-background-color:#fcfcfc;
-}
-
-.notice-options .notice_reply a,
-.notice-options form input.submit {
-background-color:transparent;
-}
-.notice-options .notice_reply a {
-background:transparent url(../../base/images/icons/twotone/green/reply.gif) no-repeat 0 45%;
-}
-.notice-options form.form_favor input.submit {
-background:transparent url(../../base/images/icons/twotone/green/favourite.gif) no-repeat 0 45%;
-}
-.notice-options form.form_disfavor input.submit {
-background:transparent url(../../base/images/icons/twotone/green/disfavourite.gif) no-repeat 0 45%;
-}
-.notice-options .notice_delete a {
-background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-repeat 0 45%;
-}
-
-.notices div.entry-content,
-.notices div.notice-options {
-opacity:0.4;
-}
-.notices li.hover div.entry-content,
-.notices li.hover div.notice-options {
-opacity:1;
-}
-div.entry-content {
-color:#333;
-}
-div.notice-options a,
-div.notice-options input {
-font-family:sans-serif;
-}
-.notices li.hover {
-/*background-color:#fcfcfc;*/
-}
-/*END: NOTICES */
-
-#new_group a {
-background:transparent url(../../base/images/icons/twotone/green/news.gif) no-repeat 0 45%;
-}
-
-.pagination .nav_prev a,
-.pagination .nav_next a {
-background-repeat:no-repeat;
-border-color:#CEE1E9;
-}
-.pagination .nav_prev a {
-background-image:url(../../base/images/icons/twotone/green/arrow-left.gif);
-background-position:10% 45%;
-}
-.pagination .nav_next a {
-background-image:url(../../base/images/icons/twotone/green/arrow-right.gif);
-background-position:90% 45%;
-}
diff --git a/theme/otalk/css/ie.css b/theme/otalk/css/ie.css
deleted file mode 100644 (file)
index 2f463bb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/* IE specific styles */
-
-.notice-options input.submit {
-color:#fff;
-}
-
-#site_nav_local_views a {
-background-color:#D0DFE7;
-}
diff --git a/theme/otalk/default-avatar-mini.png b/theme/otalk/default-avatar-mini.png
deleted file mode 100644 (file)
index 38b8692..0000000
Binary files a/theme/otalk/default-avatar-mini.png and /dev/null differ
diff --git a/theme/otalk/default-avatar-profile.png b/theme/otalk/default-avatar-profile.png
deleted file mode 100644 (file)
index f8357d4..0000000
Binary files a/theme/otalk/default-avatar-profile.png and /dev/null differ
diff --git a/theme/otalk/default-avatar-stream.png b/theme/otalk/default-avatar-stream.png
deleted file mode 100644 (file)
index 6b63baa..0000000
Binary files a/theme/otalk/default-avatar-stream.png and /dev/null differ
diff --git a/theme/otalk/images/illustrations/illu_arrow-left-01.gif b/theme/otalk/images/illustrations/illu_arrow-left-01.gif
deleted file mode 100644 (file)
index 1977759..0000000
Binary files a/theme/otalk/images/illustrations/illu_arrow-left-01.gif and /dev/null differ
diff --git a/theme/otalk/images/illustrations/illu_pattern-01.png b/theme/otalk/images/illustrations/illu_pattern-01.png
deleted file mode 100644 (file)
index 5a72eaf..0000000
Binary files a/theme/otalk/images/illustrations/illu_pattern-01.png and /dev/null differ
diff --git a/theme/otalk/logo.png b/theme/otalk/logo.png
deleted file mode 100644 (file)
index fdead6c..0000000
Binary files a/theme/otalk/logo.png and /dev/null differ
index 4b30710fb636b86163a998e8d1692860cdc27068..2814260bd3c9990fb002a3900c635f8e091f85e8 100644 (file)
@@ -232,6 +232,17 @@ font-weight:bold;
 address img + .fn {
 display:none;
 }
+address a {
+text-decoration:none;
+}
+address .poweredby {
+float:left;
+clear:left;
+display:block;
+position:relative;
+top:7px;
+margin-right:-47px;
+}
 
 #header {
 width:98.5%;
@@ -486,13 +497,59 @@ margin-bottom:7px;
 margin-left:18px;
 float:left;
 }
-#form_notice .error {
+.form_notice .error,
+.form_notice .success {
 float:left;
 clear:both;
-width:96.9%;
+width:81.5%;
 margin-bottom:0;
 line-height:1.618;
 }
+.form_notice #notice_data-attach_selected code {
+float:left;
+width:80%;
+display:block;
+overflow:auto;
+margin-right:2.5%;
+font-size:1.1em;
+}
+.form_notice #notice_data-attach_selected button.close {
+float:right;
+font-size:0.8em;
+}
+
+.form_notice #notice_data-geo_wrap label,
+.form_notice #notice_data-geo_wrap input {
+position:absolute;
+top:25px;
+right:4px;
+left:auto;
+cursor:pointer;
+width:16px;
+height:16px;
+display:block;
+}
+.form_notice #notice_data-geo_wrap input {
+visibility:hidden;
+}
+.form_notice #notice_data-geo_wrap label {
+font-weight:normal;
+font-size:1em;
+margin-bottom:0;
+text-indent:-9999px;
+}
+
+button.close,
+button.minimize {
+width:16px;
+height:16px;
+text-indent:-9999px;
+padding:0;
+border:0;
+text-align:center;
+font-weight:bold;
+cursor:pointer;
+}
 
 /* entity_profile */
 .entity_profile {
@@ -850,6 +907,67 @@ font-size:1.025em;
 .notice div.entry-content .timestamp {
 display:inline-block;
 }
+.entry-content .repeat {
+display:block;
+}
+.entry-content .repeat .photo {
+float:none;
+margin-right:1px;
+position:relative;
+top:4px;
+left:0;
+}
+
+.dialogbox {
+position:absolute;
+top:-1px;
+right:-1px;
+z-index:9;
+float:none;
+padding:11px;
+border-radius:7px;
+-moz-border-radius:7px;
+-webkit-border-radius:7px;
+border-style:solid;
+border-width:1px;
+}
+
+.dialogbox legend {
+display:block !important;
+margin-right:18px;
+margin-bottom:18px;
+}
+
+.dialogbox button.close {
+position:absolute;
+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,
+.dialogbox.processing .submit_dialogbox {
+cursor:wait;
+outline:none;
+text-indent:-9999px;
+}
 
 .notice-options {
 position:relative;
index 2b917418252bb34cfc02835648732ea7bbe25186..dfeb01b48a952c12771a798444ada6c970a348e6 100644 (file)
@@ -60,6 +60,36 @@ input.submit,
 color:#FFFFFF;
 }
 
+.dialogbox .submit_dialogbox,
+input.submit,
+.form_notice input.submit {
+background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x;
+text-shadow:0 1px 0 #FFFFFF;
+color:#000000;
+border-color:#AAAAAA;
+border-top-color:#CCCCCC;
+border-left-color:#CCCCCC;
+}
+.dialogbox .submit_dialogbox:hover,
+input.submit:hover {
+background-position:0 -5px;
+}
+.dialogbox .submit_dialogbox:focus,
+input.submit:focus {
+background-position:0 -15px;
+box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
+-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
+-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
+text-shadow:none;
+}
+
+.form_notice label[for=notice_data-geo] {
+background-position:0 -1780px;
+}
+.form_notice label[for=notice_data-geo].checked {
+background-position:0 -1846px;
+}
+
 a,
 div.notice-options input,
 .form_user_block input.submit,
@@ -158,16 +188,69 @@ color:#333333;
 color:#000000;
 }
 #form_notice label[for=notice_data-attach] {
-background:transparent url(../../base/images/icons/twotone/green/clip-01.gif) no-repeat 0 45%;
+background-position:0 -328px;
 }
 #form_notice #notice_data-attach {
 opacity:0;
 }
 
-#form_notice.processing #notice_action-submit {
+.form_notice label[for=notice_data-attach],
+#export_data li a.rss,
+#export_data li a.atom,
+#export_data li a.foaf,
+.entity_edit a,
+.entity_send-a-message a,
+.entity_nudge p,
+.form_user_nudge input.submit,
+.form_user_block input.submit,
+.form_user_unblock input.submit,
+.form_group_block input.submit,
+.form_group_unblock input.submit,
+.form_make_admin input.submit,
+.notice .attachment,
+.notice-options .notice_reply,
+.notice-options form.form_favor input.submit,
+.notice-options form.form_disfavor input.submit,
+.notice-options .notice_delete,
+.notice-options form.form_repeat input.submit,
+#new_group a,
+.pagination .nav_prev a,
+.pagination .nav_next a,
+button.close,
+.form_group_leave input.submit,
+.form_user_unsubscribe input.submit,
+.form_group_join input.submit,
+.form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
+.entity_subscribe a,
+.entity_moderation p,
+.entity_sandbox input.submit,
+.entity_silence input.submit,
+.entity_delete input.submit,
+.notice-options .repeated,
+.form_notice label[for=notice_data-geo],
+button.minimize,
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit,
+#realtime_play,
+#realtime_pause,
+#realtime_popup {
+background-image:url(../../base/images/icons/icons-01.gif);
+background-repeat:no-repeat;
+background-color:transparent;
+}
+
+
+#wrap form.processing input.submit,
+.entity_actions a.processing,
+.dialogbox.processing .submit_dialogbox {
 background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
-cursor:wait;
-text-indent:-9999px;
+}
+.notice-options .form_repeat.processing {
+background-image:none;
 }
 
 #content,
@@ -190,6 +273,12 @@ color:#8F0000;
 text-shadow: rgba(194,194,194,0.5) 1px 1px 1px;
 }
 
+.processing {
+background-image:url(../../base/images/icons/icon_processing.gif);
+background-repeat:no-repeat;
+background-position:47% 47%;
+}
+
 .error {
 background-color:#F7E8E8;
 }
@@ -197,6 +286,14 @@ background-color:#F7E8E8;
 background-color:#EFF3DC;
 }
 
+button.close {
+background-position:0 -1120px;
+}
+button.minimize {
+background-position:0 -1912px;
+}
+
+
 #anon_notice {
 color:#000000;
 }
@@ -207,81 +304,138 @@ background-repeat:no-repeat;
 background-position:0 45%;
 }
 #export_data li a.rss {
-background-image:url(../../base/images/icons/icon_rss.png);
+background-position:0 -130px;
 }
 #export_data li a.atom {
-background-image:url(../../base/images/icons/icon_atom.png);
+background-position:0 -64px;
 }
 #export_data li a.foaf {
-background-image:url(../../base/images/icons/icon_foaf.gif);
+background-position:0 1px;
 }
 
-.entity_edit a,
-.entity_send-a-message a,
-.form_user_nudge input.submit,
-.form_user_block input.submit,
-.form_user_unblock input.submit,
-.form_group_block input.submit,
-.form_group_unblock input.submit,
-.entity_nudge p,
-.form_make_admin input.submit {
-background-position: 0 40%;
-background-repeat: no-repeat;
-background-color:transparent;
+#export_data li a.rss {
+background-position:0 -130px;
+}
+#export_data li a.atom {
+background-position:0 -64px;
 }
+#export_data li a.foaf {
+background-position:0 1px;
+}
+
 .form_group_join input.submit,
-.form_group_leave input.submit
+.form_group_leave input.submit,
 .form_user_subscribe input.submit,
-.form_user_unsubscribe input.submit {
+.form_user_unsubscribe input.submit,
+.form_remote_authorize input.submit,
+.entity_subscribe a {
 background-color:#8F0000;
 color:#FFFFFF;
 }
-.form_user_unsubscribe input.submit,
 .form_group_leave input.submit,
-.form_user_authorization input.reject {
+.form_user_unsubscribe input.submit {
+background-position:5px -1246px;
 background-color:#87B4C8;
 }
+.form_group_join input.submit,
+.form_user_subscribe input.submit,
+.form_remote_authorize input.submit,
+.entity_subscribe a {
+background-position:5px -1181px;
+}
 
 .entity_edit a {
-background-image:url(../../base/images/icons/twotone/green/edit.gif);
+background-position: 5px -719px;
 }
 .entity_send-a-message a {
-background-image:url(../../base/images/icons/twotone/green/quote.gif);
+background-position: 5px -852px;
 }
+.entity_send-a-message .form_notice,
+.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);
+}
+
 .entity_nudge p,
 .form_user_nudge input.submit {
-background-image:url(../../base/images/icons/twotone/green/mail.gif);
+background-position: 5px -785px;
 }
 .form_user_block input.submit,
 .form_user_unblock input.submit,
 .form_group_block input.submit,
 .form_group_unblock input.submit {
-background-image:url(../../base/images/icons/twotone/green/shield.gif);
+background-position: 5px -918px;
 }
 .form_make_admin input.submit {
-background-image:url(../../base/images/icons/twotone/green/admin.gif);
+background-position: 5px -983px;
+}
+.entity_moderation p {
+background-position: 5px -1313px;
+}
+.entity_sandbox input.submit {
+background-position: 5px -1380px;
+}
+.entity_silence input.submit {
+background-position: 5px -1445px;
+}
+.entity_delete input.submit {
+background-position: 5px -1511px;
+}
+.form_reset_key input.submit {
+background-position: 5px -1973px;
+}
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
+#realtime_play {
+background-position: 0 -2308px;
+}
+#realtime_pause {
+background-position: 0 -2374px;
+}
+#realtime_popup {
+background-position: 0 -1714px;
 }
 
 /* NOTICES */
 .notice .attachment {
-background:transparent url(../../base/images/icons/twotone/green/clip-02.gif) no-repeat 0 45%;
+background-position:0 -394px;
 }
 #attachments .attachment {
 background:none;
 }
 .notice-options .notice_reply {
-background:transparent url(../../base/images/icons/twotone/green/reply.gif) no-repeat 0 45%;
+background-position:0 -592px;
 }
 .notice-options form.form_favor input.submit {
-background:transparent url(../../base/images/icons/twotone/green/favourite.gif) no-repeat 0 45%;
+background-position:0 -460px;
 }
 .notice-options form.form_disfavor input.submit {
-background:transparent url(../../base/images/icons/twotone/green/disfavourite.gif) no-repeat 0 45%;
+background-position:0 -526px;
 }
 .notice-options .notice_delete {
-background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-repeat 0 45%;
+background-position:0 -658px;
+}
+.notice-options form.form_repeat input.submit {
+background-position:0 -1582px;
+}
+.notice-options .repeated {
+background-position:0 -1648px;
 }
 
+
 .notices div.entry-content,
 .notices div.notice-options {
 opacity:0.4;
@@ -319,19 +473,26 @@ background-color:rgba(200, 200, 200, 0.300);
 /*END: NOTICES */
 
 #new_group a {
-background:transparent url(../../base/images/icons/twotone/green/news.gif) no-repeat 0 45%;
+background-position:0 -1054px;
 }
 
-.pagination .nav_prev a,
-.pagination .nav_next a {
-background-repeat:no-repeat;
-border-color:#000000;
-}
 .pagination .nav_prev a {
-background-image:url(../../base/images/icons/twotone/green/arrow-left.gif);
-background-position:10% 45%;
+background-position:10% -187px;
 }
 .pagination .nav_next a {
-background-image:url(../../base/images/icons/twotone/green/arrow-right.gif);
-background-position:90% 45%;
+background-position:105% -252px;
+}
+.pagination .nav .processing {
+background-image:url(../../base/images/icons/icon_processing.gif);
+box-shadow:none;
+-moz-box-shadow:none;
+-webkit-box-shadow:none;
+outline:none;
+}
+.pagination .nav_next a.processing {
+background-position:90% 47%;
 }
+.pagination .nav_prev a.processing {
+background-position:10% 47%;
+}
+
index 550d373fef4005342c4e1daa7cb2c115db54f46c..cf1839194a6d8e91d3ec988abe7d5be227143d28 100644 (file)
Binary files a/theme/pigeonthoughts/logo.png and b/theme/pigeonthoughts/logo.png differ