]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'inblob' of git@gitorious.org:~evan/statusnet/evans-mainline into inblob
authorEvan Prodromou <evan@status.net>
Sat, 9 Jan 2010 22:19:59 +0000 (14:19 -0800)
committerEvan Prodromou <evan@status.net>
Sat, 9 Jan 2010 22:19:59 +0000 (14:19 -0800)
Conflicts:
classes/Inbox.php
classes/Notice.php
classes/Notice_inbox.php

171 files changed:
README
actions/apigroupleave.php
actions/favorited.php
actions/geocode.php [new file with mode: 0644]
actions/getfile.php
actions/leavegroup.php
actions/newnotice.php
actions/profilesettings.php
actions/publictagcloud.php
actions/shownotice.php
actions/twitapisearchatom.php
actions/version.php [new file with mode: 0644]
classes/Avatar.php
classes/Config.php
classes/Fave.php
classes/File.php
classes/File_to_post.php
classes/Group_block.php
classes/Group_inbox.php
classes/Group_member.php
classes/Inbox.php
classes/Memcached_DataObject.php
classes/Notice.php
classes/Notice_inbox.php [new file with mode: 0644]
classes/Notice_tag.php
classes/Profile.php
classes/Profile_role.php
classes/Queue_item.php
classes/Subscription.php
classes/User_location_prefs.php
classes/User_username.php [new file with mode: 0644]
classes/statusnet.ini
config.php.sample
extlib/lgpl-2.1.txt [new file with mode: 0644]
htaccess.sample
install.php
js/jquery.cookie.js [new file with mode: 0644]
js/json2.js [new file with mode: 0644]
js/util.js
lib/action.php
lib/adminpanelaction.php
lib/authenticationplugin.php [new file with mode: 0644]
lib/authorizationplugin.php [new file with mode: 0644]
lib/cache.php [new file with mode: 0644]
lib/columndef.php
lib/common.php
lib/default.php
lib/grouptagcloudsection.php
lib/htmloutputter.php
lib/jabber.php
lib/jsonsearchresultslist.php
lib/mailhandler.php [new file with mode: 0644]
lib/noticeform.php
lib/noticelist.php
lib/personaltagcloudsection.php
lib/ping.php
lib/plugin.php
lib/popularnoticesection.php
lib/router.php
lib/schema.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/APCPlugin.php [new file with mode: 0644]
plugins/Authentication/AuthenticationPlugin.php [deleted file]
plugins/Authentication/User_username.php [deleted file]
plugins/Authorization/AuthorizationPlugin.php [deleted file]
plugins/BitlyUrl/BitlyUrlPlugin.php
plugins/Blacklist/BlacklistPlugin.php
plugins/CacheLogPlugin.php [new file with mode: 0644]
plugins/CasAuthentication/CasAuthenticationPlugin.php
plugins/CasAuthentication/README
plugins/Facebook/FacebookPlugin.php
plugins/Facebook/facebook/facebook.php
plugins/Facebook/facebook/facebook_desktop.php
plugins/Facebook/facebook/facebook_mobile.php [new file with mode: 0644]
plugins/Facebook/facebook/facebookapi_php5_restlib.php
plugins/Facebook/facebookaction.php
plugins/Facebook/facebooknoticeform.php [new file with mode: 0644]
plugins/Facebook/facebookutil.php
plugins/FeedSub/FeedSubPlugin.php
plugins/FeedSub/feedinfo.php
plugins/GeoURLPlugin.php
plugins/GeonamesPlugin.php
plugins/GoogleAnalyticsPlugin.php
plugins/Imap/ImapPlugin.php [new file with mode: 0644]
plugins/Imap/README [new file with mode: 0644]
plugins/Imap/imapdaemon.php [new file with mode: 0755]
plugins/LdapAuthentication/LdapAuthenticationPlugin.php
plugins/LdapAuthorization/LdapAuthorizationPlugin.php
plugins/LilUrl/LilUrlPlugin.php
plugins/LinkbackPlugin.php
plugins/Mapstraction/MapstractionPlugin.php
plugins/MemcachePlugin.php [new file with mode: 0644]
plugins/Minify/MinifyPlugin.php
plugins/Mollom/MollomPlugin.php [new file with mode: 0644]
plugins/Mollom/README [new file with mode: 0644]
plugins/OpenID/OpenIDPlugin.php
plugins/OpenID/User_openid_trustroot.php
plugins/PiwikAnalyticsPlugin.php
plugins/PoweredByStatusNet/PoweredByStatusNetPlugin.php
plugins/PtitUrl/PtitUrlPlugin.php
plugins/PubSubHubBub/PubSubHubBubPlugin.php
plugins/RSSCloud/LoggingAggregator.php [new file with mode: 0644]
plugins/RSSCloud/README [new file with mode: 0644]
plugins/RSSCloud/RSSCloudNotifier.php [new file with mode: 0644]
plugins/RSSCloud/RSSCloudPlugin.php [new file with mode: 0644]
plugins/RSSCloud/RSSCloudQueueHandler.php [new file with mode: 0755]
plugins/RSSCloud/RSSCloudRequestNotify.php [new file with mode: 0644]
plugins/RSSCloud/RSSCloudSubscription.php [new file with mode: 0644]
plugins/Realtime/RealtimePlugin.php
plugins/Realtime/json2.js [deleted file]
plugins/Recaptcha/RecaptchaPlugin.php
plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php
plugins/Sample/SamplePlugin.php
plugins/Sample/User_greeting_count.php [new file with mode: 0644]
plugins/Sample/hello.php [new file with mode: 0644]
plugins/SimpleUrl/SimpleUrlPlugin.php
plugins/TemplatePlugin.php
plugins/TightUrl/TightUrlPlugin.php
plugins/TwitterBridge/TwitterBridgePlugin.php
plugins/TwitterBridge/daemons/twitterstatusfetcher.php
plugins/UserFlag/UserFlagPlugin.php
plugins/UserFlag/User_flag_profile.php
plugins/WikiHashtagsPlugin.php
plugins/XCachePlugin.php [new file with mode: 0644]
scripts/console.php
scripts/createsim.php
scripts/maildaemon.php
scripts/stopdaemons.sh
scripts/updatelocation.php [new file with mode: 0644]
theme/base/css/display.css
theme/base/images/icons/icon_geo.png [new file with mode: 0644]
theme/base/images/icons/icons-01.gif
theme/cloudy/css/display.css
theme/default/css/display.css
theme/identica/css/display.css

diff --git a/README b/README
index 6e39890cbff9fb0ebb6286cdaceee3f417f88a59..7457215a1f167da322699d27e5d422d90855af1f 100644 (file)
--- a/README
+++ b/README
@@ -710,11 +710,21 @@ private site, but users of the private site may be able to subscribe
 to users on a remote site. (Or not... it's not well tested.) The
 "proper behaviour" hasn't been defined here, so handle with care.
 
-If fancy URLs is enabled, access to file attachments can also be
-restricted to logged-in users only. Uncomment the appropriate rewrite
-rule in .htaccess or your server's httpd.conf. (This most likely will
-not work if you are using a virtual server for attachments, so consider
-the performance/security tradeoff.)
+Access to file attachments can also be restricted to logged-in users only.
+1. Add a directory outside the web root where your file uploads will be
+   stored. Usually a command like this will work:
+
+           mkdir /var/www/mublog-files
+
+2. Make the file uploads directory writeable by the web server. An
+   insecure way to do this is:
+
+           chmod a+x /var/www/mublog-files
+
+3. Tell StatusNet to use this directory for file uploads. Add a line
+   like this to your config.php:
+
+           $config['attachments']['dir'] = '/var/www/mublog-files';
 
 Upgrading
 =========
@@ -1612,6 +1622,7 @@ if anyone's been overlooked in error.
 * Craig Andrews
 * mEDI
 * Brett Taylor
+* Brigitte Schuster
 
 Thanks also to the developers of our upstream library code and to the
 thousands of people who have tried out Identi.ca, installed StatusNet,
index 514a3a557da4e923dbe419e9cf150607c92cbfe2..5627bfc14643a5bb2ae6f78a5d9528c6d9008fac 100644 (file)
@@ -108,7 +108,7 @@ class ApiGroupLeaveAction extends ApiAuthAction
         $member = new Group_member();
 
         $member->group_id   = $this->group->id;
-        $member->profile_id = $this->auth->id;
+        $member->profile_id = $this->auth_user->id;
 
         if (!$member->find(true)) {
             $this->serverError(_('You are not a member of this group.'));
@@ -118,12 +118,12 @@ class ApiGroupLeaveAction extends ApiAuthAction
         $result = $member->delete();
 
         if (!$result) {
-            common_log_db_error($member, 'INSERT', __FILE__);
+            common_log_db_error($member, 'DELETE', __FILE__);
             $this->serverError(
                 sprintf(
-                    _('Could not remove user %s to group %s.'),
+                    _('Could not remove user %s from group %s.'),
                     $this->user->nickname,
-                    $this->$group->nickname
+                    $this->group->nickname
                 )
             );
             return;
index 150b67b0b09451f752d226486031de07852e32b7..9ffa5b84454093fde32b98460751b60bbab32745 100644 (file)
@@ -185,11 +185,7 @@ class FavoritedAction extends Action
 
     function showContent()
     {
-        if (common_config('db', 'type') == 'pgsql') {
-            $weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
-        } else {
-            $weightexpr='sum(exp(-(now() - fave.modified) / %s))';
-        }
+        $weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
 
         $qry = 'SELECT notice.*, '.
           $weightexpr . ' as weight ' .
@@ -207,7 +203,7 @@ class FavoritedAction extends Action
         }
 
         $notice = Memcached_DataObject::cachedQuery('Notice',
-                                                    sprintf($qry, common_config('popular', 'dropoff')),
+                                                    $qry,
                                                     600);
 
         $nl = new NoticeList($notice, $this);
diff --git a/actions/geocode.php b/actions/geocode.php
new file mode 100644 (file)
index 0000000..9671d2c
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Geocode action class
+ *
+ * PHP version 5
+ *
+ * @category Action
+ * @package  StatusNet
+ * @author   Craig Andrews <candrews@integralblue.com>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Geocode action class
+ *
+ * @category Action
+ * @package  StatusNet
+ * @author   Craig Andrews <candrews@integralblue.com>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ */
+class GeocodeAction extends Action
+{
+    function prepare($args)
+    {
+        parent::prepare($args);
+        $token = $this->trimmed('token');
+        if (!$token || $token != common_session_token()) {
+            $this->clientError(_('There was a problem with your session token. '.
+                                 'Try again, please.'));
+        }
+        $this->lat = $this->trimmed('lat');
+        $this->lon = $this->trimmed('lon');
+        $location = Location::fromLatLon($this->lat, $this->lon);
+        if ($location) {
+            $this->location = Location::fromId($location->location_id, $location->location_ns);
+            $this->lat = $this->location->lat;
+            $this->lon = $this->location->lon;
+        }
+        return true;
+    }
+
+    /**
+     * Class handler
+     *
+     * @param array $args query arguments
+     *
+     * @return nothing
+     *
+     **/
+    function handle($args)
+    {
+        header('Content-Type: application/json; charset=utf-8');
+        $location_object = array();
+        $location_object['lat']=$this->lat;
+        $location_object['lon']=$this->lon;
+        if($this->location) {
+            $location_object['location_id']=$this->location->location_id;
+            $location_object['location_ns']=$this->location->location_ns;
+            $location_object['name']=$this->location->getName();
+            $location_object['url']=$this->location->getUrl();
+        }
+        print(json_encode($location_object));
+    }
+
+    /**
+     * Is this action read-only?
+     *
+     * @return boolean true
+     */
+
+    function isReadOnly($args)
+    {
+        return true;
+    }
+}
+?>
index ecda34c0f6c8168d37f6fb3d3853031a5b4626eb..cd327e41007e43b25fd26db97c25d26145e040f5 100644 (file)
@@ -1,13 +1,13 @@
 <?php
 /**
- * StatusNet, the distributed open-source microblogging tool
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
  *
- * Returns a given file attachment, allowing private sites to only allow
- * access to file attachments after login.
+ * Return a requested file
  *
  * PHP version 5
  *
- * LICENCE: This program is free software: you can redistribute it and/or modify
+ * 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.
  * 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  Personal
+ * @category  PrivateAttachments
  * @package   StatusNet
  * @author    Jeffery To <jeffery.to@gmail.com>
- * @copyright 2008-2009 StatusNet, Inc.
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
+if (!defined('STATUSNET')) {
     exit(1);
 }
 
 require_once 'MIME/Type.php';
 
 /**
- * Action for getting a file attachment
+ * An action for returning a requested file
  *
- * @category Personal
- * @package  StatusNet
- * @author   Jeffery To <jeffery.to@gmail.com>
- * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://status.net/
+ * The StatusNet system will do an implicit user check if the site is
+ * private before allowing this to continue
+ *
+ * @category  PrivateAttachments
+ * @package   StatusNet
+ * @author    Jeffery To <jeffery.to@gmail.com>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
  */
 
 class GetfileAction extends Action
@@ -68,7 +72,7 @@ class GetfileAction extends Action
         $path = null;
 
         if ($filename) {
-            $path = common_config('attachments', 'dir') . $filename;
+            $path = File::path($filename);
         }
 
         if (empty($path) or !file_exists($path)) {
@@ -103,6 +107,10 @@ class GetfileAction extends Action
 
     function lastModified()
     {
+        if (common_config('site', 'use_x_sendfile')) {
+            return null;
+        }
+
         return filemtime($this->path);
     }
 
@@ -114,8 +122,24 @@ class GetfileAction extends Action
      *
      * @return string etag http header
      */
+
     function etag()
     {
+        if (common_config('site', 'use_x_sendfile')) {
+            return null;
+        }
+
+        $cache = common_memcache();
+        if($cache) {
+            $key = common_cache_key('attachments:etag:' . $this->path);
+            $etag = $cache->get($key);
+            if($etag === false) {
+                $etag = crc32(file_get_contents($this->path));
+                $cache->set($key,$etag);
+            }
+            return $etag;
+        }
+
         $stat = stat($this->path);
         return '"' . $stat['ino'] . '-' . $stat['size'] . '-' . $stat['mtime'] . '"';
     }
@@ -133,13 +157,19 @@ class GetfileAction extends Action
         // undo headers set by PHP sessions
         $sec = session_cache_expire() * 60;
         header('Expires: ' . date(DATE_RFC1123, time() + $sec));
-        header('Cache-Control: public, max-age=' . $sec);
-        header('Pragma: public');
+        header('Cache-Control: max-age=' . $sec);
 
         parent::handle($args);
 
         $path = $this->path;
+
         header('Content-Type: ' . MIME_Type::autoDetect($path));
-        readfile($path);
+
+        if (common_config('site', 'use_x_sendfile')) {
+            header('X-Sendfile: ' . $path);
+        } else {
+            header('Content-Length: ' . filesize($path));
+            readfile($path);
+        }
     }
 }
index 08fce150980eb406fce36bf46ceff307bf66ba32..90c85e1a4e6e602eed57d7b552745564f8c41ae2 100644 (file)
@@ -123,8 +123,8 @@ class LeavegroupAction extends Action
         $result = $member->delete();
 
         if (!$result) {
-            common_log_db_error($member, 'INSERT', __FILE__);
-            $this->serverError(sprintf(_('Could not remove user %s to group %s'),
+            common_log_db_error($member, 'DELETE', __FILE__);
+            $this->serverError(sprintf(_('Could not remove user %s from group %s'),
                                        $cur->nickname, $this->group->nickname));
         }
 
index 2d9f0ff797d973fc31e5970a28061859fc7054d7..a4ed87bb62e695b86cc02e026259dce025d01102 100644 (file)
@@ -184,7 +184,7 @@ class NewnoticeAction extends Action
 
         $options = array('reply_to' => ($replyto == 'false') ? null : $replyto);
 
-        if ($user->shareLocation()) {
+        if ($user->shareLocation() && $this->arg('notice_data-geo')) {
 
             $locOptions = Notice::locationOptions($this->trimmed('lat'),
                                                   $this->trimmed('lon'),
index ee236fe62503ec3b3cd7adf5af58e813a3605713..0d6777879193af2e9d66e662a3737ebd396fc062 100644 (file)
@@ -316,7 +316,12 @@ class ProfilesettingsAction extends AccountSettingsAction
 
             $loc = Location::fromName($location);
 
-            if (!empty($loc)) {
+            if (empty($loc)) {
+                $profile->lat         = null;
+                $profile->lon         = null;
+                $profile->location_id = null;
+                $profile->location_ns = null;
+            } else {
                 $profile->lat         = $loc->lat;
                 $profile->lon         = $loc->lon;
                 $profile->location_id = $loc->location_id;
index e7f6ee36c736552bc33817bf5018940ea0e1d254..9e4478dbb13165e1e908e9dbc02114f137e496ee 100644 (file)
@@ -105,12 +105,8 @@ class PublictagcloudAction extends Action
 
         #Add the aggregated columns...
         $tags->selectAdd('max(notice_id) as last_notice_id');
-        if(common_config('db','type')=='pgsql') {
-            $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight';
-        } else {
-            $calc='sum(exp(-(now() - created)/%s)) as weight';
-        }
-        $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff')));
+        $calc = common_sql_weight('created', common_config('tag', 'dropoff'));
+        $tags->selectAdd($calc . ' as weight');
         $tags->groupBy('tag');
         $tags->orderBy('weight DESC');
 
@@ -136,7 +132,12 @@ class PublictagcloudAction extends Action
             $this->elementStart('dd');
             $this->elementStart('ul', 'tags xoxo tag-cloud');
             foreach ($tw as $tag => $weight) {
-                $this->showTag($tag, $weight, $weight/$sum);
+                if ($sum) {
+                    $weightedSum = $weight/$sum;
+                } else {
+                    $weightedSum = 0.5;
+                }
+                $this->showTag($tag, $weight, $weightedSum);
             }
             $this->elementEnd('ul');
             $this->elementEnd('dd');
index 5d16fdad9ed84a4706d759c04f9d681ab37ac760..d09100f676aaf473e46e54aadd409f6ff1b1eb0c 100644 (file)
@@ -103,7 +103,7 @@ class ShownoticeAction extends OwnerDesignAction
 
         $this->user = User::staticGet('id', $this->profile->id);
 
-        if (! $this->notice->is_local) {
+        if ($this->notice->is_local == Notice::REMOTE_OMB) {
             common_redirect($this->notice->uri);
             return false;
         }
index 1cb8d7efe6d507ced64fa7597e3683eefac4daee..baed2a0c7c24107cb15731489fc312974ea267c6 100644 (file)
@@ -208,7 +208,14 @@ class TwitapisearchatomAction extends ApiAction
         $this->showFeed();
 
         foreach ($notices as $n) {
-            $this->showEntry($n);
+
+            $profile = $n->getProfile();
+
+            // Don't show notices from deleted users
+
+            if (!empty($profile)) {
+                $this->showEntry($n);
+            }
         }
 
         $this->endAtom();
diff --git a/actions/version.php b/actions/version.php
new file mode 100644 (file)
index 0000000..2cf9142
--- /dev/null
@@ -0,0 +1,270 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * Show version information for this software and 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/>.
+ *
+ * @category Info
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link     http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Version info page
+ *
+ * A page that shows version information for this site. Helpful for
+ * debugging, for giving credit to authors, and for linking to more
+ * complete documentation for admins.
+ *
+ * @category Info
+ * @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 VersionAction extends Action
+{
+    var $pluginVersions = array();
+
+    /**
+     * Return true since we're read-only.
+     *
+     * @param array $args other arguments
+     *
+     * @return boolean is read only action?
+     */
+
+    function isReadOnly($args)
+    {
+        return true;
+    }
+
+    /**
+     * Returns the page title
+     *
+     * @return string page title
+     */
+
+    function title()
+    {
+        return sprintf(_("StatusNet %s"), STATUSNET_VERSION);
+    }
+
+    /**
+     * Prepare to run
+     *
+     * Fire off an event to let plugins report their
+     * versions.
+     *
+     * @param array $args array misc. arguments
+     *
+     * @return boolean true
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        Event::handle('PluginVersion', array(&$this->pluginVersions));
+
+        return true;
+    }
+
+    /**
+     * Execute the action
+     *
+     * Shows a page with the version information in the
+     * content area.
+     *
+     * @param array $args ignored.
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        parent::handle($args);
+        $this->showPage();
+    }
+
+
+    /*
+    * Override to add hentry, and content-inner classes
+    *
+    * @return void
+    */
+    function showContentBlock()
+     {
+         $this->elementStart('div', array('id' => 'content', 'class' => 'hentry'));
+         $this->showPageTitle();
+         $this->showPageNoticeBlock();
+         $this->elementStart('div', array('id' => 'content_inner',
+                                          'class' => 'entry-content'));
+         // show the actual content (forms, lists, whatever)
+         $this->showContent();
+         $this->elementEnd('div');
+         $this->elementEnd('div');
+     }
+
+
+    /*
+    * Overrride to add entry-title class
+    *
+    * @return void
+    */
+    function showPageTitle() {
+        $this->element('h1', array('class' => 'entry-title'), $this->title());
+    }
+
+
+    /**
+     * Show version information
+     *
+     * @return void
+     */
+
+    function showContent()
+    {
+        $this->elementStart('p');
+
+        $this->raw(sprintf(_('This site is powered by %s version %s, '.
+                             'Copyright 2008-2010 StatusNet, Inc. '.
+                             'and contributors.'),
+                           XMLStringer::estring('a', array('href' => 'http://status.net/'),
+                                                _('StatusNet')),
+                           STATUSNET_VERSION));
+        $this->elementEnd('p');
+
+        $this->element('h2', null, _('Contributors'));
+
+        $this->element('p', null, implode(', ', $this->contributors));
+
+        $this->element('h2', null, _('License'));
+
+        $this->element('p', null,
+                       _('StatusNet is free software: you can redistribute it and/or modify '.
+                         'it under the terms of the GNU Affero General Public License as published by '.
+                         'the Free Software Foundation, either version 3 of the License, or '.
+                         '(at your option) any later version. '));
+
+        $this->element('p', null,
+                       _('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. '));
+
+        $this->elementStart('p');
+        $this->raw(sprintf(_('You should have received a copy of the GNU Affero General Public License '.
+                             'along with this program.  If not, see %s.'),
+                           XMLStringer::estring('a', array('href' => 'http://www.gnu.org/licenses/agpl.html'),
+                                                'http://www.gnu.org/licenses/agpl.html')));
+        $this->elementEnd('p');
+
+        // XXX: Theme information?
+
+        if (count($this->pluginVersions)) {
+            $this->element('h2', null, _('Plugins'));
+
+            $this->elementStart('table', array('id' => 'plugins_enabled'));
+
+            $this->elementStart('thead');
+            $this->elementStart('tr');
+            $this->element('th', array('id' => 'plugin_name'), _('Name'));
+            $this->element('th', array('id' => 'plugin_version'), _('Version'));
+            $this->element('th', array('id' => 'plugin_authors'), _('Author(s)'));
+            $this->element('th', array('id' => 'plugin_description'), _('Description'));
+            $this->elementEnd('tr');
+            $this->elementEnd('thead');
+
+            $this->elementStart('tbody');
+            foreach ($this->pluginVersions as $plugin) {
+                $this->elementStart('tr');
+                if (array_key_exists('homepage', $plugin)) {
+                    $this->elementStart('th');
+                    $this->element('a', array('href' => $plugin['homepage']),
+                                   $plugin['name']);
+                    $this->elementEnd('th');
+                } else {
+                    $this->element('th', null, $plugin['name']);
+                }
+
+                $this->element('td', null, $plugin['version']);
+
+                if (array_key_exists('author', $plugin)) {
+                    $this->element('td', null, $plugin['author']);
+                }
+
+                if (array_key_exists('rawdescription', $plugin)) {
+                    $this->elementStart('td');
+                    $this->raw($plugin['rawdescription']);
+                    $this->elementEnd('td');
+                } else if (array_key_exists('description', $plugin)) {
+                    $this->element('td', null, $plugin['description']);
+                }
+                $this->elementEnd('tr');
+            }
+            $this->elementEnd('tbody');
+            $this->elementEnd('table');
+        }
+
+    }
+
+    var $contributors = array('Evan Prodromou (StatusNet)',
+                              'Zach Copley (StatusNet)',
+                              'Earle Martin (StatusNet)',
+                              'Marie-Claude Doyon (StatusNet)',
+                              'Sarven Capadisli (StatusNet)',
+                              'Robin Millette (StatusNet)',
+                              'Ciaran Gultnieks',
+                              'Michael Landers',
+                              'Ori Avtalion',
+                              'Garret Buell',
+                              'Mike Cochrane',
+                              'Matthew Gregg',
+                              'Florian Biree',
+                              'Erik Stambaugh',
+                              'drry',
+                              'Gina Haeussge',
+                              'Tryggvi Björgvinsson',
+                              'Adrian Lang',
+                              'Meitar Moscovitz',
+                              'Sean Murphy',
+                              'Leslie Michael Orchard',
+                              'Eric Helgeson',
+                              'Ken Sedgwick',
+                              'Brian Hendrickson',
+                              'Tobias Diekershoff',
+                              'Dan Moore',
+                              'Fil',
+                              'Jeff Mitchell',
+                              'Brenda Wallace',
+                              'Jeffery To',
+                              'Federico Marani',
+                              'Craig Andrews',
+                              'mEDI',
+                              'Brett Taylor',
+                              'Brigitte Schuster');
+}
index 8d6424e8b2d1f53c5ccec912404ccde6ee7b26d9..91bde0f0401b6dc144b48a6ba434c312c80c967c 100644 (file)
@@ -37,7 +37,7 @@ class Avatar extends Memcached_DataObject
         }
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Avatar', $kv);
     }
index 390d75381ac82fb74289a91fc6a77a011d875da0..43b99587fa14971c2c66a32790d548da10f4e6c6 100644 (file)
@@ -59,7 +59,7 @@ class Config extends Memcached_DataObject
 
         if (!empty($c)) {
             $settings = $c->get(common_cache_key(self::settingsKey));
-            if (!empty($settings)) {
+            if ($settings !== false) {
                 return $settings;
             }
         }
@@ -120,7 +120,7 @@ class Config extends Memcached_DataObject
         return $result;
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Config', $kv);
     }
index 11e876ff19dcc1294aae6ddb8dfda6e7486eda11..8113c8e1668a508251323f117468da25d119f7f6 100644 (file)
@@ -32,7 +32,7 @@ class Fave extends Memcached_DataObject
         return $fave;
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Fave', $kv);
     }
index e04a9d5255ad50c85c840e3563e58ed0017610b9..6173f31d6e5025c5d8a4c56284f3b72d83598f37 100644 (file)
@@ -182,25 +182,32 @@ class File extends Memcached_DataObject
 
     static function url($filename)
     {
-        $path = common_config('attachments', 'path');
+        if(common_config('site','private')) {
 
-        if ($path[strlen($path)-1] != '/') {
-            $path .= '/';
-        }
+            return common_local_url('getfile',
+                                array('filename' => $filename));
 
-        if ($path[0] != '/') {
-            $path = '/'.$path;
-        }
+        } else {
+            $path = common_config('attachments', 'path');
 
-        $server = common_config('attachments', 'server');
+            if ($path[strlen($path)-1] != '/') {
+                $path .= '/';
+            }
 
-        if (empty($server)) {
-            $server = common_config('site', 'server');
-        }
+            if ($path[0] != '/') {
+                $path = '/'.$path;
+            }
+
+            $server = common_config('attachments', 'server');
 
-        // XXX: protocol
+            if (empty($server)) {
+                $server = common_config('site', 'server');
+            }
 
-        return 'http://'.$server.$path.$filename;
+            // XXX: protocol
+
+            return 'http://'.$server.$path.$filename;
+        }
     }
 
     function getEnclosure(){
index e3db91b205ab597f7c46dfdcd36f0dd01f953ed8..72a42b0880a46269ac22758c37798e2b8d411e8d 100644 (file)
@@ -62,7 +62,7 @@ class File_to_post extends Memcached_DataObject
         }
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('File_to_post', $kv);
     }
index de2cf5f6eb12c694a34d059f447e3ce4add972fd..9f4d592956eaf497ee7258a11ac049e66921af84 100644 (file)
@@ -40,7 +40,7 @@ class Group_block extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Group_block', $kv);
     }
index 1af7439f7f749e668824773aa6363012e77e33f2..2a0787e387dc8ea087060dfc447cf661121d0e74 100644 (file)
@@ -20,7 +20,7 @@ class Group_inbox extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Group_inbox', $kv);
     }
index 3c23a991f05f272e5f610d3bf62b724e83a343b8..069b2c7a1c75c4150a2a0263473ad60e9069868d 100644 (file)
@@ -21,7 +21,7 @@ class Group_member extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Group_member', $kv);
     }
index 610b5fceb2b9bedb0b1a028d8768cf9c5710b950..e14d4f4e7eddbb3c2821877d02d61896274e49ce 100644 (file)
@@ -51,38 +51,80 @@ class Inbox extends Memcached_DataObject
         return array(false, false, false);
     }
 
-    static function insertNotice($user_id, $notice_id)
+    /**
+     * Create a new inbox from existing Notice_inbox stuff
+     */
+
+    static function initialize($user_id)
     {
+        $ids = array();
+
+        $ni = new Notice_inbox();
+
+        $ni->user_id = $user_id;
+        $ni->selectAdd();
+        $ni->selectAdd('notice_id');
+        $ni->orderBy('notice_id DESC');
+        $ni->limit(0, 1024);
+
+        if ($ni->find()) {
+            while($ni->fetch()) {
+                $ids[] = $ni->notice_id;
+            }
+        }
+
+        $ni->free();
+        unset($ni);
+
         $inbox = new Inbox();
 
-        $inbox->query(sprintf('UPDATE inbox '.
-                              'set notice_ids = concat(cast(0x%08x as binary(4)), '.
-                              'substr(notice_ids, 1, 4092)) '.
-                              'WHERE user_id = %d',
-                              $notice_id, $user_id));
+        $inbox->user_id = $user_id;
+        $inbox->notice_ids = call_user_func_array('pack', array_merge(array('N*'), $ids));
+
+        $result = $inbox->insert();
+
+        if (!$result) {
+            common_log_db_error($inbox, 'INSERT', __FILE__);
+            return null;
+        }
+
+        return $inbox;
     }
 
-    static function bulkInsert($notice_id, $user_ids)
+    static function insertNotice($user_id, $notice_id)
     {
-        $cnt = count($user_ids);
+        $inbox = Inbox::staticGet('user_id', $user_id);
 
-        for ($off = 0; $off < $cnt; $off += self::BOXCAR) {
+        if (empty($inbox)) {
+            $inbox = Inbox::initialize($user_id);
+        }
 
-            $boxcar = array_slice($user_ids, $off, self::BOXCAR);
+        if (empty($inbox)) {
+            return false;
+        }
 
-            if (empty($boxcar)) { // jump in, hobo!
-                break;
-            }
+        $result = $inbox->query(sprintf('UPDATE inbox '.
+                                        'set notice_ids = concat(cast(0x%08x as binary(4)), '.
+                                        'substr(notice_ids, 1, 4092)) '.
+                                        'WHERE user_id = %d',
+                                        $notice_id, $user_id));
 
-            $inbox = new Inbox();
+        if ($result) {
+            $c = self::memcache();
 
-            $inbox->query(sprintf('UPDATE inbox '.
-                                  'set notice_ids = concat(cast(0x%08x as binary(4)), '.
-                                  'substr(notice_ids, 1, 4092)) '.
-                                  'WHERE user_id in (%s)',
-                                  $notice_id, implode(',', $boxcar)));
+            if (!empty($c)) {
+                $c->delete(self::cacheKey('inbox', 'user_id', $user_id));
+            }
+        }
+
+        return $result;
+    }
 
-            $inbox->free();
+    static function bulkInsert($notice_id, $user_ids)
+    {
+        foreach ($user_ids as $user_id)
+        {
+            Inbox::insertNotice($user_id, $notice_id);
         }
     }
 
@@ -91,7 +133,10 @@ class Inbox extends Memcached_DataObject
         $inbox = Inbox::staticGet('user_id', $user_id);
 
         if (empty($inbox)) {
-            return array();
+            $inbox = Inbox::initialize($user_id);
+            if (empty($inbox)) {
+                return array();
+            }
         }
 
         $ids = unpack('N*', $inbox->notice_ids);
index be8137573d31530862a1e63f05bd63d605c89902..400b05f9776fca066e462e3a812a2a37fc08f7a6 100644 (file)
@@ -19,8 +19,6 @@
 
 if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
-require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-
 class Memcached_DataObject extends DB_DataObject
 {
     /**
@@ -37,6 +35,41 @@ class Memcached_DataObject extends DB_DataObject
         }
     }
 
+    /**
+     * Magic function called at serialize() time.
+     *
+     * We use this to drop a couple process-specific references
+     * from DB_DataObject which can cause trouble in future
+     * processes.
+     *
+     * @return array of variable names to include in serialization.
+     */
+    function __sleep()
+    {
+        $vars = array_keys(get_object_vars($this));
+        $skip = array('_DB_resultid', '_link_loaded');
+        return array_diff($vars, $skip);
+    }
+
+    /**
+     * Magic function called at unserialize() time.
+     *
+     * Clean out some process-specific variables which might
+     * be floating around from a previous process's cached
+     * objects.
+     *
+     * Old cached objects may still have them.
+     */
+    function __wakeup()
+    {
+        // Refers to global state info from a previous process.
+        // Clear this out so we don't accidentally break global
+        // state in *this* process.
+        $this->_DB_resultid = null;
+        // We don't have any local DBO refs, so clear these out.
+        $this->_link_loaded = false;
+    }
+
     /**
      * Wrapper for DB_DataObject's static lookup using memcached
      * as backing instead of an in-process cache array.
@@ -57,31 +90,42 @@ class Memcached_DataObject extends DB_DataObject
             unset($i);
         }
         $i = Memcached_DataObject::getcached($cls, $k, $v);
-        if ($i) {
-            return $i;
-        } else {
-            $i = DB_DataObject::staticGet($cls, $k, $v);
-            if ($i) {
-                // DB_DataObject's in-process lookup cache interferes with GC
-                // to cause massive memory leaks in long-running processes.
-                if (php_sapi_name() == 'cli') {
-                    $i->_clear_cache();
-                }
-                
-                // Now store it into the shared memcached, if present...
+        if ($i === false) { // false == cache miss
+            $i = DB_DataObject::factory($cls);
+            if (empty($i)) {
+                $i = false;
+                return $i;
+            }
+            $result = $i->get($k, $v);
+            if ($result) {
+                // Hit!
                 $i->encache();
+            } else {
+                // save the fact that no such row exists
+                $c = self::memcache();
+                if (!empty($c)) {
+                    $ck = self::cachekey($cls, $k, $v);
+                    $c->set($ck, null);
+                }
+                $i = false;
             }
-            return $i;
         }
+        return $i;
     }
 
-    function &pkeyGet($cls, $kv)
+    /**
+     * @fixme Should this return false on lookup fail to match staticGet?
+     */
+    function pkeyGet($cls, $kv)
     {
         $i = Memcached_DataObject::multicache($cls, $kv);
-        if ($i) {
+        if ($i !== false) { // false == cache miss
             return $i;
         } else {
-            $i = new $cls();
+            $i = DB_DataObject::factory($cls);
+            if (empty($i)) {
+                return false;
+            }
             foreach ($kv as $k => $v) {
                 $i->$k = $v;
             }
@@ -89,6 +133,11 @@ class Memcached_DataObject extends DB_DataObject
                 $i->encache();
             } else {
                 $i = null;
+                $c = self::memcache();
+                if (!empty($c)) {
+                    $ck = self::multicacheKey($cls, $kv);
+                    $c->set($ck, null);
+                }
             }
             return $i;
         }
@@ -97,6 +146,9 @@ class Memcached_DataObject extends DB_DataObject
     function insert()
     {
         $result = parent::insert();
+        if ($result) {
+            $this->encache(); // in case of cached negative lookups
+        }
         return $result;
     }
 
@@ -123,7 +175,7 @@ class Memcached_DataObject extends DB_DataObject
     }
 
     static function cacheKey($cls, $k, $v) {
-        if (is_object($cls) || is_object($j) || is_object($v)) {
+        if (is_object($cls) || is_object($k) || is_object($v)) {
             $e = new Exception();
             common_log(LOG_ERR, __METHOD__ . ' object in param: ' .
                 str_replace("\n", " ", $e->getTraceAsString()));
@@ -142,6 +194,17 @@ class Memcached_DataObject extends DB_DataObject
 
     function keyTypes()
     {
+        // ini-based classes return number-indexed arrays. handbuilt
+        // classes return column => keytype. Make this uniform.
+
+        $keys = $this->keys();
+
+        $keyskeys = array_keys($keys);
+
+        if (is_string($keyskeys[0])) {
+            return $keys;
+        }
+
         global $_DB_DATAOBJECT;
         if (!isset($_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"])) {
             $this->databaseStructure();
@@ -153,67 +216,90 @@ class Memcached_DataObject extends DB_DataObject
     function encache()
     {
         $c = $this->memcache();
+
         if (!$c) {
             return false;
-        } else {
-            $pkey = array();
-            $pval = array();
-            $types = $this->keyTypes();
-            ksort($types);
-            foreach ($types as $key => $type) {
-                if ($type == 'K') {
-                    $pkey[] = $key;
-                    $pval[] = $this->$key;
-                } else {
-                    $c->set($this->cacheKey($this->tableName(), $key, $this->$key), $this);
-                }
-            }
-            # XXX: should work for both compound and scalar pkeys
-            $pvals = implode(',', $pval);
-            $pkeys = implode(',', $pkey);
-            $c->set($this->cacheKey($this->tableName(), $pkeys, $pvals), $this);
+        }
+
+        $keys = $this->_allCacheKeys();
+
+        foreach ($keys as $key) {
+            $c->set($key, $this);
         }
     }
 
     function decache()
     {
         $c = $this->memcache();
+
         if (!$c) {
             return false;
-        } else {
-            $pkey = array();
-            $pval = array();
-            $types = $this->keyTypes();
-            ksort($types);
-            foreach ($types as $key => $type) {
-                if ($type == 'K') {
-                    $pkey[] = $key;
-                    $pval[] = $this->$key;
-                } else {
-                    $c->delete($this->cacheKey($this->tableName(), $key, $this->$key));
+        }
+
+        $keys = $this->_allCacheKeys();
+
+        foreach ($keys as $key) {
+            $c->delete($key, $this);
+        }
+    }
+
+    function _allCacheKeys()
+    {
+        $ckeys = array();
+
+        $types = $this->keyTypes();
+        ksort($types);
+
+        $pkey = array();
+        $pval = array();
+
+        foreach ($types as $key => $type) {
+
+            assert(!empty($key));
+
+            if ($type == 'U') {
+                if (empty($this->$key)) {
+                    continue;
                 }
+                $ckeys[] = $this->cacheKey($this->tableName(), $key, $this->$key);
+            } else if ($type == 'K' || $type == 'N') {
+                $pkey[] = $key;
+                $pval[] = $this->$key;
+            } else {
+                throw new Exception("Unknown key type $key => $type for " . $this->tableName());
             }
-            # should work for both compound and scalar pkeys
-            # XXX: comma works for now but may not be safe separator for future keys
-            $pvals = implode(',', $pval);
-            $pkeys = implode(',', $pkey);
-            $c->delete($this->cacheKey($this->tableName(), $pkeys, $pvals));
         }
+
+        assert(count($pkey) > 0);
+
+        // XXX: should work for both compound and scalar pkeys
+        $pvals = implode(',', $pval);
+        $pkeys = implode(',', $pkey);
+
+        $ckeys[] = $this->cacheKey($this->tableName(), $pkeys, $pvals);
+
+        return $ckeys;
     }
 
     function multicache($cls, $kv)
     {
         ksort($kv);
-        $c = Memcached_DataObject::memcache();
+        $c = self::memcache();
         if (!$c) {
             return false;
         } else {
-            $pkeys = implode(',', array_keys($kv));
-            $pvals = implode(',', array_values($kv));
-            return $c->get(Memcached_DataObject::cacheKey($cls, $pkeys, $pvals));
+            return $c->get(self::multicacheKey($cls, $kv));
         }
     }
 
+    static function multicacheKey($cls, $kv)
+    {
+        ksort($kv);
+        $pkeys = implode(',', array_keys($kv));
+        $pvals = implode(',', array_values($kv));
+        return self::cacheKey($cls, $pkeys, $pvals);
+    }
+
     function getSearchEngine($table)
     {
         require_once INSTALLDIR.'/lib/search_engines.php';
@@ -248,7 +334,8 @@ class Memcached_DataObject extends DB_DataObject
         $key_part = common_keyize($cls).':'.md5($qry);
         $ckey = common_cache_key($key_part);
         $stored = $c->get($ckey);
-        if ($stored) {
+
+        if ($stored !== false) {
             return new ArrayWrapper($stored);
         }
 
index 4c6d256d3e7ae04236434ceb9328f189ed0e454d..6284b8ca518947c16c37560a9b61c982ac928614 100644 (file)
@@ -63,7 +63,7 @@ class Notice extends Memcached_DataObject
     public $created;                         // datetime  multiple_key not_null default_0000-00-00%2000%3A00%3A00
     public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
     public $reply_to;                        // int(4)
-    public $is_local;                        // tinyint(1)
+    public $is_local;                        // int(4)
     public $source;                          // varchar(32)
     public $conversation;                    // int(4)
     public $lat;                             // decimal(10,7)
@@ -213,7 +213,7 @@ class Notice extends Memcached_DataObject
             extract($options);
         }
 
-        if (empty($is_local)) {
+        if (!isset($is_local)) {
             $is_local = Notice::LOCAL_PUBLIC;
         }
 
@@ -830,7 +830,7 @@ class Notice extends Memcached_DataObject
         return $ids;
     }
 
-    function addToInboxes()
+    function whoGets()
     {
         $users = $this->getSubscribedUsers();
 
@@ -871,6 +871,13 @@ class Notice extends Memcached_DataObject
             }
         }
 
+        return $ni;
+    }
+
+    function addToInboxes()
+    {
+        $ni = $this->whoGets();
+
         Inbox::bulkInsert($this->id, array_keys($ni));
 
         return;
@@ -1191,7 +1198,7 @@ class Notice extends Memcached_DataObject
 
         $idstr = $cache->get($idkey);
 
-        if (!empty($idstr)) {
+        if ($idstr !== false) {
             // Cache hit! Woohoo!
             $window = explode(',', $idstr);
             $ids = array_slice($window, $offset, $limit);
@@ -1200,7 +1207,7 @@ class Notice extends Memcached_DataObject
 
         $laststr = $cache->get($idkey.';last');
 
-        if (!empty($laststr)) {
+        if ($laststr !== false) {
             $window = explode(',', $laststr);
             $last_id = $window[0];
             $new_ids = call_user_func_array($fn, array_merge($args, array(0, NOTICE_CACHE_WINDOW,
@@ -1340,12 +1347,21 @@ class Notice extends Memcached_DataObject
     {
         $author = Profile::staticGet('id', $this->profile_id);
 
-        // FIXME: truncate on long repeats...?
-
         $content = sprintf(_('RT @%1$s %2$s'),
                            $author->nickname,
                            $this->content);
 
+        $maxlen = common_config('site', 'textlimit');
+        if ($maxlen > 0 && mb_strlen($content) > $maxlen) {
+            // Web interface and current Twitter API clients will
+            // pull the original notice's text, but some older
+            // clients and RSS/Atom feeds will see this trimmed text.
+            //
+            // Unfortunately this is likely to lose tags or URLs
+            // at the end of long notices.
+            $content = mb_substr($content, 0, $maxlen - 4) . ' ...';
+        }
+
         return self::saveNew($repeater_id, $content, $source,
                              array('repeat_of' => $this->id));
     }
@@ -1360,7 +1376,7 @@ class Notice extends Memcached_DataObject
             $ids = $this->_repeatStreamDirect($limit);
         } else {
             $idstr = $cache->get(common_cache_key('notice:repeats:'.$this->id));
-            if (!empty($idstr)) {
+            if ($idstr !== false) {
                 $ids = explode(',', $idstr);
             } else {
                 $ids = $this->_repeatStreamDirect(100);
diff --git a/classes/Notice_inbox.php b/classes/Notice_inbox.php
new file mode 100644 (file)
index 0000000..6c328e6
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
+
+// We keep 5 pages of inbox notices in memcache, +1 for pagination check
+
+define('INBOX_CACHE_WINDOW', 101);
+define('NOTICE_INBOX_GC_BOXCAR', 128);
+define('NOTICE_INBOX_GC_MAX', 12800);
+define('NOTICE_INBOX_LIMIT', 1000);
+define('NOTICE_INBOX_SOFT_LIMIT', 1000);
+
+define('NOTICE_INBOX_SOURCE_SUB', 1);
+define('NOTICE_INBOX_SOURCE_GROUP', 2);
+define('NOTICE_INBOX_SOURCE_REPLY', 3);
+define('NOTICE_INBOX_SOURCE_FORWARD', 4);
+define('NOTICE_INBOX_SOURCE_GATEWAY', -1);
+
+class Notice_inbox extends Memcached_DataObject
+{
+    ###START_AUTOCODE
+    /* the code below is auto generated do not remove the above tag */
+
+    public $__table = 'notice_inbox';                    // table name
+    public $user_id;                         // int(4)  primary_key not_null
+    public $notice_id;                       // int(4)  primary_key not_null
+    public $created;                         // datetime()   not_null
+    public $source;                          // tinyint(1)   default_1
+
+    /* Static get */
+    function staticGet($k,$v=null)
+    { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); }
+
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
+
+    function stream($user_id, $offset, $limit, $since_id, $max_id, $since, $own=false)
+    {
+        throw new Exception('Notice_inbox no longer used; use Inbox');
+    }
+
+    function _streamDirect($user_id, $own, $offset, $limit, $since_id, $max_id, $since)
+    {
+        throw new Exception('Notice_inbox no longer used; use Inbox');
+    }
+
+    function &pkeyGet($kv)
+    {
+        return Memcached_DataObject::pkeyGet('Notice_inbox', $kv);
+    }
+
+    static function gc($user_id)
+    {
+        throw new Exception('Notice_inbox no longer used; use Inbox');
+    }
+
+    static function deleteMatching($user_id, $notices)
+    {
+        throw new Exception('Notice_inbox no longer used; use Inbox');
+    }
+
+    static function bulkInsert($notice_id, $created, $ni)
+    {
+        throw new Exception('Notice_inbox no longer used; use Inbox');
+    }
+}
index 02740280f5d402f959e9889303bcf847cd7091d7..79231f0b0c0777749c09cf91da451192ed55cb2f 100644 (file)
@@ -96,7 +96,7 @@ class Notice_tag extends Memcached_DataObject
         }
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Notice_tag', $kv);
     }
index 03196447b891e31ef5b09e7af9d97b6942cf24dd..25d908dbf93c22c1a24fb41cbd5a204d2478e825 100644 (file)
@@ -504,6 +504,7 @@ class Profile extends Memcached_DataObject
                          'Reply',
                          'Group_member',
                          );
+        Event::handle('ProfileDeleteRelated', array($this, &$related));
 
         foreach ($related as $cls) {
             $inst = new $cls();
index afa7fb74e49e0e5902c725fd3af246d0c2077b57..74aca3730501777d5ef9d8afdc8e05b91a90caf4 100644 (file)
@@ -43,7 +43,7 @@ class Profile_role extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Profile_role', $kv);
     }
index 295c321b57d4615fa5a139b9e14b9752fd19a4e3..9c673540d746a6a25d55a62ba6fffbe8d8b17b46 100644 (file)
@@ -55,7 +55,7 @@ class Queue_item extends Memcached_DataObject
         return null;
     }
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Queue_item', $kv);
     }
index fedfd5f19eeec5212a898fb967a00371dd23f56a..faf1331cda11565eec0655ea4a266079ceca0618 100644 (file)
@@ -46,7 +46,7 @@ class Subscription extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
     
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Subscription', $kv);
     }
index 52cb254badc46f7d7791a1683eebb71c494a2761..bd6029f97cbc374aa09e6735223283ac310e2159 100644 (file)
@@ -45,4 +45,9 @@ class User_location_prefs extends Memcached_DataObject
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
+
+    function sequenceKey()
+    {
+        return array(false, false, false);
+    }
 }
diff --git a/classes/User_username.php b/classes/User_username.php
new file mode 100644 (file)
index 0000000..853fd5c
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Table Definition for user_username
+ */
+require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
+
+class User_username extends Memcached_DataObject
+{
+    ###START_AUTOCODE
+    /* the code below is auto generated do not remove the above tag */
+
+    public $__table = 'user_username';                     // table name
+    public $user_id;                        // int(4)  not_null
+    public $provider_name;                  // varchar(255)  primary_key not_null
+    public $username;                       // varchar(255)  primary_key not_null
+    public $created;                        // datetime()   not_null
+    public $modified;                       // timestamp()   not_null default_CURRENT_TIMESTAMP
+
+    /* Static get */
+    function staticGet($k,$v=null)
+    { return Memcached_DataObject::staticGet('User_username',$k,$v); }
+
+    /* the code above is auto generated do not remove the tag below */
+    ###END_AUTOCODE
+
+    /**
+    * Register a user with a username on a given provider
+    * @param User User object
+    * @param string username on the given provider
+    * @param provider_name string name of the provider
+    * @return mixed User_username instance if the registration succeeded, false if it did not
+    */
+    static function register($user, $username, $provider_name)
+    {
+        $user_username = new User_username();
+        $user_username->user_id = $user->id;
+        $user_username->provider_name = $provider_name;
+        $user_username->username = $username;
+        $user_username->created = DB_DataObject_Cast::dateTime();
+        if($user_username->insert()){
+            return $user_username;
+        }else{
+            return false;
+        }
+    }
+
+    function table() {
+        return array(
+            'user_id'     => DB_DATAOBJECT_INT,
+            'username'   => DB_DATAOBJECT_STR,
+            'provider_name'   => DB_DATAOBJECT_STR ,
+            'created'   => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
+        );
+    }
+
+    // now define the keys.
+    function keys() {
+        return array('provider_name', 'username');
+    }
+
+}
index e4c6740abe07b2cbdbe9fe9528b6138569d8d000..73727a6d6a6447ded0aa6e80af5b84309c2c630f 100644 (file)
@@ -92,6 +92,7 @@ modified = 384
 
 [file__keys]
 id = N
+url = U
 
 [file_oembed]
 file_id = 129
@@ -579,5 +580,5 @@ created = 142
 modified = 384
 
 [user_location_prefs__keys]
-user_id = U
+user_id = K
 
index 91e6614c0659ca404a7ebca0e712c2371a7510ed..b8852dc672f3b755b3e715b2df1969e825e85168 100644 (file)
@@ -41,6 +41,20 @@ $config['site']['path'] = 'statusnet';
 // Make the site invisible to  non-logged-in users
 // $config['site']['private'] = true;
 
+// If your web server supports X-Sendfile (Apache with mod_xsendfile,
+// lighttpd, nginx), you can enable X-Sendfile support for better
+// performance. Presently, only attachment serving when the site is
+// in private mode will use X-Sendfile.
+// $config['site']['X-Sendfile'] = false;
+// You may also need to enable X-Sendfile support for your web server and
+// allow it to access files outside of the web root. For Apache with
+// mod_xsendfile, you can add these to your .htaccess or server config:
+//
+//       XSendFile on
+//       XSendFileAllowAbove on
+//
+// See http://tn123.ath.cx/mod_xsendfile/ for mod_xsendfile.
+
 // If you want logging sent to a file instead of syslog
 // $config['site']['logfile'] = '/tmp/statusnet.log';
 
@@ -265,6 +279,7 @@ $config['sphinx']['port'] = 3312;
 // $config['attachments']['user_quota'] = 50000000;
 // $config['attachments']['monthly_quota'] = 15000000;
 // $config['attachments']['uploads'] = true;
-// $config['attachments']['path'] = "/file/";
+// $config['attachments']['path'] = "/file/"; //ignored if site is private
+// $config['attachments']['dir'] = INSTALLDIR . '/file/';
 
 // $config['oohembed']['endpoint'] = 'http://oohembed.com/oohembed/';
diff --git a/extlib/lgpl-2.1.txt b/extlib/lgpl-2.1.txt
new file mode 100644 (file)
index 0000000..3b473db
--- /dev/null
@@ -0,0 +1,458 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
index 91ae9da9be19b7613abb596b85a015be947ab59b..37eb8e01ec01f1169159a1b920c265c00b9bfdc2 100644 (file)
@@ -5,14 +5,6 @@
 
   RewriteBase /mublog/
 
-  # If your site is private and want to only allow logged-in users to
-  # be able to download file attachments, uncomment this rule.
-  #
-  # If you have a custom attachment path
-  # ($config['attachments']['path']), change "file/" to match.
-  #
-  #RewriteRule ^file/(.*) getfile/$1
-
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule (.*) index.php?p=$1 [L,QSA]
index 1c62bb2b21659efee149854a27c9e70a86899162..435f6d63bf4ffe22f43045568b22cadc92ec0039 100644 (file)
@@ -454,7 +454,6 @@ function showForm()
     <dd>
         <div class="instructions">
             <p>Enter your database connection information below to initialize the database.</p>
-            <p>StatusNet bundles a number of libraries for ease of installation. <a href="?checklibs=true">You can see what bundled libraries you are using, versus what libraries are installed on your server.</a>
         </div>
     </dd>
 </dl>
diff --git a/js/jquery.cookie.js b/js/jquery.cookie.js
new file mode 100644 (file)
index 0000000..6df1fac
--- /dev/null
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ *       used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
+ *                             when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ *                        require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+    if (typeof value != 'undefined') { // name and value given, set cookie
+        options = options || {};
+        if (value === null) {
+            value = '';
+            options.expires = -1;
+        }
+        var expires = '';
+        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+            var date;
+            if (typeof options.expires == 'number') {
+                date = new Date();
+                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+            } else {
+                date = options.expires;
+            }
+            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+        }
+        // CAUTION: Needed to parenthesize options.path and options.domain
+        // in the following expressions, otherwise they evaluate to undefined
+        // in the packed version for some reason...
+        var path = options.path ? '; path=' + (options.path) : '';
+        var domain = options.domain ? '; domain=' + (options.domain) : '';
+        var secure = options.secure ? '; secure' : '';
+        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+    } else { // only name given, get cookie
+        var cookieValue = null;
+        if (document.cookie && document.cookie != '') {
+            var cookies = document.cookie.split(';');
+            for (var i = 0; i < cookies.length; i++) {
+                var cookie = jQuery.trim(cookies[i]);
+                // Does this cookie string begin with the name we want?
+                if (cookie.substring(0, name.length + 1) == (name + '=')) {
+                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+                    break;
+                }
+            }
+        }
+        return cookieValue;
+    }
+};
\ No newline at end of file
diff --git a/js/json2.js b/js/json2.js
new file mode 100644 (file)
index 0000000..ecd5e95
--- /dev/null
@@ -0,0 +1,4 @@
+/*
+http://www.JSON.org/json2.js minified
+*/
+if(!this.JSON){JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());
index 0987c6cc03b7b12bfb48f3cc7922e04c888da104..0314668d9d753117182db9b0075d02978116bf8e 100644 (file)
@@ -50,7 +50,11 @@ var SN = { // StatusNet
             NoticeLat: 'notice_data-lat',
             NoticeLon: 'notice_data-lon',
             NoticeLocationId: 'notice_data-location_id',
-            NoticeLocationNs: 'notice_data-location_ns'
+            NoticeLocationNs: 'notice_data-location_ns',
+            NoticeGeoName: 'notice_data-geo_name',
+            NoticeDataGeo: 'notice_data-geo',
+            NoticeDataGeoCookie: 'notice_data-geo_cookie',
+            NoticeDataGeoSelected: 'notice_data-geo_selected'
         }
     },
 
@@ -174,12 +178,13 @@ var SN = { // StatusNet
         },
 
         FormNoticeXHR: function(form) {
+            var NDG, NLat, NLon, NLNS, NLID;
             form_id = form.attr('id');
             form.append('<input type="hidden" name="ajax" value="1"/>');
             form.ajaxForm({
                 dataType: 'xml',
                 timeout: '60000',
-                beforeSend: function(xhr) {
+                beforeSend: function(formData) {
                     if ($('#'+form_id+' #'+SN.C.S.NoticeDataText)[0].value.length === 0) {
                         form.addClass(SN.C.S.Warning);
                         return false;
@@ -187,6 +192,29 @@ var SN = { // StatusNet
                     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');
+
+                    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();
+                        NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
+                        NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
+                    }
+                    if (cookieValue == 'disabled') {
+                        NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
+                    }
+                    else {
+                        NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
+                    }
+
                     return true;
                 },
                 error: function (xhr, textStatus, errorThrown) {
@@ -269,6 +297,12 @@ var SN = { // StatusNet
                     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);
+                    $('#'+SN.C.S.NoticeLocationNs).val(NLNS);
+                    $('#'+SN.C.S.NoticeLocationId).val(NLID);
+                    $('#'+SN.C.S.NoticeDataGeo).attr('checked', NDG);
                 }
             });
         },
@@ -431,15 +465,228 @@ var SN = { // StatusNet
                 $('#'+SN.C.S.NoticeDataAttachSelected+' button').click(function(){
                     $('#'+SN.C.S.NoticeDataAttachSelected).remove();
                     NDA.val('');
+
+                    return false;
                 });
             });
         },
 
         NoticeLocationAttach: function() {
-            if(navigator.geolocation) navigator.geolocation.watchPosition(function(position) {
-                $('#'+SN.C.S.NoticeLat).val(position.coords.latitude);
-                $('#'+SN.C.S.NoticeLon).val(position.coords.longitude);
-            });
+            var NLat = $('#'+SN.C.S.NoticeLat).val();
+            var NLon = $('#'+SN.C.S.NoticeLon).val();
+            var NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
+            var NLID = $('#'+SN.C.S.NoticeLocationId).val();
+            var NLN = $('#'+SN.C.S.NoticeGeoName).text();
+            var NDGe = $('#'+SN.C.S.NoticeDataGeo);
+
+            function removeNoticeDataGeo() {
+                $('label[for='+SN.C.S.NoticeDataGeo+']').removeClass('checked').attr('title', jQuery.trim($('label[for='+SN.C.S.NoticeDataGeo+']').text()));
+                $('#'+SN.C.S.NoticeDataGeoSelected).hide();
+
+                $('#'+SN.C.S.NoticeLat).val('');
+                $('#'+SN.C.S.NoticeLon).val('');
+                $('#'+SN.C.S.NoticeLocationNs).val('');
+                $('#'+SN.C.S.NoticeLocationId).val('');
+                $('#'+SN.C.S.NoticeDataGeo).attr('checked', false);
+
+                $.cookie(SN.C.S.NoticeDataGeoCookie, 'disabled');
+            }
+
+            function getJSONgeocodeURL(geocodeURL, data) {
+                $.getJSON(geocodeURL, data, function(location) {
+                    var lns, lid;
+
+                    if (typeof(location.location_ns) != 'undefined') {
+                        $('#'+SN.C.S.NoticeLocationNs).val(location.location_ns);
+                        lns = location.location_ns;
+                    }
+
+                    if (typeof(location.location_id) != 'undefined') {
+                        $('#'+SN.C.S.NoticeLocationId).val(location.location_id);
+                        lid = location.location_id;
+                    }
+
+                    if (typeof(location.name) == 'undefined') {
+                        NLN_text = position.coords.latitude + ';' + position.coords.longitude;
+                    }
+                    else {
+                        NLN_text = location.name;
+                    }
+
+                    $('#'+SN.C.S.NoticeGeoName)
+                        .replaceWith('<a id="notice_data-geo_name"/>');
+
+                    $('#'+SN.C.S.NoticeGeoName)
+                        .attr('href', location.url)
+                        .text(NLN_text)
+                        .click(function() {
+                            window.open(location.url);
+
+                            return false;
+                        });
+
+                    $('#'+SN.C.S.NoticeLat).val(data.lat);
+                    $('#'+SN.C.S.NoticeLon).val(data.lon);
+                    $('#'+SN.C.S.NoticeLocationNs).val(lns);
+                    $('#'+SN.C.S.NoticeLocationId).val(lid);
+                    $('#'+SN.C.S.NoticeDataGeo).attr('checked', true);
+
+                    var cookieValue = {
+                        'NLat': data.lat,
+                        'NLon': data.lon,
+                        'NLNS': lns,
+                        'NLID': lid,
+                        'NLN': NLN_text,
+                        'NLNU': location.url,
+                        'NDG': true,
+                        'NDGSM': false
+                    };
+                    $.cookie(SN.C.S.NoticeDataGeoCookie, JSON.stringify(cookieValue));
+                });
+            }
+
+            if (NDGe.length > 0) {
+                if ($.cookie(SN.C.S.NoticeDataGeoCookie) == 'disabled') {
+                    NDGe.attr('checked', false);
+                }
+                else {
+                    NDGe.attr('checked', true);
+                }
+
+                var NGW = $('#notice_data-geo_wrap');
+                var geocodeURL = NGW.attr('title');
+                NGW.removeAttr('title');
+
+                $('label[for='+SN.C.S.NoticeDataGeo+']').attr('title', jQuery.trim($('label[for='+SN.C.S.NoticeDataGeo+']').text()));
+
+                NDGe.change(function() {
+                    var NLN = $('#'+SN.C.S.NoticeGeoName);
+                    if (NLN.length > 0) {
+                        NLN.remove();
+                    }
+
+                    if ($('#'+SN.C.S.NoticeDataGeo).attr('checked') === true || $.cookie(SN.C.S.NoticeDataGeoCookie) === null) {
+                        $('label[for='+SN.C.S.NoticeDataGeo+']').addClass('checked').attr('title', NoticeDataGeoShareDisable_text);
+
+                        var S = '<div id="'+SN.C.S.NoticeDataGeoSelected+'" class="'+SN.C.S.Success+'"/>';
+                        var NDGS = $('#'+SN.C.S.NoticeDataGeoSelected);
+
+                        if (NDGS.length > 0) {
+                            NDGS.replaceWith(S);
+                        }
+                        else {
+                            $('#'+SN.C.S.FormNotice).append(S);
+                        }
+
+                        NDGS = $('#'+SN.C.S.NoticeDataGeoSelected);
+                        NDGS.prepend('<span id="'+SN.C.S.NoticeGeoName+'">Geo</span> <button class="minimize" title="'+NoticeDataGeoInfoMinimize_text+'">&#95;</button> <button class="close" title="'+NoticeDataGeoShareDisable_text+'">&#215;</button>');
+
+                        var NLN = $('#'+SN.C.S.NoticeGeoName);
+                        NLN.addClass('processing');
+
+                        $('#'+SN.C.S.NoticeDataGeoSelected+' button.close').click(function(){
+                            removeNoticeDataGeo();
+
+                            $('#'+SN.C.S.NoticeDataGeoSelected).remove();
+
+                            $('#'+SN.C.S.NoticeDataText).focus();
+
+                            return false;
+                        });
+
+                        $('#'+SN.C.S.NoticeDataGeoSelected+' button.minimize').click(function(){
+                            $('#'+SN.C.S.NoticeDataGeoSelected).hide();
+
+                            var cookieValue = {
+                                'NLat': $('#'+SN.C.S.NoticeLat).val(),
+                                'NLon': $('#'+SN.C.S.NoticeLat).val(),
+                                'NLNS': $('#'+SN.C.S.NoticeLocationNs).val(),
+                                'NLID': $('#'+SN.C.S.NoticeLocationId).val(),
+                                'NLN': $('#'+SN.C.S.NoticeGeoName).text(),
+                                'NLNU': $('#'+SN.C.S.NoticeGeoName).attr('href'),
+                                'NDG': true,
+                                'NDGSM': true
+                            };
+                            $.cookie(SN.C.S.NoticeDataGeoCookie, JSON.stringify(cookieValue));
+
+                            $('#'+SN.C.S.NoticeDataText).focus();
+
+                            return false;
+                        });
+
+                        if ($.cookie(SN.C.S.NoticeDataGeoCookie) === null || $.cookie(SN.C.S.NoticeDataGeoCookie) == 'disabled') {
+                            if (navigator.geolocation) {
+                                navigator.geolocation.getCurrentPosition(
+                                    function(position) {
+                                        $('#'+SN.C.S.NoticeLat).val(position.coords.latitude);
+                                        $('#'+SN.C.S.NoticeLon).val(position.coords.longitude);
+
+                                        var data = {
+                                            'lat': position.coords.latitude,
+                                            'lon': position.coords.longitude,
+                                            'token': $('#token').val()
+                                        };
+
+                                        getJSONgeocodeURL(geocodeURL, data);
+                                    },
+
+                                    function(error) {
+                                        if (error.PERMISSION_DENIED == 1) {
+                                            removeNoticeDataGeo();
+                                        }
+                                    }
+                                );
+                            }
+                            else {
+                                if (NLat.length > 0 && NLon.length > 0) {
+                                    var data = {
+                                        'lat': NLat,
+                                        'lon': NLon,
+                                        'token': $('#token').val()
+                                    };
+
+                                    getJSONgeocodeURL(geocodeURL, data);
+                                }
+                                else {
+                                    removeNoticeDataGeo();
+                                    $('#'+SN.C.S.NoticeDataGeo).remove();
+                                    $('label[for='+SN.C.S.NoticeDataGeo+']').remove();
+                                }
+                            }
+                        }
+                        else {
+                            var cookieValue = JSON.parse($.cookie(SN.C.S.NoticeDataGeoCookie));
+
+                            if (cookieValue.NDGSM === true) {
+                                $('#'+SN.C.S.NoticeDataGeoSelected).hide();
+                            }
+
+                            $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat);
+                            $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon);
+                            $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS);
+                            $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID);
+                            $('#'+SN.C.S.NoticeDataGeo).attr('checked', cookieValue.NDG);
+
+                            $('#'+SN.C.S.NoticeGeoName)
+                                .replaceWith('<a id="notice_data-geo_name"/>');
+
+                            $('#'+SN.C.S.NoticeGeoName)
+                                .attr('href', cookieValue.NLNU)
+                                .text(cookieValue.NLN)
+                                .click(function() {
+                                    window.open($(this).attr('href'));
+
+                                    return false;
+                                });
+                        }
+                    }
+                    else {
+                        removeNoticeDataGeo();
+                    }
+
+                    $('#'+SN.C.S.NoticeDataText).focus();
+                }).change();
+            }
         },
 
         NewDirectMessage: function() {
@@ -474,13 +721,14 @@ var SN = { // StatusNet
     Init: {
         NoticeForm: function() {
             if ($('body.user_in').length > 0) {
+                SN.U.NoticeLocationAttach();
+
                 $('.'+SN.C.S.FormNotice).each(function() {
                     SN.U.FormNoticeXHR($(this));
                     SN.U.FormNoticeEnhancements($(this));
                 });
 
                 SN.U.NoticeDataAttach();
-                SN.U.NoticeLocationAttach();
             }
         },
 
index dac0e2583c42cf86148e55a155fcb76e3eefc808..1b4cb5cecb660b3b0d9886ea24130dd0d08492f0 100644 (file)
@@ -252,6 +252,8 @@ class Action extends HTMLOutputter // lawsuit
             if (Event::handle('StartShowJQueryScripts', array($this))) {
                 $this->script('js/jquery.min.js');
                 $this->script('js/jquery.form.js');
+                $this->script('js/jquery.cookie.js');
+                $this->script('js/json2.js');
                 $this->script('js/jquery.joverlay.min.js');
                 Event::handle('EndShowJQueryScripts', array($this));
             }
@@ -735,6 +737,8 @@ class Action extends HTMLOutputter // lawsuit
                             _('Privacy'));
             $this->menuItem(common_local_url('doc', array('title' => 'source')),
                             _('Source'));
+            $this->menuItem(common_local_url('version'),
+                            _('Version'));
             $this->menuItem(common_local_url('doc', array('title' => 'contact')),
                             _('Contact'));
             $this->menuItem(common_local_url('doc', array('title' => 'badge')),
index 7997eb2b1f4b13a7db84f7c78fd3af07d0c44527..a6981ac6117d703128a9f9a03ff06dfe36e55499 100644 (file)
@@ -70,7 +70,7 @@ class AdminPanelAction extends Action
 
         if (!common_logged_in()) {
             $this->clientError(_('Not logged in.'));
-            return;
+            return false;
         }
 
         $user = common_current_user();
@@ -94,7 +94,18 @@ class AdminPanelAction extends Action
 
         if (!$user->hasRight(Right::CONFIGURESITE)) {
             $this->clientError(_('You cannot make changes to this site.'));
-            return;
+            return false;
+        }
+
+        // This panel must be enabled
+
+        $name = $this->trimmed('action');
+
+        $name = mb_substr($name, 0, -10);
+
+        if (!in_array($name, common_config('admin', 'panels'))) {
+            $this->clientError(_('Changes to that panel are not allowed.'), 403);
+            return false;
         }
 
         return true;
@@ -224,7 +235,7 @@ class AdminPanelAction extends Action
         $this->clientError(_('saveSettings() not implemented.'));
         return;
     }
-    
+
     /**
      * Delete a design setting
      *
@@ -296,20 +307,33 @@ class AdminPanelNav extends Widget
 
         if (Event::handle('StartAdminPanelNav', array($this))) {
 
-            $this->out->menuItem(common_local_url('siteadminpanel'), _('Site'),
-                _('Basic site configuration'), $action_name == 'siteadminpanel', 'nav_site_admin_panel');
+            if ($this->canAdmin('site')) {
+                $this->out->menuItem(common_local_url('siteadminpanel'), _('Site'),
+                                     _('Basic site configuration'), $action_name == 'siteadminpanel', 'nav_site_admin_panel');
+            }
 
-            $this->out->menuItem(common_local_url('designadminpanel'), _('Design'),
-                _('Design configuration'), $action_name == 'designadminpanel', 'nav_design_admin_panel');
+            if ($this->canAdmin('design')) {
+                $this->out->menuItem(common_local_url('designadminpanel'), _('Design'),
+                                     _('Design configuration'), $action_name == 'designadminpanel', 'nav_design_admin_panel');
+            }
 
-            $this->out->menuItem(common_local_url('useradminpanel'), _('User'),
-                _('Paths configuration'), $action_name == 'useradminpanel', 'nav_design_admin_panel');
+            if ($this->canAdmin('user')) {
+                $this->out->menuItem(common_local_url('useradminpanel'), _('User'),
+                                     _('Paths configuration'), $action_name == 'useradminpanel', 'nav_design_admin_panel');
+            }
 
-            $this->out->menuItem(common_local_url('pathsadminpanel'), _('Paths'),
-                _('Paths configuration'), $action_name == 'pathsadminpanel', 'nav_design_admin_panel');
+            if ($this->canAdmin('paths')) {
+                $this->out->menuItem(common_local_url('pathsadminpanel'), _('Paths'),
+                                     _('Paths configuration'), $action_name == 'pathsadminpanel', 'nav_design_admin_panel');
+            }
 
             Event::handle('EndAdminPanelNav', array($this));
         }
         $this->action->elementEnd('ul');
     }
+
+    function canAdmin($name)
+    {
+        return in_array($name, common_config('admin', 'panels'));
+    }
 }
diff --git a/lib/authenticationplugin.php b/lib/authenticationplugin.php
new file mode 100644 (file)
index 0000000..de479a5
--- /dev/null
@@ -0,0 +1,231 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Superclass for plugins that do authentication and/or authorization
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   StatusNet
+ * @author    Craig Andrews <candrews@integralblue.com>
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Superclass for plugins that do authentication
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Craig Andrews <candrews@integralblue.com>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+abstract class AuthenticationPlugin extends Plugin
+{
+    //is this plugin authoritative for authentication?
+    public $authoritative = false;
+    
+    //should accounts be automatically created after a successful login attempt?
+    public $autoregistration = false;
+
+    //can the user change their email address
+    public $password_changeable=true;
+
+    //unique name for this authentication provider
+    public $provider_name;
+
+    //------------Auth plugin should implement some (or all) of these methods------------\\
+    /**
+    * Check if a nickname/password combination is valid
+    * @param username
+    * @param password
+    * @return boolean true if the credentials are valid, false if they are invalid.
+    */
+    function checkPassword($username, $password)
+    {
+        return false;
+    }
+
+    /**
+    * Automatically register a user when they attempt to login with valid credentials.
+    * User::register($data) is a very useful method for this implementation
+    * @param username
+    * @return mixed instance of User, or false (if user couldn't be created)
+    */
+    function autoRegister($username)
+    {
+        $registration_data = array();
+        $registration_data['nickname'] = $username ;
+        return User::register($registration_data);
+    }
+
+    /**
+    * Change a user's password
+    * The old password has been verified to be valid by this plugin before this call is made
+    * @param username
+    * @param oldpassword
+    * @param newpassword
+    * @return boolean true if the password was changed, false if password changing failed for some reason
+    */
+    function changePassword($username,$oldpassword,$newpassword)
+    {
+        return false;
+    }
+
+    //------------Below are the methods that connect StatusNet to the implementing Auth plugin------------\\
+    function onInitializePlugin(){
+        if(!isset($this->provider_name)){
+            throw new Exception("must specify a provider_name for this authentication provider");
+        }
+    }
+
+    /**
+    * Internal AutoRegister event handler
+    * @param nickname
+    * @param provider_name
+    * @param user - the newly registered user
+    */
+    function onAutoRegister($nickname, $provider_name, &$user)
+    {
+        if($provider_name == $this->provider_name && $this->autoregistration){
+            $user = $this->autoregister($nickname);
+            if($user){
+                User_username::register($user,$nickname,$this->provider_name);
+                return false;
+            }
+        }
+    }
+
+    function onStartCheckPassword($nickname, $password, &$authenticatedUser){
+        //map the nickname to a username
+        $user_username = new User_username();
+        $user_username->username=$nickname;
+        $user_username->provider_name=$this->provider_name;
+        if($user_username->find() && $user_username->fetch()){
+            $username = $user_username->username;
+            $authenticated = $this->checkPassword($username, $password);
+            if($authenticated){
+                $authenticatedUser = User::staticGet('id', $user_username->user_id);
+                return false;
+            }
+        }else{
+            $user = User::staticGet('nickname', $nickname);
+            if($user){
+                //make sure a different provider isn't handling this nickname
+                $user_username = new User_username();
+                $user_username->username=$nickname;
+                if(!$user_username->find()){
+                    //no other provider claims this username, so it's safe for us to handle it
+                    $authenticated = $this->checkPassword($nickname, $password);
+                    if($authenticated){
+                        $authenticatedUser = User::staticGet('nickname', $nickname);
+                        User_username::register($authenticatedUser,$nickname,$this->provider_name);
+                        return false;
+                    }
+                }
+            }else{
+                $authenticated = $this->checkPassword($nickname, $password);
+                if($authenticated){
+                    if(! Event::handle('AutoRegister', array($nickname, $this->provider_name, &$authenticatedUser))){
+                        //unlike most Event::handle lines of code, this one has a ! (not)
+                        //we want to do this if the event *was* handled - this isn't a "default" implementation
+                        //like most code of this form.
+                        if($authenticatedUser){
+                            return false;
+                        }
+                    }
+                }
+            }
+        }
+        if($this->authoritative){
+            return false;
+        }else{
+            //we're not authoritative, so let other handlers try
+            return;
+        }
+    }
+
+    function onStartChangePassword($user,$oldpassword,$newpassword)
+    {
+        if($this->password_changeable){
+            $user_username = new User_username();
+            $user_username->user_id=$user->id;
+            $user_username->provider_name=$this->provider_name;
+            if($user_username->find() && $user_username->fetch()){
+                $authenticated = $this->checkPassword($user_username->username, $oldpassword);
+                if($authenticated){
+                    $result = $this->changePassword($user_username->username,$oldpassword,$newpassword);
+                    if($result){
+                        //stop handling of other handlers, because what was requested was done
+                        return false;
+                    }else{
+                        throw new Exception(_('Password changing failed'));
+                    }
+                }else{
+                    if($this->authoritative){
+                        //since we're authoritative, no other plugin could do this
+                        throw new Exception(_('Password changing failed'));
+                    }else{
+                        //let another handler try
+                        return null;
+                    }
+                }
+            }
+        }else{
+            if($this->authoritative){
+                //since we're authoritative, no other plugin could do this
+                throw new Exception(_('Password changing is not allowed'));
+            }
+        }
+    }
+
+    function onStartAccountSettingsPasswordMenuItem($widget)
+    {
+        if($this->authoritative && !$this->password_changeable){
+            //since we're authoritative, no other plugin could change passwords, so do not render the menu item
+            return false;
+        }
+    }
+
+    function onCheckSchema() {
+        $schema = Schema::get();
+        $schema->ensureTable('user_username',
+                             array(new ColumnDef('provider_name', 'varchar',
+                                                 '255', false, 'PRI'),
+                                   new ColumnDef('username', 'varchar',
+                                                 '255', false, 'PRI'),
+                                   new ColumnDef('user_id', 'integer',
+                                                 null, false),
+                                   new ColumnDef('created', 'datetime',
+                                                 null, false),
+                                   new ColumnDef('modified', 'timestamp')));
+        return true;
+    }
+
+    function onUserDeleteRelated($user, &$tables)
+    {
+        $tables[] = 'User_username';
+        return true;
+    }
+}
+
diff --git a/lib/authorizationplugin.php b/lib/authorizationplugin.php
new file mode 100644 (file)
index 0000000..733b0c0
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Superclass for plugins that do authorization
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   StatusNet
+ * @author    Craig Andrews <candrews@integralblue.com>
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Superclass for plugins that do authorization
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Craig Andrews <candrews@integralblue.com>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+abstract class AuthorizationPlugin extends Plugin
+{
+    //is this plugin authoritative for authorization?
+    public $authoritative = false;
+
+    //------------Auth plugin should implement some (or all) of these methods------------\\
+
+    /**
+    * Is a user allowed to log in?
+    * @param user
+    * @return boolean true if the user is allowed to login, false if explicitly not allowed to login, null if we don't explicitly allow or deny login
+    */
+    function loginAllowed($user) {
+        return null;
+    }
+
+    /**
+    * Does a profile grant the user a named role?
+    * @param profile
+    * @return boolean true if the profile has the role, false if not
+    */
+    function hasRole($profile, $name) {
+        return false;
+    }
+
+    //------------Below are the methods that connect StatusNet to the implementing Auth plugin------------\\
+
+    function onStartSetUser(&$user) {
+        $loginAllowed = $this->loginAllowed($user);
+        if($loginAllowed === true){
+            return;
+        }else if($loginAllowed === false){
+            $user = null;
+            return false;
+        }else{
+            if($this->authoritative) {
+                $user = null;
+                return false;
+            }else{
+                return;
+            }
+        }
+    }
+
+    function onStartSetApiUser(&$user) {
+        return $this->onStartSetUser(&$user);
+    }
+
+    function onStartHasRole($profile, $name, &$has_role) {
+        if($this->hasRole($profile, $name)){
+            $has_role = true;
+            return false;
+        }else{
+            if($this->authoritative) {
+                $has_role = false;
+                return false;
+            }else{
+                return;
+            }
+        }
+    }
+}
+
diff --git a/lib/cache.php b/lib/cache.php
new file mode 100644 (file)
index 0000000..b7b34c0
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Cache interface plus default in-memory cache implementation
+ *
+ * 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  Cache
+ * @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/
+ */
+
+/**
+ * Interface for caching
+ *
+ * An abstract interface for caching. Because we originally used the
+ * Memcache plugin directly, the interface uses a small subset of the
+ * Memcache interface.
+ *
+ * @category  Cache
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+class Cache
+{
+    var $_items   = array();
+    static $_inst = null;
+
+    /**
+     * Singleton constructor
+     *
+     * Use this to get the singleton instance of Cache.
+     *
+     * @return Cache cache object
+     */
+
+    static function instance()
+    {
+        if (is_null(self::$_inst)) {
+            self::$_inst = new Cache();
+        }
+
+        return self::$_inst;
+    }
+
+    /**
+     * Create a cache key from input text
+     *
+     * Builds a cache key from input text. Helps to namespace
+     * the cache area (if shared with other applications or sites)
+     * and prevent conflicts.
+     *
+     * @param string $extra the real part of the key
+     *
+     * @return string full key
+     */
+
+    static function key($extra)
+    {
+        $base_key = common_config('cache', 'base');
+
+        if (empty($base_key)) {
+            $base_key = common_keyize(common_config('site', 'name'));
+        }
+
+        return 'statusnet:' . $base_key . ':' . $extra;
+    }
+
+    /**
+     * Make a string suitable for use as a key
+     *
+     * Useful for turning primary keys of tables into cache keys.
+     *
+     * @param string $str string to turn into a key
+     *
+     * @return string keyized string
+     */
+
+    static function keyize($str)
+    {
+        $str = strtolower($str);
+        $str = preg_replace('/\s/', '_', $str);
+        return $str;
+    }
+
+    /**
+     * Get a value associated with a key
+     *
+     * The value should have been set previously.
+     *
+     * @param string $key Lookup key
+     *
+     * @return string retrieved value or null if unfound
+     */
+
+    function get($key)
+    {
+        $value = false;
+
+        if (Event::handle('StartCacheGet', array(&$key, &$value))) {
+            if (array_key_exists($key, $this->_items)) {
+                $value = unserialize($this->_items[$key]);
+            }
+            Event::handle('EndCacheGet', array($key, &$value));
+        }
+
+        return $value;
+    }
+
+    /**
+     * Set the value associated with a key
+     *
+     * @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 $expiry Expiry value, mostly ignored
+     *
+     * @return boolean success flag
+     */
+
+    function set($key, $value, $flag=null, $expiry=null)
+    {
+        $success = false;
+
+        if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
+                                                 &$expiry, &$success))) {
+
+            $this->_items[$key] = serialize($value);
+
+            $success = true;
+
+            Event::handle('EndCacheSet', array($key, $value, $flag,
+                                               $expiry));
+        }
+
+        return $success;
+    }
+
+    /**
+     * Delete the value associated with a key
+     *
+     * @param string $key Key to delete
+     *
+     * @return boolean success flag
+     */
+
+    function delete($key)
+    {
+        $success = false;
+
+        if (Event::handle('StartCacheDelete', array(&$key, &$success))) {
+            if (array_key_exists($key, $this->_items)) {
+                unset($this->_items[$key]);
+            }
+            $success = true;
+            Event::handle('EndCacheDelete', array($key));
+        }
+
+        return $success;
+    }
+}
index 1bae6b33bbfa251fd1166839aafe44fef94e6f25..ac2fcd23eaaed3f91ff407fcfcbd8e6bb88500ed 100644 (file)
@@ -74,6 +74,7 @@ class ColumnDef
      * @param string  $key      type of key
      * @param value   $default  default value
      * @param value   $extra    unused
+     * @param boolean $auto_increment
      */
 
     function __construct($name=null, $type=null, $size=null,
index 7fa1910af86cd78870c2847fdf2479019f837f1c..fb5e5919e054037de16f4c499ef2cd83b3f0be96 100644 (file)
@@ -210,6 +210,18 @@ if ($_db_name != 'statusnet' && !array_key_exists('ini_'.$_db_name, $config['db'
     $config['db']['ini_'.$_db_name] = INSTALLDIR.'/classes/statusnet.ini';
 }
 
+// Backwards compatibility
+
+if (array_key_exists('memcached', $config)) {
+    if ($config['memcached']['enabled']) {
+        addPlugin('Memcache', array('servers' => $config['memcached']['server']));
+    }
+
+    if (!empty($config['memcached']['base'])) {
+        $config['cache']['base'] = $config['memcached']['base'];
+    }
+}
+
 function __autoload($cls)
 {
     if (file_exists(INSTALLDIR.'/classes/' . $cls . '.php')) {
@@ -226,6 +238,27 @@ function __autoload($cls)
     }
 }
 
+// Load default plugins
+
+foreach ($config['plugins']['default'] as $name => $params) {
+    if (is_null($params)) {
+        addPlugin($name);
+    } else if (is_array($params)) {
+        if (count($params) == 0) {
+            addPlugin($name);
+        } else {
+            $keys = array_keys($params);
+            if (is_string($keys[0])) {
+                addPlugin($name, $params);
+            } else {
+                foreach ($params as $paramset) {
+                    addPlugin($name, $paramset);
+                }
+            }
+        }
+    }
+}
+
 // XXX: how many of these could be auto-loaded on use?
 // XXX: note that these files should not use config options
 // at compile time since DB config options are not yet loaded.
index 8a70ed3fa15d0672899f0d4c22e68abf062b7349..fa862f3ff196ba3eb62adca4d63284921c76948d 100644 (file)
@@ -54,6 +54,7 @@ $default =
               'dupelimit' => 60, # default for same person saying the same thing
               'textlimit' => 140,
               'indent' => true,
+              'use_x_sendfile' => false,
               ),
         'db' =>
         array('database' => 'YOU HAVE TO SET THIS IN config.php',
@@ -147,11 +148,8 @@ $default =
         array('enabled'       => true,
               'consumer_key'    => null,
               'consumer_secret' => null),
-        'memcached' =>
-        array('enabled' => false,
-              'server' => 'localhost',
-              'base' => null,
-              'port' => 11211),
+        'cache' =>
+        array('base' => null),
         'ping' =>
         array('notify' => array()),
         'inboxes' =>
@@ -232,4 +230,23 @@ $default =
         array('timeout' => 5), // HTTP request timeout in seconds when contacting remote hosts for OMB updates
         'logincommand' =>
         array('disabled' => true),
+        'plugins' =>
+        array('default' => array('LilUrl' => array('shortenerName'=>'ur1.ca',
+                                                   'freeService' => true,
+                                                   'serviceUrl'=>'http://ur1.ca/'),
+                                 'PtitUrl' => array('shortenerName' => 'ptiturl.com',
+                                                    'serviceUrl' => 'http://ptiturl.com/?creer=oui&action=Reduire&url=%1$s'),
+                                 'SimpleUrl' => array(array('shortenerName' => 'is.gd', 'serviceUrl' => 'http://is.gd/api.php?longurl=%1$s'),
+                                                      array('shortenerName' => 'snipr.com', 'serviceUrl' => 'http://snipr.com/site/snip?r=simple&link=%1$s'),
+                                                      array('shortenerName' => 'metamark.net', 'serviceUrl' => 'http://metamark.net/api/rest/simple?long_url=%1$s'),
+                                                      array('shortenerName' => 'tinyurl.com', 'serviceUrl' => 'http://tinyurl.com/api-create.php?url=%1$s')),
+                                 'TightUrl' => array('shortenerName' => '2tu.us', 'freeService' => true,'serviceUrl'=>'http://2tu.us/?save=y&url=%1$s'),
+                                 'Geonames' => null,
+                                 'Mapstraction' => null,
+                                 'Linkback' => null,
+                                 'WikiHashtags' => null,
+                                 'OpenID' => null),
+              ),
+        'admin' =>
+        array('panels' => array('design', 'site', 'user', 'paths')),
         );
index 091cf48457ce0bdb9330d62d78b9ff7363ef1944..14ceda0850b09b6918c4da00517370f6b31bad42 100644 (file)
@@ -58,11 +58,7 @@ class GroupTagCloudSection extends TagCloudSection
 
     function getTags()
     {
-        if (common_config('db', 'type') == 'pgsql') {
-            $weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
-        } else {
-            $weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
-        }
+        $weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
 
         $names = $this->group->getAliases();
 
@@ -99,7 +95,6 @@ class GroupTagCloudSection extends TagCloudSection
 
         $tag = Memcached_DataObject::cachedQuery('Notice_tag',
                                                  sprintf($qry,
-                                                         common_config('tag', 'dropoff'),
                                                          $this->group->id,
                                                          $namestring),
                                                  3600);
index 2091c6e2ca4d60fd4020f2ca91cfbcb09558c909..31660ce954982e365be8e68e05d179bda72cadbd 100644 (file)
@@ -352,7 +352,7 @@ class HTMLOutputter extends XMLOutputter
     {
         if(Event::handle('StartScriptElement', array($this,&$src,&$type))) {
             $url = parse_url($src);
-            if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment))
+            if( empty($url['scheme']) && empty($url['host']) && empty($url['query']) && empty($url['fragment']))
             {
                 $src = common_path($src) . '?version=' . STATUSNET_VERSION;
             }
index 01aed8ffa54d8d6a351a8172ccedbb1b10529241..a821856a8b004c92e1b00879bbf15eba3fd5228c 100644 (file)
@@ -440,7 +440,7 @@ function jabber_public_notice($notice)
     // XXX: should we send out non-local messages if public,localonly
     // = false? I think not
 
-    if ($public && $notice->is_local) {
+    if ($public && $notice->is_local == Notice::LOCAL_PUBLIC) {
         $profile = Profile::staticGet($notice->profile_id);
 
         if (!$profile) {
index 569bfa87344c8997149d39c37ae70f139980d91a..0d72ddf7ab48184e41c371407ae9efefe6c940ea 100644 (file)
@@ -105,8 +105,14 @@ class JSONSearchResultsList
                 break;
             }
 
-            $item = new ResultItem($this->notice);
-            array_push($this->results, $item);
+            $profile = $this->notice->getProfile();
+
+            // Don't show notices from deleted users
+
+            if (!empty($profile)) {
+                $item = new ResultItem($this->notice);
+                array_push($this->results, $item);
+            }
         }
 
         $time_end           = microtime(true);
diff --git a/lib/mailhandler.php b/lib/mailhandler.php
new file mode 100644 (file)
index 0000000..32a8cd9
--- /dev/null
@@ -0,0 +1,275 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+require_once(INSTALLDIR . '/lib/mail.php');
+require_once(INSTALLDIR . '/lib/mediafile.php');
+require_once('Mail/mimeDecode.php');
+
+# FIXME: we use both Mail_mimeDecode and mailparse
+# Need to move everything to mailparse
+
+class MailHandler
+{
+    function __construct()
+    {
+    }
+
+    function handle_message($rawmessage)
+    {
+        list($from, $to, $msg, $attachments) = $this->parse_message($rawmessage);
+        if (!$from || !$to || !$msg) {
+            $this->error(null, _('Could not parse message.'));
+        }
+        common_log(LOG_INFO, "Mail from $from to $to with ".count($attachments) .' attachment(s): ' .substr($msg, 0, 20));
+        $user = $this->user_from_header($from);
+        if (!$user) {
+            $this->error($from, _('Not a registered user.'));
+            return false;
+        }
+        if (!$this->user_match_to($user, $to)) {
+            $this->error($from, _('Sorry, that is not your incoming email address.'));
+            return false;
+        }
+        if (!$user->emailpost) {
+            $this->error($from, _('Sorry, no incoming email allowed.'));
+            return false;
+        }
+        $response = $this->handle_command($user, $from, $msg);
+        if ($response) {
+            return true;
+        }
+        $msg = $this->cleanup_msg($msg);
+        $msg = common_shorten_links($msg);
+        if (Notice::contentTooLong($msg)) {
+            $this->error($from, sprintf(_('That\'s too long. '.
+                                          'Max notice size is %d chars.'),
+                                        Notice::maxContent()));
+        }
+
+        $mediafiles = array();
+
+        foreach($attachments as $attachment){
+
+            $mf = null;
+
+            try {
+                $mf = MediaFile::fromFileHandle($attachment, $user);
+            } catch(ClientException $ce) {
+                $this->error($from, $ce->getMessage());
+            }
+
+            $msg .= ' ' . $mf->shortUrl();
+
+            array_push($mediafiles, $mf);
+            fclose($attachment);
+        }
+
+        $err = $this->add_notice($user, $msg, $mediafiles);
+
+        if (is_string($err)) {
+            $this->error($from, $err);
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    function error($from, $msg)
+    {
+        file_put_contents("php://stderr", $msg . "\n");
+        exit(1);
+    }
+
+    function user_from_header($from_hdr)
+    {
+        $froms = mailparse_rfc822_parse_addresses($from_hdr);
+        if (!$froms) {
+            return null;
+        }
+        $from = $froms[0];
+        $addr = common_canonical_email($from['address']);
+        $user = User::staticGet('email', $addr);
+        if (!$user) {
+            $user = User::staticGet('smsemail', $addr);
+        }
+        return $user;
+    }
+
+    function user_match_to($user, $to_hdr)
+    {
+        $incoming = $user->incomingemail;
+        $tos = mailparse_rfc822_parse_addresses($to_hdr);
+        foreach ($tos as $to) {
+            if (strcasecmp($incoming, $to['address']) == 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    function handle_command($user, $from, $msg)
+    {
+        $inter = new CommandInterpreter();
+        $cmd = $inter->handle_command($user, $msg);
+        if ($cmd) {
+            $cmd->execute(new MailChannel($from));
+            return true;
+        }
+        return false;
+    }
+
+    function respond($from, $to, $response)
+    {
+
+        $headers['From'] = $to;
+        $headers['To'] = $from;
+        $headers['Subject'] = "Command complete";
+
+        return mail_send(array($from), $headers, $response);
+    }
+
+    function log($level, $msg)
+    {
+        common_log($level, 'MailDaemon: '.$msg);
+    }
+
+    function add_notice($user, $msg, $mediafiles)
+    {
+        try {
+            $notice = Notice::saveNew($user->id, $msg, 'mail');
+        } catch (Exception $e) {
+            $this->log(LOG_ERR, $e->getMessage());
+            return $e->getMessage();
+        }
+        foreach($mediafiles as $mf){
+            $mf->attachToNotice($notice);
+        }
+        common_broadcast_notice($notice);
+        $this->log(LOG_INFO,
+                   'Added notice ' . $notice->id . ' from user ' . $user->nickname);
+        return true;
+    }
+
+    function parse_message($contents)
+    {
+        $parsed = Mail_mimeDecode::decode(array('input' => $contents,
+                                                'include_bodies' => true,
+                                                'decode_headers' => true,
+                                                'decode_bodies' => true));
+        if (!$parsed) {
+            return null;
+        }
+
+        $from = $parsed->headers['from'];
+
+        $to = $parsed->headers['to'];
+
+        $type = $parsed->ctype_primary . '/' . $parsed->ctype_secondary;
+
+        $attachments = array();
+
+        $this->extract_part($parsed,$msg,$attachments);
+
+        return array($from, $to, $msg, $attachments);
+    }
+
+    function extract_part($parsed,&$msg,&$attachments){
+        if ($parsed->ctype_primary == 'multipart') {
+            if($parsed->ctype_secondary == 'alternative'){
+                $altmsg = $this->extract_msg_from_multipart_alternative_part($parsed);
+                if(!empty($altmsg)) $msg = $altmsg;
+            }else{
+                foreach($parsed->parts as $part){
+                    $this->extract_part($part,$msg,$attachments);
+                }
+            }
+        } else if ($parsed->ctype_primary == 'text'
+            && $parsed->ctype_secondary=='plain') {
+            $msg = $parsed->body;
+            if(strtolower($parsed->ctype_parameters['charset']) != "utf-8"){
+                $msg = utf8_encode($msg);
+            }
+        }else if(!empty($parsed->body)){
+            if(common_config('attachments', 'uploads')){
+                //only save attachments if uploads are enabled
+                $attachment = tmpfile();
+                fwrite($attachment, $parsed->body);
+                $attachments[] = $attachment;
+            }
+        }
+    }
+
+    function extract_msg_from_multipart_alternative_part($parsed){
+        foreach ($parsed->parts as $part) {
+            $this->extract_part($part,$msg,$attachments);
+        }
+        //we don't want any attachments that are a result of this parsing
+        return $msg;
+    }
+
+    function unsupported_type($type)
+    {
+        $this->error(null, "Unsupported message type: " . $type);
+    }
+
+    function cleanup_msg($msg)
+    {
+        $lines = explode("\n", $msg);
+
+        $output = '';
+
+        foreach ($lines as $line) {
+            // skip quotes
+            if (preg_match('/^\s*>.*$/', $line)) {
+                continue;
+            }
+            // skip start of quote
+            if (preg_match('/^\s*On.*wrote:\s*$/', $line)) {
+                continue;
+            }
+            // probably interesting to someone, not us
+            if (preg_match('/^\s*Sent via/', $line)) {
+                continue;
+            }
+            if (preg_match('/^\s*Sent from my/', $line)) {
+                continue;
+            }
+
+            // skip everything after a sig
+            if (preg_match('/^\s*--+\s*$/', $line) ||
+                preg_match('/^\s*__+\s*$/', $line))
+            {
+                break;
+            }
+            // skip everything after Outlook quote
+            if (preg_match('/^\s*-+\s*Original Message\s*-+\s*$/', $line)) {
+                break;
+            }
+            // skip everything after weird forward
+            if (preg_match('/^\s*Begin\s+forward/', $line)) {
+                break;
+            }
+
+            $output .= ' ' . $line;
+        }
+
+        preg_replace('/\s+/', ' ', $output);
+        return trim($output);
+    }
+}
index 593a1e93220a1f6a5e1b9fd41dc5905227314e79..f0b704e876747e751f17a0a0fc5e00c35299766a 100644 (file)
@@ -110,6 +110,8 @@ class NoticeForm extends Form
             $this->user = common_current_user();
         }
 
+        $this->profile = $this->user->getProfile();
+
         if (common_config('attachments', 'uploads')) {
             $this->enctype = 'multipart/form-data';
         }
@@ -198,12 +200,22 @@ class NoticeForm extends Form
                 $this->out->hidden('notice_return-to', $this->action, 'returnto');
             }
             $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto');
-            $this->out->hidden('notice_data-lat', empty($this->lat) ? null : $this->lat, 'lat');
-            $this->out->hidden('notice_data-lon', empty($this->lon) ? null : $this->lon, 'lon');
-            $this->out->hidden('notice_data-location_id', empty($this->location_id) ? null : $this->location_id, 'location_id');
-            $this->out->hidden('notice_data-location_ns', empty($this->location_ns) ? null : $this->location_ns, 'location_ns');
 
-            Event::handle('StartShowNoticeFormData', array($this));
+            if ($this->user->shareLocation()) {
+                $this->out->hidden('notice_data-lat', empty($this->lat) ? (empty($this->profile->lat) ? null : $this->profile->lat) : $this->lat, 'lat');
+                $this->out->hidden('notice_data-lon', empty($this->lon) ? (empty($this->profile->lon) ? null : $this->profile->lon) : $this->lon, 'lon');
+                $this->out->hidden('notice_data-location_id', empty($this->location_id) ? (empty($this->profile->location_id) ? null : $this->profile->location_id) : $this->location_id, 'location_id');
+                $this->out->hidden('notice_data-location_ns', empty($this->location_ns) ? (empty($this->profile->location_ns) ? null : $this->profile->location_ns) : $this->location_ns, 'location_ns');
+
+                $this->out->elementStart('div', array('id' => 'notice_data-geo_wrap',
+                                                      'title' => common_local_url('geocode')));
+                $this->out->checkbox('notice_data-geo', _('Share my location'), true);
+                $this->out->elementEnd('div');
+                $this->out->inlineScript(' var NoticeDataGeoShareDisable_text = "'._('Do not share my location.').'";'.
+                ' var NoticeDataGeoInfoMinimize_text = "'._('Hide this info').'";');
+            }
+
+            Event::handle('EndShowNoticeFormData', array($this));
         }
     }
 
index 4c11ceed6cecf60dcf4b191bece29d503745d0fa..78abf34a76d512bb6fd289fbd6f4a5ce4fabf153 100644 (file)
@@ -191,6 +191,14 @@ class NoticeListItem extends Widget
 
     function show()
     {
+        if (empty($this->notice)) {
+            common_log(LOG_WARNING, "Trying to show missing notice; skipping.");
+            return;
+        } else if (empty($this->profile)) {
+            common_log(LOG_WARNING, "Trying to show missing profile (" . $this->notice->profile_id . "); skipping.");
+            return;
+        }
+
         $this->showStart();
         if (Event::handle('StartShowNoticeItem', array($this))) {
             $this->showNotice();
@@ -371,7 +379,7 @@ class NoticeListItem extends Widget
 
     function showNoticeLink()
     {
-        if($this->notice->is_local){
+        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{
index 0b29d58ca60386b9331de6ad7a330cab9191ca14..091425f926d296f8959322e63c2a3ac770bae41d 100644 (file)
@@ -58,13 +58,9 @@ class PersonalTagCloudSection extends TagCloudSection
 
     function getTags()
     {
-        if (common_config('db', 'type') == 'pgsql') {
-            $weightexpr='sum(exp(-extract(epoch from (now() - notice_tag.created)) / %s))';
-        } else {
-            $weightexpr='sum(exp(-(now() - notice_tag.created) / %s))';
-        }
-       $qry = 'SELECT notice_tag.tag, '.
+        $weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
+
+        $qry = 'SELECT notice_tag.tag, '.
           $weightexpr . ' as weight ' .
           'FROM notice_tag JOIN notice ' .
           'ON notice_tag.notice_id = notice.id ' .
@@ -83,7 +79,6 @@ class PersonalTagCloudSection extends TagCloudSection
 
         $tag = Memcached_DataObject::cachedQuery('Notice_tag',
                                                  sprintf($qry,
-                                                         common_config('tag', 'dropoff'),
                                                          $this->user->id),
                                                  3600);
         return $tag;
index 5698c403875e52b584b80a5fd5f86d8b93a4699f..735af9ef134ecccb2ad55a089f10ba7c3dd37cce 100644 (file)
@@ -21,7 +21,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
 function ping_broadcast_notice($notice) {
 
-       if (!$notice->is_local) {
+       if ($notice->is_local != Notice::LOCAL_PUBLIC && $notice->is_local != Notice::LOCAL_NONPUBLIC) {
                return true;
        }
 
@@ -115,4 +115,4 @@ function ping_notice_tags($notice) {
                return implode('|', $tags);
        }
        return NULL;
-}
\ No newline at end of file
+}
index de7313e59e2e52e16b4a5bcca1ffe754aa6566aa..65ccdafbb02af1b82277b42f77aa7cd1734f446e 100644 (file)
@@ -104,5 +104,16 @@ class Plugin
     {
         $this->log(LOG_DEBUG, $msg);
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $cls = get_class($this);
+        $name = mb_substr($cls, 0, -6);
+
+        $versions[] = array('name' => $name,
+                            'version' => _('Unknown'));
+
+        return true;
+    }
 }
 
index 9fbc9d2ddd0c779079ba3b75a154cd44fac12846..fbf9a60ab8112395156ffa26b9a5021293f816b6 100644 (file)
@@ -48,17 +48,17 @@ class PopularNoticeSection extends NoticeSection
 {
     function getNotices()
     {
+        // @fixme there should be a common func for this
         if (common_config('db', 'type') == 'pgsql') {
-            $weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
             if (!empty($this->out->tag)) {
                 $tag = pg_escape_string($this->out->tag);
             }
         } else {
-            $weightexpr='sum(exp(-(now() - fave.modified) / %s))';
             if (!empty($this->out->tag)) {
                  $tag = mysql_escape_string($this->out->tag);
             }
         }
+        $weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
         $qry = "SELECT notice.*, $weightexpr as weight ";
         if(isset($tag)) {
             $qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
@@ -78,7 +78,7 @@ class PopularNoticeSection extends NoticeSection
         $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
 
         $notice = Memcached_DataObject::cachedQuery('Notice',
-                                                    sprintf($qry, common_config('popular', 'dropoff')),
+                                                    $qry,
                                                     1200);
         return $notice;
     }
index 474e05996f24811a33d39ffec2265447950338b5..287d3c79fd8c0d567c73dd91dc9415d51a6f58d8 100644 (file)
@@ -100,7 +100,10 @@ class Router
                           'sandbox', 'unsandbox',
                           'silence', 'unsilence',
                           'repeat',
-                          'deleteuser');
+                          'deleteuser',
+                          'geocode',
+                          'version',
+                          );
 
             foreach ($main as $a) {
                 $m->connect('main/'.$a, array('action' => $a));
index a8ba91b87fcde9ab1132db0ac81ad0c30c7e53d4..a7f64ebed10cfce99fb780756a6fffa78831df83 100644 (file)
@@ -523,6 +523,14 @@ class Schema
         } 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 ed81aeba16ceffde2a25c84c1229f7c26dca7358..50bd0e2ac938de026a3d4b5187823773136a62d0 100644 (file)
@@ -62,7 +62,7 @@ function common_init_language()
     // gettext will still select the right language.
     $language = common_language();
     $locale_set = common_init_locale($language);
-    
+
     setlocale(LC_CTYPE, 'C');
     // So we do not have to make people install the gettext locales
     $path = common_config('site','locale_path');
@@ -908,6 +908,26 @@ function common_sql_date($datetime)
     return strftime('%Y-%m-%d %H:%M:%S', $datetime);
 }
 
+/**
+ * Return an SQL fragment to calculate an age-based weight from a given
+ * timestamp or datetime column.
+ *
+ * @param string $column name of field we're comparing against current time
+ * @param integer $dropoff divisor for age in seconds before exponentiation
+ * @return string SQL fragment
+ */
+function common_sql_weight($column, $dropoff)
+{
+    if (common_config('db', 'type') == 'pgsql') {
+        // PostgreSQL doesn't support timestampdiff function.
+        // @fixme will this use the right time zone?
+        // @fixme does this handle cross-year subtraction correctly?
+        return "sum(exp(-extract(epoch from (now() - $column)) / $dropoff))";
+    } else {
+        return "sum(exp(timestampdiff(second, utc_timestamp(), $column) / $dropoff))";
+    }
+}
+
 function common_redirect($url, $code=307)
 {
     static $status = array(301 => "Moved Permanently",
@@ -1384,41 +1404,17 @@ function common_session_token()
 
 function common_cache_key($extra)
 {
-    $base_key = common_config('memcached', 'base');
-
-    if (empty($base_key)) {
-        $base_key = common_keyize(common_config('site', 'name'));
-    }
-
-    return 'statusnet:' . $base_key . ':' . $extra;
+    return Cache::key($extra);
 }
 
 function common_keyize($str)
 {
-    $str = strtolower($str);
-    $str = preg_replace('/\s/', '_', $str);
-    return $str;
+    return Cache::keyize($str);
 }
 
 function common_memcache()
 {
-    static $cache = null;
-    if (!common_config('memcached', 'enabled')) {
-        return null;
-    } else {
-        if (!$cache) {
-            $cache = new Memcache();
-            $servers = common_config('memcached', 'server');
-            if (is_array($servers)) {
-                foreach($servers as $server) {
-                    $cache->addServer($server);
-                }
-            } else {
-                $cache->addServer($servers);
-            }
-        }
-        return $cache;
-    }
+    return Cache::instance();
 }
 
 function common_license_terms($uri)
index 0a4bdeb2f54199f9ea2a1a17d46f2069c4600f8c..68a1ff2fc954b3b70edf59d136001b5cec460290 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:09:41+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:28+0000\n"
 "Language-Team: Arabic\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ar\n"
 "X-Message-Group: out-statusnet\n"
@@ -188,11 +188,11 @@ msgstr "تعذّر تحديث تصميمك."
 msgid "You cannot block yourself!"
 msgstr "لا يمكنك منع نفسك!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "فشل منع المستخدم."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "فشل إلغاء منع المستخدم."
 
@@ -304,31 +304,31 @@ msgid "Could not find target user."
 msgstr "تعذّر إيجاد المستخدم الهدف."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr ""
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "ليس اسمًا مستعارًا صحيحًا."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "الصفحة الرئيسية ليست عنونًا صالحًا."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
@@ -339,7 +339,7 @@ msgid "Description is too long (max %d chars)."
 msgstr ""
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr ""
@@ -454,7 +454,7 @@ msgstr ""
 msgid "Not found"
 msgstr "لم يوجد"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -583,7 +583,7 @@ msgid "Preview"
 msgstr "عاين"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "احذف"
 
@@ -596,13 +596,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -672,7 +672,7 @@ msgstr "نعم"
 msgid "Block this user"
 msgstr "امنع هذا المستخدم"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "فشل حفظ معلومات المنع."
 
@@ -744,7 +744,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "تعذّر تحديث المستخدم."
@@ -804,7 +804,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
 msgid "Do not delete this notice"
 msgstr "لا تحذف هذا الإشعار"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "احذف هذا الإشعار"
 
@@ -938,7 +938,7 @@ msgstr "ارجع إلى المبدئي"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1420,7 +1420,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr "قائمة بمستخدمي هذه المجموعة."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "إداري"
 
@@ -1507,7 +1507,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "المستخدم ليس ممنوعًا من المجموعة."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "خطأ أثناء منع الحجب."
 
@@ -1676,7 +1676,7 @@ msgstr "رسالة شخصية"
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "أرسل"
 
@@ -1772,7 +1772,7 @@ msgstr "اسم المستخدم أو كلمة السر غير صحيحان."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطأ أثناء ضبط المستخدم. لست مُصرحًا على الأرجح."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "لُج"
@@ -1879,7 +1879,7 @@ msgstr "أُرسلت الرسالة"
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "خطأ أجاكس"
 
@@ -1887,7 +1887,7 @@ msgstr "خطأ أجاكس"
 msgid "New notice"
 msgstr "إشعار جديد"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "أُرسل الإشعار"
 
@@ -2304,69 +2304,77 @@ msgstr "الموقع"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "الوسوم"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "اللغة"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "اللغة المفضلة"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "المنطقة الزمنية"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "ما المنطقة الزمنية التي تتواجد فيها عادة؟"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "لم تُختر المنطقة الزمنية."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "وسم غير صالح: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "لم يمكن حفظ تفضيلات الموقع."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "تعذّر حفظ الملف الشخصي."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "تعذّر حفظ الوسوم."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "حُفظت الإعدادات."
 
@@ -2465,7 +2473,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "سحابة الوسوم"
 
@@ -2601,7 +2609,7 @@ msgstr "عذرا، رمز دعوة غير صالح."
 msgid "Registration successful"
 msgstr "نجح التسجيل"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "سجّل"
@@ -2765,7 +2773,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصية."
 msgid "You already repeated that notice."
 msgstr "أنت كررت هذه الملاحظة بالفعل."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "مكرر"
 
@@ -3507,7 +3515,7 @@ msgstr "صورة"
 
 #: actions/tagother.php:141
 msgid "Tag user"
-msgstr ""
+msgstr "اوسم المستخدم"
 
 #: actions/tagother.php:151
 msgid ""
@@ -3839,16 +3847,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "مشكلة أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "آر تي @%1$s %2$s"
@@ -3903,128 +3911,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "صفحة غير مُعنونة"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "الرئيسية"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "الملف الشخصي ومسار الأصدقاء الزمني"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "الحساب"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "اتصل"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "غيّر ضبط الموقع"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ادعُ"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "اخرج"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "اخرج من الموقع"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "أنشئ حسابًا"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "لُج إلى الموقع"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "مساعدة"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "ساعدني!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "ابحث"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "ابحث عن أشخاص أو نص"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "إشعار الموقع"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "المشاهدات المحلية"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "إشعار الصفحة"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "عن"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "الأسئلة المكررة"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "الشروط"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "خصوصية"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "المصدر"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "اتصل"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4033,12 +4041,12 @@ msgstr ""
 "**%%site.name%%** خدمة تدوين مصغر يقدمها لك [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4049,31 +4057,31 @@ msgstr ""
 "المتوفر تحت [رخصة غنو أفيرو العمومية](http://www.fsf.org/licensing/licenses/"
 "agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "رخصة محتوى الموقع"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "الرخصة."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "بعد"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "قبل"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4125,6 +4133,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "وسوم هذا المرفق"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "تغيير كلمة السر"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "تغيير كلمة السر"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "نتائج الأمر"
@@ -4587,11 +4605,11 @@ msgstr "نوع ملف غير معروف"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "ميجابايت"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "كيلوبايت"
 
 #: lib/jabber.php:191
 #, php-format
@@ -4800,7 +4818,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "من"
 
@@ -4864,69 +4882,73 @@ msgstr "أرسل إشعارًا مباشرًا"
 msgid "To"
 msgstr "إلى"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "المحارف المتوفرة"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "أرسل إشعارًا"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "ما الأخبار يا %s؟"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "أرفق"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "أرفق ملفًا"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "ش"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "ج"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "ر"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "غ"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "في"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "في السياق"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "مكرر بواسطة"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "رُد على هذا الإشعار"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "رُد"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
index c0ec3623e8d8800578826fad4bc5475baca80262..26d2f4ffca9f185f26c8d4d5b97f76f974dcdfaf 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:09:44+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:34+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: arz\n"
 "X-Message-Group: out-statusnet\n"
@@ -121,7 +121,7 @@ msgstr ""
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
 msgid "API method not found."
-msgstr "لم يتم العثور على وسيلة API."
+msgstr "لم يتم العثور على وسيله API."
 
 #: actions/apiaccountupdatedeliverydevice.php:85
 #: actions/apiaccountupdateprofile.php:89
@@ -185,13 +185,13 @@ msgstr "تعذّر تحديث تصميمك."
 
 #: actions/apiblockcreate.php:105
 msgid "You cannot block yourself!"
-msgstr "ا يمكنك منع نفسك!"
+msgstr "لا يمكنك منع نفسك!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "فشل منع المستخدم."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "فشل إلغاء منع المستخدم."
 
@@ -303,31 +303,31 @@ msgid "Could not find target user."
 msgstr "تعذّر إيجاد المستخدم الهدف."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr ""
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "ليس اسمًا مستعارًا صحيحًا."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "الصفحه الرئيسيه ليست عنونًا صالحًا."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
@@ -338,7 +338,7 @@ msgid "Description is too long (max %d chars)."
 msgstr ""
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr ""
@@ -429,11 +429,11 @@ msgstr "لا إشعار كهذا."
 
 #: actions/apistatusesretweet.php:83
 msgid "Cannot repeat your own notice."
-msgstr "لا يمكنك تكرار ملحوظتك الخاصة."
+msgstr "لا يمكنك تكرار ملحوظتك الخاصه."
 
 #: actions/apistatusesretweet.php:91
 msgid "Already repeated that notice."
-msgstr "كرر بالفعل هذه الملاحظة."
+msgstr "كرر بالفعل هذه الملاحظه."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
@@ -453,7 +453,7 @@ msgstr ""
 msgid "Not found"
 msgstr "لم يوجد"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -582,7 +582,7 @@ msgid "Preview"
 msgstr "عاين"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "احذف"
 
@@ -595,13 +595,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -671,7 +671,7 @@ msgstr "نعم"
 msgid "Block this user"
 msgstr "امنع هذا المستخدم"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "فشل حفظ معلومات المنع."
 
@@ -743,7 +743,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "تعذّر تحديث المستخدم."
@@ -803,7 +803,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
 msgid "Do not delete this notice"
 msgstr "لا تحذف هذا الإشعار"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "احذف هذا الإشعار"
 
@@ -937,7 +937,7 @@ msgstr "ارجع إلى المبدئي"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1236,11 +1236,11 @@ msgstr "اختيار لبعض المستخدمين المتميزين على %s"
 
 #: actions/file.php:34
 msgid "No notice ID."
-msgstr "لا رقم ملاحظة."
+msgstr "لا رقم ملاحظه."
 
 #: actions/file.php:38
 msgid "No notice."
-msgstr "لا ملاحظة."
+msgstr "لا ملاحظه."
 
 #: actions/file.php:42
 msgid "No attachments."
@@ -1248,7 +1248,7 @@ msgstr "لا مرفقات."
 
 #: actions/file.php:51
 msgid "No uploaded attachments."
-msgstr "لا مرفقات مرفوعة."
+msgstr "لا مرفقات مرفوعه."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
@@ -1419,7 +1419,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr "قائمه بمستخدمى هذه المجموعه."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "إداري"
 
@@ -1506,7 +1506,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "المستخدم ليس ممنوعًا من المجموعه."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "خطأ أثناء منع الحجب."
 
@@ -1675,7 +1675,7 @@ msgstr "رساله شخصية"
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "أرسل"
 
@@ -1771,7 +1771,7 @@ msgstr "اسم المستخدم أو كلمه السر غير صحيحان."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطأ أثناء ضبط المستخدم. لست مُصرحًا على الأرجح."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "لُج"
@@ -1878,7 +1878,7 @@ msgstr "أُرسلت الرسالة"
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "خطأ أجاكس"
 
@@ -1886,7 +1886,7 @@ msgstr "خطأ أجاكس"
 msgid "New notice"
 msgstr "إشعار جديد"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "أُرسل الإشعار"
 
@@ -2303,69 +2303,77 @@ msgstr "الموقع"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "الوسوم"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "اللغة"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "اللغه المفضلة"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "المنطقه الزمنية"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "ما المنطقه الزمنيه التى تتواجد فيها عادة؟"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "لم تُختر المنطقه الزمنيه."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "وسم غير صالح: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "لم يمكن حفظ تفضيلات الموقع."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "تعذّر حفظ الملف الشخصى."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "تعذّر حفظ الوسوم."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "حُفظت الإعدادات."
 
@@ -2464,7 +2472,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "سحابه الوسوم"
 
@@ -2600,7 +2608,7 @@ msgstr "عذرا، رمز دعوه غير صالح."
 msgid "Registration successful"
 msgstr "نجح التسجيل"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "سجّل"
@@ -2754,17 +2762,17 @@ msgstr ""
 
 #: actions/repeat.php:64 actions/repeat.php:71
 msgid "No notice specified."
-msgstr "لا ملاحظة محددة."
+msgstr "لا ملاحظه محدده."
 
 #: actions/repeat.php:76
 msgid "You can't repeat your own notice."
-msgstr "لا يمكنك تكرار ملاحظتك الشخصية."
+msgstr "لا يمكنك تكرار ملاحظتك الشخصيه."
 
 #: actions/repeat.php:90
 msgid "You already repeated that notice."
-msgstr "أنت كررت هذه الملاحظة بالفعل."
+msgstr "أنت كررت هذه الملاحظه بالفعل."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "مكرر"
 
@@ -3506,7 +3514,7 @@ msgstr "صورة"
 
 #: actions/tagother.php:141
 msgid "Tag user"
-msgstr ""
+msgstr "اوسم المستخدم"
 
 #: actions/tagother.php:151
 msgid ""
@@ -3541,7 +3549,7 @@ msgstr "لم تمنع هذا المستخدم."
 
 #: actions/unsandbox.php:72
 msgid "User is not sandboxed."
-msgstr "اÙ\84Ù\85ستخدÙ\85 Ù\84Ù\8aس Ù\81Ù\8a صندوق الرمل."
+msgstr "اÙ\84Ù\85ستخدÙ\85 Ù\84Ù\8aس Ù\81Ù\89 صندوق الرمل."
 
 #: actions/unsilence.php:72
 msgid "User is not silenced."
@@ -3838,19 +3846,19 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "مشكله أثناء حفظ الإشعار."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
-msgstr "آر ØªÙ\8a @%1$s %2$s"
+msgstr "آر ØªÙ\89 @%1$s %2$s"
 
 #: classes/User.php:368
 #, php-format
@@ -3902,128 +3910,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "صفحه غير مُعنونة"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "الرئيسية"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "الملف الشخصى ومسار الأصدقاء الزمني"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "الحساب"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "اتصل"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "غيّر ضبط الموقع"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ادعُ"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "اخرج"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "اخرج من الموقع"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "أنشئ حسابًا"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "لُج إلى الموقع"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "مساعدة"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "ساعدني!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "ابحث"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "ابحث عن أشخاص أو نص"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "إشعار الموقع"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "المشاهدات المحلية"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "إشعار الصفحة"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "عن"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "الأسئله المكررة"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "الشروط"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "خصوصية"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "المصدر"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "اتصل"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4032,12 +4040,12 @@ msgstr ""
 "**%%site.name%%** خدمه تدوين مصغر يقدمها لك [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4048,31 +4056,31 @@ msgstr ""
 "المتوفر تحت [رخصه غنو أفيرو العمومية](http://www.fsf.org/licensing/licenses/"
 "agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "رخصه محتوى الموقع"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "الرخصه."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "بعد"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "قبل"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4124,6 +4132,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "وسوم هذا المرفق"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "تغيير كلمه السر"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "تغيير كلمه السر"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "نتائج الأمر"
@@ -4288,7 +4306,7 @@ msgstr ""
 #: lib/command.php:664
 #, php-format
 msgid "Could not create login token for %s"
-msgstr ""
+msgstr "لم يمكن إنشاء توكن الولوج ل%s"
 
 #: lib/command.php:669
 #, php-format
@@ -4586,11 +4604,11 @@ msgstr "نوع ملف غير معروف"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "ميجابايت"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "كيلوبايت"
 
 #: lib/jabber.php:191
 #, php-format
@@ -4799,7 +4817,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "من"
 
@@ -4863,69 +4881,73 @@ msgstr "أرسل إشعارًا مباشرًا"
 msgid "To"
 msgstr "إلى"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "المحارف المتوفرة"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "أرسل إشعارًا"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "ما الأخبار يا %s؟"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "أرفق"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "أرفق ملفًا"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "ش"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "ج"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "ر"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "غ"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "في"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "فى السياق"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
-msgstr "مكرر بواسطه"
+msgstr "مكرر بواسطة"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "رُد على هذا الإشعار"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "رُد"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
@@ -5151,7 +5173,7 @@ msgstr "غير مشترك!"
 
 #: lib/subs.php:133
 msgid "Couldn't delete self-subscription."
-msgstr "Ù\85 Ù\8aÙ\85Ù\83Ù\86 Ø­Ø°Ù\81 Ø§Ø´ØªØ±Ø§Ù\83 Ø°Ø§ØªÙ\8a."
+msgstr "Ù\84Ù\85 Ù\8aÙ\85Ù\83Ù\86 Ø­Ø°Ù\81 Ø§Ø´ØªØ±Ø§Ù\83 Ø°Ø§ØªÙ\89."
 
 #: lib/subs.php:146
 msgid "Couldn't delete subscription."
index b3940ff016b8905339556c967d40b57ea39d2982..cf881f17b657cb3bf1956a720bc92b9c998aa3fc 100644 (file)
@@ -1,5 +1,6 @@
 # Translation of StatusNet to Bulgarian
 #
+# Author@translatewiki.net: DCLXVI
 # Author@translatewiki.net: Turin
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -8,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:09:50+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:40+0000\n"
 "Language-Team: Bulgarian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: bg\n"
 "X-Message-Group: out-statusnet\n"
@@ -188,11 +189,11 @@ msgstr "Грешка при обновяване на потребителя."
 msgid "You cannot block yourself!"
 msgstr "Не можете да блокирате себе си!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Грешка при блокиране на потребителя."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Грешка при разблокиране на потребителя."
 
@@ -303,12 +304,11 @@ msgid "Could not determine source user."
 msgstr "Грешка при изтегляне на общия поток"
 
 #: actions/apifriendshipsshow.php:143
-#, fuzzy
 msgid "Could not find target user."
-msgstr "Ð\9dе Ñ\81а Ð¾Ñ\82кÑ\80иÑ\82и Ð±ÐµÐ»ÐµÐ¶ÐºÐ¸."
+msgstr "ЦелевиÑ\8fÑ\82 Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ð½Ðµ Ð±ÐµÑ\88е Ð¾Ñ\82кÑ\80иÑ\82."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -316,25 +316,25 @@ msgstr ""
 "между тях."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Опитайте друг псевдоним, този вече е зает."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Неправилен псевдоним."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Адресът на личната страница не е правилен URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Пълното име е твърде дълго (макс. 255 знака)"
@@ -345,7 +345,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Описанието е твърде дълго (до %d символа)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Името на местоположението е твърде дълго (макс. 255 знака)."
@@ -460,7 +460,7 @@ msgstr "Твърде дълга бележка. Трябва да е най-мн
 msgid "Not found"
 msgstr "Не е открито."
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -591,7 +591,7 @@ msgid "Preview"
 msgstr "Преглед"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Изтриване"
 
@@ -604,13 +604,13 @@ msgid "Crop"
 msgstr "Изрязване"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -680,7 +680,7 @@ msgstr "Да"
 msgid "Block this user"
 msgstr "Блокиране на потребителя"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Грешка при записване данните за блокирането."
 
@@ -754,7 +754,7 @@ msgstr "Този адрес е вече потвърден."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Грешка при обновяване на потребителя."
@@ -814,7 +814,7 @@ msgstr "Наистина ли искате да изтриете тази бел
 msgid "Do not delete this notice"
 msgstr "Да не се изтрива бележката"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Изтриване на бележката"
 
@@ -954,7 +954,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1268,9 +1268,8 @@ msgid "No notice."
 msgstr "Липсва бележка."
 
 #: actions/file.php:42
-#, fuzzy
 msgid "No attachments."
-msgstr "Няма такъв документ."
+msgstr "Няма прикачени файлове."
 
 #: actions/file.php:51
 #, fuzzy
@@ -1458,7 +1457,7 @@ msgstr "Членове на групата %s, страница %d"
 msgid "A list of the users in this group."
 msgstr "Списък с потребителите в тази група."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Настройки"
 
@@ -1549,7 +1548,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Потребителят ви е блокирал."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "Грешка при запазване на потребител."
@@ -1732,7 +1731,7 @@ msgstr "Лично съобщение"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Може да добавите и лично съобщение към поканата."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Прати"
 
@@ -1857,7 +1856,7 @@ msgstr "Грешно име или парола."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Забранено."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Вход"
@@ -1970,7 +1969,7 @@ msgstr "Съобщението е изпратено"
 msgid "Direct message to %s sent"
 msgstr "Прякото съобщение до %s е изпратено."
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Грешка в Ajax"
 
@@ -1978,7 +1977,7 @@ msgstr "Грешка в Ajax"
 msgid "New notice"
 msgstr "Нова бележка"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Бележката е публикувана"
 
@@ -2401,71 +2400,80 @@ msgstr "Местоположение"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Къде се намирате (град, община, държава и т.н.)"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Етикети"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Език"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Предпочитан език"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Часови пояс"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "В кой часови пояс сте обикновено?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Автоматично абониране за всеки, който се абонира за мен (подходящо за "
 "ботове)."
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Биографията е твърде дълга (до %d символа)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Не е избран часови пояс"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Името на езика е твърде дълго (може да е до 50 знака)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Неправилен етикет: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Грешка при запазване етикетите."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Грешка при запазване на профила."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Грешка при запазване етикетите."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Настройките са запазени."
 
@@ -2559,7 +2567,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2698,7 +2706,7 @@ msgstr "Грешка в кода за потвърждение."
 msgid "Registration successful"
 msgstr "Записването е успешно."
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистриране"
@@ -2887,7 +2895,7 @@ msgstr "Не можете да повтаряте собствена бележ
 msgid "You already repeated that notice."
 msgstr "Вече сте повторили тази бележка."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -4000,16 +4008,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Забранено ви е да публикувате бележки в този сайт."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Проблем при записване на бележката."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4066,132 +4074,132 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Неозаглавена страница"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Начало"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Сметка"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Промяна на поща, аватар, парола, профил"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Свързване"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Свързване към услуги"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Промяна настройките на сайта"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Покани"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Поканете приятели и колеги да се присъединят към вас в %s"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Изход"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Излизане от сайта"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Създаване на нова сметка"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Влизане в сайта"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Помощ"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Помощ"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Търсене"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Търсене за хора или бележки"
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Нова бележка"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Нова бележка"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Абонаменти"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Относно"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Въпроси"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "Условия"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Поверителност"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Изходен код"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Табелка"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Лиценз на програмата StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4200,12 +4208,12 @@ msgstr ""
 "**%%site.name%%** е услуга за микроблогване, предоставена ви от [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** е услуга за микроблогване. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4216,31 +4224,31 @@ msgstr ""
 "достъпна под [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Лиценз на съдържанието"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Всички "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "лиценз."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Страниране"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "След"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Преди"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Имаше проблем със сесията ви в сайта."
 
@@ -4295,6 +4303,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Паролата е записана."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Паролата е записана."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Резултат от командата"
@@ -4979,7 +4997,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "от"
 
@@ -5043,69 +5061,73 @@ msgstr "Изпращане на пряко съобщеие"
 msgid "To"
 msgstr "До"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Налични знаци"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Изпращане на бележка"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Какво става, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Прикрепяне"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Прикрепяне на файл"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "С"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "Ю"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "И"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "З"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "в контекст"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Повторено от"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Отговаряне на тази бележка"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Отговор"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Бележката е повторена."
 
index f897ec18d1182da1d2d20e4b066b3486f7cdfba7..7022f4fad0197773ebb3f18dd778cf8367966356 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:09:53+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:44+0000\n"
 "Language-Team: Catalan\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ca\n"
 "X-Message-Group: out-statusnet\n"
@@ -195,11 +195,11 @@ msgstr "No s'ha pogut actualitzar l'usuari."
 msgid "You cannot block yourself!"
 msgstr "No podeu suprimir els usuaris."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Ha fallat el bloqueig d'usuari."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Ha fallat el desbloqueig d'usuari."
 
@@ -316,7 +316,7 @@ msgid "Could not find target user."
 msgstr "No es pot trobar cap estatus."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -324,25 +324,25 @@ msgstr ""
 "espais."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Aquest sobrenom ja existeix. Prova un altre. "
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Sobrenom no vàlid."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "La pàgina personal no és un URL vàlid."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "El teu nom és massa llarg (màx. 255 caràcters)."
@@ -353,7 +353,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "La descripció és massa llarga (màx. %d caràcters)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "La ubicació és massa llarga (màx. 255 caràcters)."
@@ -470,7 +470,7 @@ msgstr "Massa llarg. La longitud màxima és de %d caràcters."
 msgid "Not found"
 msgstr "No s'ha trobat"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -600,7 +600,7 @@ msgid "Preview"
 msgstr "Vista prèvia"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Suprimeix"
 
@@ -613,13 +613,13 @@ msgid "Crop"
 msgstr "Retalla"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -693,7 +693,7 @@ msgstr "Sí"
 msgid "Block this user"
 msgstr "Bloquejar aquest usuari"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Error al guardar la informació del block."
 
@@ -767,7 +767,7 @@ msgstr "Aquesta adreça ja ha estat confirmada."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "No s'ha pogut actualitzar l'usuari."
@@ -831,7 +831,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Eliminar aquesta nota"
 
@@ -969,7 +969,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1471,7 +1471,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1560,7 +1560,7 @@ msgstr "Només un administrador pot desblocar els membres del grup."
 msgid "User is not blocked from group."
 msgstr "L'usuari no està blocat del grup."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "S'ha produït un error en suprimir el bloc."
 
@@ -1750,7 +1750,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Envia"
 
@@ -1874,7 +1874,7 @@ msgstr "Nom d'usuari o contrasenya incorrectes."
 msgid "Error setting user. You are probably not authorized."
 msgstr "No autoritzat."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inici de sessió"
@@ -1988,7 +1988,7 @@ msgstr "S'ha enviat el missatge"
 msgid "Direct message to %s sent"
 msgstr "Missatge directe per a %s enviat"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax Error"
 
@@ -1996,7 +1996,7 @@ msgstr "Ajax Error"
 msgid "New notice"
 msgstr "Nou avís"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Notificació publicada"
 
@@ -2428,73 +2428,82 @@ msgstr "Ubicació"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "On ets, per exemple \"Ciutat, Estat (o Regió), País\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Etiquetes"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Etiquetes per a tu mateix (lletres, números, -, ., i _), per comes o separat "
 "por espais"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Idioma"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Preferència d'idioma"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Franja horària"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Quina franja horària seria normal ser?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Automàticament subscriure's a qualsevol que ho estigui a tu mateix (ideal "
 "per no-humans)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "La biografia és massa llarga (màx. %d caràcters)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Franja horària no seleccionada."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "L'idioma és massa llarg (màx 50 caràcters)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta no vàlida: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "No es pot actualitzar l'usuari per autosubscriure."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "No s'han pogut guardar les etiquetes."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "No s'ha pogut guardar el perfil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "No s'han pogut guardar les etiquetes."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Configuració guardada."
 
@@ -2591,7 +2600,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Núvol d'etiquetes"
 
@@ -2731,7 +2740,7 @@ msgstr "El codi d'invitació no és vàlid."
 msgid "Registration successful"
 msgstr "Registre satisfactori"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registre"
@@ -2928,7 +2937,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Repetit"
 
@@ -4052,16 +4061,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Ha estat bandejat de publicar notificacions en aquest lloc."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problema en guardar l'avís."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Error de BD en inserir resposta: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4117,129 +4126,129 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Pàgina sense titol"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navegació primària del lloc"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Inici"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Perfil personal i línia temporal dels amics"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Compte"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Canviar correu electrònic, avatar, contrasenya, perfil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Connexió"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "No s'ha pogut redirigir al servidor: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Canvia la configuració del lloc"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convida"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Finalitza la sessió"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Finalitza la sessió del lloc"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Crea un compte"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Inicia una sessió al lloc"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Ajuda'm"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Cerca"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Cerca gent o text"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Avís del lloc"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Vistes locals"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Notificació pàgina"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Navegació del lloc secundària"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Quant a"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Preguntes més freqüents"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privadesa"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Font"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contacte"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Insígnia"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Llicència del programari StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4248,12 +4257,12 @@ msgstr ""
 "**%%site.name%%** és un servei de microblogging de [%%site.broughtby%%**](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** és un servei de microblogging."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4264,32 +4273,32 @@ msgstr ""
 "%s, disponible sota la [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Llicència del programari StatusNet"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Tot "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "llicència."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginació"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Posteriors"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Anteriors"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Ha ocorregut algun problema amb la teva sessió."
 
@@ -4345,6 +4354,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr "Etiquetes de l'adjunció"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Contrasenya canviada."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Contrasenya canviada."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultats de les comandes"
@@ -5031,7 +5050,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "de"
 
@@ -5095,72 +5114,76 @@ msgstr "Enviar notificació directa"
 msgid "To"
 msgstr "A"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Caràcters disponibles"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Enviar notificació"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Què tal, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Adjunta"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Adjunta un fitxer"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Cap contingut!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "S'ha creat"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "respondre a aquesta nota"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Respon"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Notificació publicada"
index 6cc1e1dbfdd78639cc8bf6ec703a20fc78999048..73ffd3265e09cbc055c9a6c323ab6c462c10fa00 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:09:56+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:48+0000\n"
 "Language-Team: Czech\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: cs\n"
 "X-Message-Group: out-statusnet\n"
@@ -194,11 +194,11 @@ msgstr "Nelze aktualizovat uživatele"
 msgid "You cannot block yourself!"
 msgstr "Nelze aktualizovat uživatele"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -313,31 +313,31 @@ msgid "Could not find target user."
 msgstr "Nelze aktualizovat uživatele"
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Přezdívka může obsahovat pouze malá písmena a čísla bez mezer"
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Přezdívku již někdo používá. Zkuste jinou"
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Není platnou přezdívkou."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Stránka není platnou URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)"
@@ -348,7 +348,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Umístění příliš dlouhé (maximálně 255 znaků)"
@@ -469,7 +469,7 @@ msgstr "Je to příliš dlouhé. Maximální sdělení délka je 140 znaků"
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -602,7 +602,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Odstranit"
 
@@ -615,13 +615,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -694,7 +694,7 @@ msgstr "Ano"
 msgid "Block this user"
 msgstr "Zablokovat tohoto uživatele"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -768,7 +768,7 @@ msgstr "Adresa již byla potvrzena"
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Nelze aktualizovat uživatele"
@@ -830,7 +830,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "Žádné takové oznámení."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Odstranit toto oznámení"
 
@@ -972,7 +972,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1477,7 +1477,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1570,7 +1570,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Uživatel nemá profil."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "Chyba při ukládaní uživatele"
@@ -1749,7 +1749,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Odeslat"
 
@@ -1849,7 +1849,7 @@ msgstr "Neplatné jméno nebo heslo"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Neautorizován."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Přihlásit"
@@ -1959,7 +1959,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1967,7 +1967,7 @@ msgstr ""
 msgid "New notice"
 msgstr "Nové sdělení"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "Sdělení"
@@ -2406,70 +2406,79 @@ msgstr "Umístění"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Místo. Město, stát."
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Jazyk"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Neplatná adresa '%s'"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Nelze uložit profil"
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Nelze uložit profil"
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Nelze uložit profil"
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Nastavení uloženo"
 
@@ -2566,7 +2575,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2705,7 +2714,7 @@ msgstr "Chyba v ověřovacím kódu"
 msgid "Registration successful"
 msgstr "Registrace úspěšná"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrovat"
@@ -2881,7 +2890,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Vytvořit"
@@ -4006,16 +4015,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problém při ukládání sdělení"
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Chyba v DB při vkládání odpovědi: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4074,135 +4083,135 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Domů"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "O nás"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Připojit"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Nelze přesměrovat na server: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Odběry"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Odhlásit"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "Vytvořit nový účet"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Nápověda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Pomoci mi!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Hledat"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Nové sdělení"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Nové sdělení"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Odběry"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "O nás"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Soukromí"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Zdroj"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4211,12 +4220,12 @@ msgstr ""
 "**%%site.name%%** je služba microblogů, kterou pro vás poskytuje [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** je služba mikroblogů."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4227,34 +4236,34 @@ msgstr ""
 "dostupná pod [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Nové sdělení"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "« Novější"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "Starší »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4309,6 +4318,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Heslo uloženo"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Heslo uloženo"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4997,7 +5016,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " od "
@@ -5063,74 +5082,78 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 a více znaků"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Nové sdělení"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Co se děje %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Žádný obsah!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Vytvořit"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "odpověď"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Sdělení"
index 42cc95a1e692b3727d590194d2da78e99f80e183..80498e5d19c3630aa5c88f9688513a18d12e3eac 100644 (file)
@@ -11,12 +11,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:00+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:52+0000\n"
 "Language-Team: German\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: de\n"
 "X-Message-Group: out-statusnet\n"
@@ -196,15 +196,14 @@ msgid "Could not update your design."
 msgstr "Konnte Benutzerdesign nicht aktualisieren."
 
 #: actions/apiblockcreate.php:105
-#, fuzzy
 msgid "You cannot block yourself!"
-msgstr "Du kannst dich nicht selbst entfolgen!"
+msgstr "Du kannst dich nicht selbst sperren!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Blockieren des Benutzers fehlgeschlagen."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Freigeben des Benutzers fehlgeschlagen."
 
@@ -319,7 +318,7 @@ msgid "Could not find target user."
 msgstr "Konnte keine Statusmeldungen finden."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -327,26 +326,26 @@ msgstr ""
 "Leerzeichen sind nicht erlaubt."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Ungültiger Nutzername."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr ""
 "Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)."
@@ -357,7 +356,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Die Beschreibung ist zu lang (max. %d Zeichen)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Der eingegebene Aufenthaltsort ist zu lang (maximal 255 Zeichen)."
@@ -383,7 +382,7 @@ msgstr "Nutzername „%s“ wird bereits verwendet. Suche dir einen anderen aus.
 #: actions/apigroupcreate.php:286 actions/editgroup.php:234
 #: actions/newgroup.php:178
 msgid "Alias can't be the same as nickname."
-msgstr ""
+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
@@ -452,9 +451,8 @@ msgid "Cannot repeat your own notice."
 msgstr "Konnte Benachrichtigung nicht aktivieren."
 
 #: actions/apistatusesretweet.php:91
-#, fuzzy
 msgid "Already repeated that notice."
-msgstr "Nachricht löschen"
+msgstr "Nachricht bereits wiederholt"
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
@@ -475,7 +473,7 @@ msgstr ""
 msgid "Not found"
 msgstr "Nicht gefunden"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -531,7 +529,7 @@ msgstr "%s Nachrichten von allen!"
 #: actions/apitimelineretweetedbyme.php:112
 #, php-format
 msgid "Repeated by %s"
-msgstr ""
+msgstr "Von %s wiederholt"
 
 #: actions/apitimelineretweetedtome.php:111
 #, fuzzy, php-format
@@ -607,7 +605,7 @@ msgid "Preview"
 msgstr "Vorschau"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Löschen"
 
@@ -620,13 +618,13 @@ msgid "Crop"
 msgstr "Zuschneiden"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -697,7 +695,7 @@ msgstr "Ja"
 msgid "Block this user"
 msgstr "Diesen Benutzer blockieren"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Konnte Blockierungsdaten nicht speichern."
 
@@ -769,7 +767,7 @@ msgstr "Diese Adresse wurde bereits bestätigt."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Konnte Benutzerdaten nicht aktualisieren."
@@ -831,7 +829,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Nachricht löschen"
 
@@ -967,7 +965,7 @@ 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:167
+#: 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
@@ -1274,24 +1272,20 @@ msgid "A selection of some great users on %s"
 msgstr "Eine Auswahl der tollen Benutzer auf %s"
 
 #: actions/file.php:34
-#, fuzzy
 msgid "No notice ID."
-msgstr "Keine Nachricht"
+msgstr "Keine Nachrichten ID"
 
 #: actions/file.php:38
-#, fuzzy
 msgid "No notice."
 msgstr "Keine Nachricht"
 
 #: actions/file.php:42
-#, fuzzy
 msgid "No attachments."
 msgstr "Keine Anhänge vorhanden"
 
 #: actions/file.php:51
-#, fuzzy
 msgid "No uploaded attachments."
-msgstr "Kein solcher Anhang."
+msgstr "Kein Anhang geladen."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
@@ -1464,7 +1458,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1558,7 +1552,7 @@ msgstr "Nur Administratoren können Gruppenmitglieder entsperren."
 msgid "User is not blocked from group."
 msgstr "Dieser Nutzer ist nicht von der Gruppe gesperrt."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Fehler beim Freigeben des Benutzers."
 
@@ -1750,7 +1744,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Senden"
 
@@ -1872,7 +1866,7 @@ msgid "Error setting user. You are probably not authorized."
 msgstr ""
 "Fehler beim setzen des Benutzers. Du bist vermutlich nicht autorisiert."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Anmelden"
@@ -1984,7 +1978,7 @@ msgstr "Nachricht gesendet"
 msgid "Direct message to %s sent"
 msgstr "Direkte Nachricht an %s abgeschickt"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax-Fehler"
 
@@ -1992,7 +1986,7 @@ msgstr "Ajax-Fehler"
 msgid "New notice"
 msgstr "Neue Nachricht"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Nachricht hinzugefügt"
 
@@ -2422,73 +2416,82 @@ msgstr "Aufenthaltsort"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Wo du bist, beispielsweise „Stadt, Gebiet, Land“"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tags"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Tags über dich selbst (Buchstaben, Zahlen, -, ., und _) durch Kommas oder "
 "Leerzeichen getrennt"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Sprache"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Bevorzugte Sprache"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Zeitzone"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "In welcher Zeitzone befindest du dich üblicherweise?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Abonniere automatisch alle Kontakte, die mich abonnieren (sinnvoll für Nicht-"
 "Menschen)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Die Biografie ist zu lang (max. %d Zeichen)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Keine Zeitzone ausgewählt."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Die eingegebene Sprache ist zu lang (maximal 50 Zeichen)"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ungültiger Tag: „%s“"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Autosubscribe konnte nicht aktiviert werden."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Konnte Tags nicht speichern."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Konnte Profil nicht speichern."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Konnte Tags nicht speichern."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Einstellungen gespeichert."
 
@@ -2584,7 +2587,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Tag-Wolke"
 
@@ -2722,7 +2725,7 @@ msgstr "Entschuldigung, ungültiger Bestätigungscode."
 msgid "Registration successful"
 msgstr "Registrierung erfolgreich"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrieren"
@@ -2920,7 +2923,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "Du hast diesen Benutzer bereits blockiert."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Erstellt"
@@ -4061,16 +4064,16 @@ 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:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problem bei Speichern der Nachricht."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Datenbankfehler beim Einfügen der Antwort: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4126,131 +4129,131 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Seite ohne Titel"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Hauptnavigation"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Startseite"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Persönliches Profil und Freundes-Zeitleiste"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Konto"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Ändere deine E-Mail, dein Avatar, Passwort, Profil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Verbinden"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Konnte nicht zum Server umleiten: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Hauptnavigation"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Einladen"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Abmelden"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Von der Seite abmelden"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Neues Konto erstellen"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Auf der Seite anmelden"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hilfe"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Hilf mir!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Suchen"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Suche nach Leuten oder Text"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Seitennachricht"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Lokale Ansichten"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Neue Nachricht"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Unternavigation"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Über"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "AGB"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privatsphäre"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Quellcode"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "Stups"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet-Software-Lizenz"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4259,12 +4262,12 @@ msgstr ""
 "**%%site.name%%** ist ein Microbloggingdienst von [%%site.broughtby%%](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** ist ein Microbloggingdienst."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4275,32 +4278,32 @@ 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:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "StatusNet-Software-Lizenz"
 
-#: lib/action.php:799
+#: lib/action.php:800
 #, fuzzy
 msgid "All "
 msgstr "Alle "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "Lizenz."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Seitenerstellung"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Später"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Vorher"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Es gab ein Problem mit deinem Sessiontoken."
 
@@ -4356,6 +4359,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Passwort geändert"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Passwort geändert"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Befehl-Ergebnisse"
@@ -5094,7 +5107,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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr "von"
@@ -5160,73 +5173,77 @@ msgstr "Versende eine direkte Nachricht"
 msgid "To"
 msgstr "An"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "Verfügbare Zeichen"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Nachricht versenden"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Was ist los, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "Nein"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "im Zusammenhang"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Erstellt"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Auf diese Nachricht antworten"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Antworten"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Nachricht gelöscht."
index 91637b9302b32972f6d4b39887b023aaa058755b..33c1a818f1f245da4e9b48181f5b3b9d9b9d251c 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:05+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:10:56+0000\n"
 "Language-Team: Greek\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: el\n"
 "X-Message-Group: out-statusnet\n"
@@ -191,11 +191,11 @@ msgstr "Απέτυχε η ενημέρωση του χρήστη."
 msgid "You cannot block yourself!"
 msgstr "Δεν μπορείτε να εμποδίσετε τον εαυτό σας!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -311,31 +311,31 @@ msgid "Could not find target user."
 msgstr "Απέτυχε η εύρεση οποιασδήποτε κατάστασης."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Το ψευδώνυμο πρέπει να έχει μόνο πεζούς χαρακτήρες και χωρίς κενά."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Το ψευδώνυμο είναι ήδη σε χρήση. Δοκιμάστε κάποιο άλλο."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr ""
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Το ονοματεπώνυμο είναι πολύ μεγάλο (μέγιστο 255 χαρακτ.)."
@@ -346,7 +346,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Η περιγραφή είναι πολύ μεγάλη (μέγιστο %d χαρακτ.)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Η τοποθεσία είναι πολύ μεγάλη (μέγιστο 255 χαρακτ.)."
@@ -463,7 +463,7 @@ msgstr ""
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -592,7 +592,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Διαγραφή"
 
@@ -605,13 +605,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -684,7 +684,7 @@ msgstr "Ναί"
 msgid "Block this user"
 msgstr ""
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -756,7 +756,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Απέτυχε η ενημέρωση του χρήστη."
@@ -818,7 +818,7 @@ msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυ
 msgid "Do not delete this notice"
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -956,7 +956,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1455,7 +1455,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Διαχειριστής"
 
@@ -1544,7 +1544,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr ""
 
@@ -1719,7 +1719,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr ""
 
@@ -1815,7 +1815,7 @@ msgstr "Λάθος όνομα χρήστη ή κωδικός"
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Σύνδεση"
@@ -1927,7 +1927,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1935,7 +1935,7 @@ msgstr ""
 msgid "New notice"
 msgstr ""
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr ""
 
@@ -2363,34 +2363,38 @@ msgstr "Τοποθεσία"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr ""
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 #, fuzzy
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
@@ -2398,38 +2402,43 @@ msgstr ""
 "Αυτόματα γίνε συνδρομητής σε όσους γίνονται συνδρομητές σε μένα  (χρήση "
 "κυρίως από λογισμικό και όχι ανθρώπους)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Το βιογραφικό είναι πολύ μεγάλο (μέγιστο 140 χαρακτ.)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Απέτυχε η ενημέρωση του χρήστη για την αυτόματη συνδρομή."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Απέτυχε η αποθήκευση του προφίλ."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Αδύνατη η αποθήκευση του προφίλ."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr ""
 
@@ -2523,7 +2532,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2661,7 +2670,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2849,7 +2858,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Δημιουργία"
@@ -3940,16 +3949,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Σφάλμα βάσης δεδομένων κατά την εισαγωγή απάντησης: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4005,129 +4014,129 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Αρχή"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Λογαριασμός"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Σύνδεση"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Αδυναμία ανακατεύθηνσης στο διακομιστή: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Προσκάλεσε φίλους και συναδέλφους σου να γίνουν μέλη στο %s"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Αποσύνδεση"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Δημιουργία έναν λογαριασμού"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Βοήθεια"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Βοηθήστε με!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Περί"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Συχνές ερωτήσεις"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Επικοινωνία"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, fuzzy, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4136,13 +4145,13 @@ msgstr ""
 "To **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου) που "
 "έφερε κοντά σας το  [%%site.broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, fuzzy, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 "Το **%%site.name%%** είναι μία υπηρεσία microblogging (μικρο-ιστολογίου). "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4150,31 +4159,31 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4229,6 +4238,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Ο κωδικός αποθηκεύτηκε."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Ο κωδικός αποθηκεύτηκε."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4897,7 +4916,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "από"
 
@@ -4962,69 +4981,73 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Διαθέσιμοι χαρακτήρες"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr ""
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Επαναλαμβάνεται από"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Ρυθμίσεις OpenID"
index 115d94ace87c6b0905663c6ec6e935533840f045..61660c2fd75a49733919e4f8486d82021bb5a40b 100644 (file)
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:08+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:01+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: en-gb\n"
 "X-Message-Group: out-statusnet\n"
@@ -201,11 +201,11 @@ msgstr "Could not update your design."
 msgid "You cannot block yourself!"
 msgstr "You cannot block yourself!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Block user failed."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Unblock user failed."
 
@@ -317,31 +317,31 @@ msgid "Could not find target user."
 msgstr "Could not find target user."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Nickname must have only lowercase letters and numbers, and no spaces."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Nickname already in use. Try another one."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Not a valid nickname."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Homepage is not a valid URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Full name is too long (max 255 chars)."
@@ -352,7 +352,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Description is too long (max %d chars)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Location is too long (max 255 chars)."
@@ -467,7 +467,7 @@ msgstr "That's too long. Max notice size is %d chars."
 msgid "Not found"
 msgstr "Not found"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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."
@@ -596,7 +596,7 @@ msgid "Preview"
 msgstr "Preview"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Delete"
 
@@ -609,13 +609,13 @@ msgid "Crop"
 msgstr "Crop"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -688,7 +688,7 @@ msgstr "Yes"
 msgid "Block this user"
 msgstr "Block this user"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Failed to save block information."
 
@@ -760,7 +760,7 @@ msgstr "That address has already been confirmed."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Couldn't update user."
@@ -822,7 +822,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Delete this notice"
 
@@ -839,9 +839,8 @@ msgid "You can only delete local users."
 msgstr "You can only delete local users."
 
 #: actions/deleteuser.php:110 actions/deleteuser.php:133
-#, fuzzy
 msgid "Delete user"
-msgstr "Delete"
+msgstr "Delete user"
 
 #: actions/deleteuser.php:135
 msgid ""
@@ -865,23 +864,21 @@ msgid "Design settings for this StatusNet site."
 msgstr "Design settings for this StausNet site."
 
 #: actions/designadminpanel.php:275
-#, fuzzy
 msgid "Invalid logo URL."
-msgstr "Invalid size."
+msgstr "nvalid logo URL."
 
 #: actions/designadminpanel.php:279
-#, fuzzy, php-format
+#, php-format
 msgid "Theme not available: %s"
-msgstr "This page is not available in a "
+msgstr "Theme not available: %s"
 
 #: actions/designadminpanel.php:375
 msgid "Change logo"
 msgstr "Change logo"
 
 #: actions/designadminpanel.php:380
-#, fuzzy
 msgid "Site logo"
-msgstr "Invite"
+msgstr "Site logo"
 
 #: actions/designadminpanel.php:387
 #, fuzzy
@@ -965,7 +962,7 @@ 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:167
+#: 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
@@ -1476,7 +1473,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1568,7 +1565,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "User is not blocked from group."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Error removing the block."
 
@@ -1750,7 +1747,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Send"
 
@@ -1874,7 +1871,7 @@ msgstr "Incorrect username or password."
 msgid "Error setting user. You are probably not authorized."
 msgstr "You are not authorised."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Login"
@@ -1986,7 +1983,7 @@ msgstr "Message sent"
 msgid "Direct message to %s sent"
 msgstr "Direct message to %s sent"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax Error"
 
@@ -1994,7 +1991,7 @@ msgstr "Ajax Error"
 msgid "New notice"
 msgstr "New notice"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Notice posted"
 
@@ -2424,71 +2421,80 @@ msgstr "Location"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Where you are, like \"City, State (or Region), Country\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tags"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Language"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Preferred language"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Timezone"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "In which timezone are you?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Bio is too long (max %d chars)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Timezone not selected."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Language is too long (max 50 chars)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Invalid tag: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Couldn't update user for autosubscribe."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Couldn't save tags."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Couldn't save profile."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Couldn't save tags."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Settings saved."
 
@@ -2591,7 +2597,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Tag cloud"
 
@@ -2730,7 +2736,7 @@ msgstr "Error with confirmation code."
 msgid "Registration successful"
 msgstr "Registration successful"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Register"
@@ -2923,7 +2929,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Created"
@@ -4049,16 +4055,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "You are banned from posting notices on this site."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problem saving notice."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "DB error inserting reply: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4113,130 +4119,130 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Untitled page"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Primary site navigation"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Home"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Personal profile and friends timeline"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Account"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Change your e-mail, avatar, password, profile"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Connect"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Could not redirect to server: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Primary site navigation"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invite"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Logout"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Logout from the site"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Create an account"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Login to the site"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Help"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Help me!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Search"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Search for people or text"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Site notice"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Local views"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Page notice"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Secondary site navigation"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "About"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "F.A.Q."
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Source"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Badge"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet software licence"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4245,12 +4251,12 @@ msgstr ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** is a microblogging service."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4261,31 +4267,31 @@ msgstr ""
 "s, available under the [GNU Affero General Public Licence](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Site content license"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "All "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licence."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Pagination"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "After"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Before"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "There was a problem with your session token."
 
@@ -4344,6 +4350,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Password change"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Password change"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Command results"
@@ -5033,7 +5049,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr "from"
@@ -5098,71 +5114,75 @@ msgstr "Send a direct notice"
 msgid "To"
 msgstr "To"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Available characters"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Send a notice"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "What's up, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "in context"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Created"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Reply to this notice"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Reply"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Notice deleted."
index e0e5ebba71379ca36ee6e7818b92fabf2649ef84..93320db277d3931b26f702ebc73f65c9a6cbce35 100644 (file)
@@ -11,12 +11,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:11+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:06+0000\n"
 "Language-Team: Spanish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: es\n"
 "X-Message-Group: out-statusnet\n"
@@ -196,11 +196,11 @@ msgstr "No se pudo actualizar el usuario."
 msgid "You cannot block yourself!"
 msgstr "¡No puedes bloquearte a tí mismo!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Falló bloquear usuario."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Falló desbloquear usuario."
 
@@ -312,7 +312,7 @@ msgid "Could not find target user."
 msgstr "No se pudo encontrar ningún usuario de destino."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -320,25 +320,25 @@ msgstr ""
 "espacios."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: 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."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Apodo no válido"
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "La página de inicio no es un URL válido."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tu nombre es demasiado largo (max. 255 carac.)"
@@ -349,7 +349,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "La descripción es demasiado larga (máx. %d caracteres)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "La ubicación es demasiado larga (máx. 255 caracteres)."
@@ -467,7 +467,7 @@ msgstr "Demasiado largo. La longitud máxima es de 140 caracteres. "
 msgid "Not found"
 msgstr "No encontrado"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -598,7 +598,7 @@ msgid "Preview"
 msgstr "Vista previa"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Borrar"
 
@@ -611,13 +611,13 @@ msgid "Crop"
 msgstr "Cortar"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -691,7 +691,7 @@ msgstr "Sí"
 msgid "Block this user"
 msgstr "Bloquear este usuario."
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "No se guardó información de bloqueo."
 
@@ -764,7 +764,7 @@ msgstr "Esa dirección ya fue confirmada."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "No se pudo actualizar el usuario."
@@ -828,7 +828,7 @@ msgstr "¿Estás seguro de que quieres eliminar este aviso?"
 msgid "Do not delete this notice"
 msgstr "No se puede eliminar este aviso."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Borrar este aviso"
 
@@ -971,7 +971,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1475,7 +1475,7 @@ msgstr "Miembros del grupo %s, página %d"
 msgid "A list of the users in this group."
 msgstr "Lista de los usuarios en este grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1569,7 +1569,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "El usuario te ha bloqueado."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "Error al sacar bloqueo."
@@ -1757,7 +1757,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Enviar"
 
@@ -1884,7 +1884,7 @@ msgstr "Nombre de usuario o contraseña incorrectos."
 msgid "Error setting user. You are probably not authorized."
 msgstr "No autorizado."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inicio de sesión"
@@ -1999,7 +1999,7 @@ msgstr "Mensaje"
 msgid "Direct message to %s sent"
 msgstr "Se envió mensaje directo a %s"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Error de Ajax"
 
@@ -2007,7 +2007,7 @@ msgstr "Error de Ajax"
 msgid "New notice"
 msgstr "Nuevo aviso"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "Aviso publicado"
@@ -2454,72 +2454,81 @@ msgstr "Ubicación"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Dónde estás, por ejemplo \"Ciudad, Estado (o Región), País\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tags"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 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:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Idioma"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Lenguaje de preferencia"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Zona horaria"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "En que zona horaria se encuentra normalmente?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Suscribirse automáticamente a quien quiera que se suscriba a mí (es mejor "
 "para no-humanos)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "La biografía es demasiado larga (máx. 140 caracteres)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Zona horaria no seleccionada"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Idioma es muy largo ( max 50 car.)"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Tag no válido: '%s' "
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "No se pudo actualizar el usuario para autosuscribirse."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "No se pudo guardar tags."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "No se pudo guardar el perfil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "No se pudo guardar tags."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Se guardó configuración."
 
@@ -2618,7 +2627,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Nube de tags"
 
@@ -2761,7 +2770,7 @@ msgstr "Error con el código de confirmación."
 msgid "Registration successful"
 msgstr "Registro exitoso."
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrarse"
@@ -2959,7 +2968,7 @@ msgstr "No puedes registrarte si no estás de acuerdo con la licencia."
 msgid "You already repeated that notice."
 msgstr "Ya has bloqueado este usuario."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Crear"
@@ -4109,16 +4118,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Tienes prohibido publicar avisos en este sitio."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Hubo un problema al guardar el aviso."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Error de BD al insertar respuesta: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4174,129 +4183,129 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Página sin título"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navegación de sitio primario"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Inicio"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Perfil personal y línea de tiempo de amigos"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Cuenta"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Cambia tu correo electrónico, avatar, contraseña, perfil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Conectarse"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Conectar a los servicios"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Navegación de sitio primario"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitar"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Salir"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Salir de sitio"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Crear una cuenta"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Ingresar a sitio"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Ayuda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Ayúdame!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Buscar"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Buscar personas o texto"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Aviso de sitio"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Vistas locales"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Aviso de página"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Navegación de sitio secundario"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Acerca de"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Preguntas Frecuentes"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacidad"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Fuente"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Ponerse en contacto"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Insignia"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licencia de software de StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4305,12 +4314,12 @@ msgstr ""
 "**%%site.name%%** es un servicio de microblogueo de [%%site.broughtby%%**](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** es un servicio de microblogueo."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4321,31 +4330,31 @@ msgstr ""
 "disponible bajo la [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licencia de contenido del sitio"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Todo"
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "Licencia."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginación"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Después"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Antes"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Hubo problemas con tu clave de sesión."
 
@@ -4404,6 +4413,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Cambio de contraseña "
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Cambio de contraseña "
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultados de comando"
@@ -5090,7 +5109,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "desde"
 
@@ -5154,72 +5173,76 @@ msgstr "Enviar un aviso directo"
 msgid "To"
 msgstr "Para"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "Caracteres disponibles"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Enviar un aviso"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "¿Qué tal, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "en"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "en contexto"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Crear"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Responder este aviso."
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Aviso borrado"
index f6c9559aaf252fb2ebab26b31f6350f1e4008eb2..bce137a35db856e0b773576692c170aa36495d5c 100644 (file)
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:17+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:18+0000\n"
 "Last-Translator: Ahmad Sufi Mahmudi\n"
 "Language-Team: Persian\n"
 "MIME-Version: 1.0\n"
@@ -20,7 +20,7 @@ msgstr ""
 "X-Language-Code: fa\n"
 "X-Message-Group: out-statusnet\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 
 #: actions/all.php:63 actions/public.php:97 actions/replies.php:92
@@ -195,11 +195,11 @@ msgstr "نمی‌توان طرح‌تان به‌هنگام‌سازی کرد."
 msgid "You cannot block yourself!"
 msgstr "شما نمی‌توانید خودتان رو مسدود کنید!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "مسدود کردن کاربر شکست خورد."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "باز کردن کاربر ناموفق بود."
 
@@ -311,31 +311,31 @@ msgid "Could not find target user."
 msgstr "نمی‌توان کاربر هدف را پیدا کرد."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "لقب باید شامل حروف کوچک و اعداد و بدون فاصله باشد."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "این لقب در حال حاضر ثبت شده است. لطفا یکی دیگر انتخاب کنید."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "لقب نا معتبر."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "برگهٔ آغازین یک نشانی معتبر نیست."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "نام کامل طولانی است (۲۵۵ حرف در حالت بیشینه(."
@@ -346,7 +346,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "توصیف بسیار زیاد است (حداکثر %d حرف)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "مکان طولانی است (حداکثر ۲۵۵ حرف)"
@@ -461,7 +461,7 @@ msgstr "خیلی طولانی است. حداکثر طول مجاز پیام %d 
 msgid "Not found"
 msgstr "یافت نشد"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "حداکثر طول پیام %d حرف است که شامل ضمیمه نیز می‌باشد"
@@ -591,7 +591,7 @@ msgid "Preview"
 msgstr "پیش‌نمایش"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "حذف"
 
@@ -604,13 +604,13 @@ msgid "Crop"
 msgstr "برش"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -684,7 +684,7 @@ msgstr "بله"
 msgid "Block this user"
 msgstr "کاربر را مسدود کن"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -756,7 +756,7 @@ msgstr "آن نشانی در حال حاضر تصدیق شده است."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "نمی‌توان کاربر را به روز کرد."
@@ -818,7 +818,7 @@ msgstr "آیا اطمینان دارید که می‌خواهید این پیا
 msgid "Do not delete this notice"
 msgstr "این پیام را پاک نکن"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "این پیام را پاک کن"
 
@@ -956,7 +956,7 @@ msgstr "برگشت به حالت پیش گزیده"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1445,7 +1445,7 @@ msgstr "اعضای گروه %s، صفحهٔ %d"
 msgid "A list of the users in this group."
 msgstr "یک فهرست از کاربران در این گروه"
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "مدیر"
 
@@ -1541,7 +1541,7 @@ msgstr "تنها یک مدیر توانایی برداشتن منع کاربرا
 msgid "User is not blocked from group."
 msgstr "کاربر از گروه منع نشده است."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "اشکال در پاکسازی"
 
@@ -1722,7 +1722,7 @@ msgstr "پیام خصوصی"
 msgid "Optionally add a personal message to the invitation."
 msgstr "اگر دوست دارید می‌توانید یک پیام به همراه دعوت نامه ارسال کنید."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "فرستادن"
 
@@ -1818,7 +1818,7 @@ msgstr "نام کاربری یا رمز عبور نادرست."
 msgid "Error setting user. You are probably not authorized."
 msgstr "خطا در تنظیم کاربر. شما احتمالا اجازه ی این کار را ندارید."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ورود"
@@ -1929,7 +1929,7 @@ msgstr "پیام فرستاده‌شد"
 msgid "Direct message to %s sent"
 msgstr "پیام مستقیم به %s فرستاده شد."
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "اشکال آژاکسی"
 
@@ -1937,7 +1937,7 @@ msgstr "اشکال آژاکسی"
 msgid "New notice"
 msgstr "آگهی جدید"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "آگهی فرستاده‌شد."
 
@@ -2017,7 +2017,7 @@ msgstr "نوع محتوا "
 
 #: actions/oembed.php:160
 msgid "Only "
-msgstr "فقط"
+msgstr " فقط"
 
 #: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1031
 #: lib/api.php:1059 lib/api.php:1169
@@ -2368,69 +2368,78 @@ msgstr "موقعیت"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "برچسب‌ها"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "زبان"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "زبان برگزیده"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "منطقهٔ‌زمانی"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "شما معمولا در کدام منطقه ی زمانی هستید؟"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "منطقه‌ی زمانی انتخاب نشده است."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "کلام بسیار طولانی است( حداکثر ۵۰ کاراکتر)"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "نشان نادرست »%s«"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "نمی‌توان نشان را ذخیره کرد."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "نمی‌توان شناسه را ذخیره کرد."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "نمی‌توان نشان را ذخیره کرد."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "تنظیمات ذخیره شد."
 
@@ -2523,7 +2532,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2663,7 +2672,7 @@ msgstr "با عرض تاسف، کد دعوت نا معتبر است."
 msgid "Registration successful"
 msgstr "ثبت نام با موفقیت انجام شد."
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "ثبت نام"
@@ -2831,7 +2840,7 @@ msgstr "شما نمی توانید آگهی خودتان را تکرار کنی
 msgid "You already repeated that notice."
 msgstr "شما قبلا آن آگهی را تکرار کردید."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr ""
 
@@ -3911,16 +3920,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "شما از فرستادن پست در این سایت مردود شدید ."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "مشکل در ذخیره کردن آگهی."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -3975,140 +3984,140 @@ msgstr ""
 msgid "Untitled page"
 msgstr "صفحه ی بدون عنوان"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "خانه"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "حساب کاربری"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "آدرس ایمیل، آواتار، کلمه ی عبور، پروفایل خود را تغییر دهید"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "وصل‌شدن"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "متصل شدن به خدمات"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "تغییر پیکربندی سایت"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "دعوت‌کردن"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr " به شما ملحق شوند  %s دوستان و همکاران را دعوت کنید تا در"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "خروج"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "خارج شدن از سایت ."
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "یک حساب کاربری بسازید"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "ورود به وب‌گاه"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "کمک"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "به من کمک کنید!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "جست‌وجو"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "جستجو برای شخص با متن"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "خبر سایت"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "دید محلی"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "خبر صفحه"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "دربارهٔ"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "سوال‌های رایج"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "خصوصی"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "منبع"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "تماس"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet مجوز نرم افزار"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4116,31 +4125,31 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "مجوز محتویات سایت"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "همه "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "مجوز."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "صفحه بندى"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "بعد از"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "قبل از"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4192,6 +4201,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "تغییر گذرواژه"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "تغییر گذرواژه"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "نتیجه دستور"
@@ -4861,7 +4880,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "از"
 
@@ -4926,69 +4945,73 @@ msgstr "یک آگهی مستقیم بفرستید."
 msgid "To"
 msgstr "به"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "کاراکترهای موجود"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "یک آگهی بفرستید"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "چه شده %s ?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "ضمیمه کردن"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "یک فایل ضمیمه کنید"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "در"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "در زمینه"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "تکرار از"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "به این آگهی جواب دهید"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "جواب دادن"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "آگهی تکرار شد"
 
index 8887a7b91d4f15cbe38e42be464358fb51fa9ce0..ece1dfee10a6d8a2b41fbaf7bab93bbf4564e4e4 100644 (file)
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:14+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:14+0000\n"
 "Language-Team: Finnish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: fi\n"
 "X-Message-Group: out-statusnet\n"
@@ -198,11 +198,11 @@ msgstr "Ei voitu päivittää käyttäjää."
 msgid "You cannot block yourself!"
 msgstr "Et voi lopettaa itsesi tilausta!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Käyttäjän esto epäonnistui."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Käyttäjän eston poisto epäonnistui."
 
@@ -317,7 +317,7 @@ msgid "Could not find target user."
 msgstr "Ei löytynyt yhtään päivitystä."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -325,25 +325,25 @@ msgstr ""
 "välilyöntiä."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Tunnus on jo käytössä. Yritä toista tunnusta."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Tuo ei ole kelvollinen tunnus."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Kotisivun verkko-osoite ei ole toimiva."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Koko nimi on liian pitkä (max 255 merkkiä)."
@@ -354,7 +354,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "kuvaus on liian pitkä (max 140 merkkiä)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Kotipaikka on liian pitkä (max 255 merkkiä)."
@@ -471,7 +471,7 @@ msgstr "Päivitys on liian pitkä. Maksimipituus on %d merkkiä."
 msgid "Not found"
 msgstr "Ei löytynyt"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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."
@@ -601,7 +601,7 @@ msgid "Preview"
 msgstr "Esikatselu"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Poista"
 
@@ -614,13 +614,13 @@ msgid "Crop"
 msgstr "Rajaa"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -693,7 +693,7 @@ msgstr "Kyllä"
 msgid "Block this user"
 msgstr "Estä tämä käyttäjä"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Käyttäjän estotiedon tallennus epäonnistui."
 
@@ -766,7 +766,7 @@ msgstr "Tämä osoite on jo vahvistettu."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Ei voitu päivittää käyttäjää."
@@ -828,7 +828,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Poista tämä päivitys"
 
@@ -973,7 +973,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1472,7 +1472,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Ylläpito"
 
@@ -1562,7 +1562,7 @@ msgstr "Vain ylläpitäjä voi poistaa eston ryhmän jäseniltä."
 msgid "User is not blocked from group."
 msgstr "Käyttäjää ei ole estetty ryhmästä."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Tapahtui virhe, kun estoa poistettiin."
 
@@ -1751,7 +1751,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Lähetä"
 
@@ -1874,7 +1874,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Kirjaudu sisään"
@@ -1988,7 +1988,7 @@ msgstr "Viesti lähetetty"
 msgid "Direct message to %s sent"
 msgstr "Suora viesti käyttäjälle %s lähetetty"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax-virhe"
 
@@ -1996,7 +1996,7 @@ msgstr "Ajax-virhe"
 msgid "New notice"
 msgstr "Uusi päivitys"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Päivitys lähetetty"
 
@@ -2439,73 +2439,82 @@ msgstr "Kotipaikka"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Olinpaikka kuten \"Kaupunki, Maakunta (tai Lääni), Maa\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tagit"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 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:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Kieli"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Ensisijainen kieli"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Aikavyöhyke"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Missä aikavyöhykkeessä olet normaalisti?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Tilaa automaattisesti kaikki, jotka tilaavat päivitykseni (ei sovi hyvin "
 "ihmiskäyttäjille)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "\"Tietoja\" on liian pitkä (max 140 merkkiä)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Aikavyöhykettä ei ole valittu."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Kieli on liian pitkä (max 50 merkkiä)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Virheellinen tagi: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Ei voitu asettaa käyttäjälle automaattista tilausta."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Tageja ei voitu tallentaa."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Ei voitu tallentaa profiilia."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Tageja ei voitu tallentaa."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Asetukset tallennettu."
 
@@ -2602,7 +2611,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Tagipilvi"
 
@@ -2742,7 +2751,7 @@ msgstr "Virheellinen kutsukoodin."
 msgid "Registration successful"
 msgstr "Rekisteröityminen onnistui"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Rekisteröidy"
@@ -2942,7 +2951,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Luotu"
@@ -4081,16 +4090,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Päivityksesi tähän palveluun on estetty."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Ongelma päivityksen tallentamisessa."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Tietokantavirhe tallennettaessa vastausta: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4146,131 +4155,131 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Nimetön sivu"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Ensisijainen sivunavigointi"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Koti"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Henkilökohtainen profiili ja kavereiden aikajana"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Käyttäjätili"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Muuta sähköpostiosoitettasi, kuvaasi, salasanaasi, profiiliasi"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Yhdistä"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Ei voitu uudelleenohjata palvelimelle: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Ensisijainen sivunavigointi"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Kutsu"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Kirjaudu ulos"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Kirjaudu ulos palvelusta"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Luo uusi käyttäjätili"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Kirjaudu sisään palveluun"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Ohjeet"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Auta minua!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Haku"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Hae ihmisiä tai tekstiä"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Palvelun ilmoitus"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Paikalliset näkymät"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Sivuilmoitus"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Toissijainen sivunavigointi"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Tietoa"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "UKK"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Yksityisyys"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Lähdekoodi"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Ota yhteyttä"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "Tönäise"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet-ohjelmiston lisenssi"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4279,12 +4288,12 @@ msgstr ""
 "**%%site.name%%** on mikroblogipalvelu, jonka tarjoaa [%%site.broughtby%%](%%"
 "site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** on mikroblogipalvelu. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4295,32 +4304,32 @@ msgstr ""
 "versio %s, saatavilla lisenssillä [GNU Affero General Public License](http://"
 "www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNet-ohjelmiston lisenssi"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Kaikki "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "lisenssi."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Sivutus"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Myöhemmin"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Aiemmin"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Istuntoavaimesi kanssa oli ongelma."
 
@@ -4380,6 +4389,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Salasanan vaihto"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Salasanan vaihto"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Komennon tulos"
@@ -5076,7 +5095,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " lähteestä "
@@ -5141,72 +5160,76 @@ msgstr "Lähetä suora viesti"
 msgid "To"
 msgstr "Vastaanottaja"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Sallitut merkit"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Lähetä päivitys"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Mitä teet juuri nyt, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "Ei"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Ei sisältöä!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Luotu"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Vastaa tähän päivitykseen"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Vastaus"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Päivitys on poistettu."
index c3b1a05274cbd79040749cac8e9ba85e84357b15..0dda77224512087e56f5bdba4c9294d7ee7c97e5 100644 (file)
@@ -13,12 +13,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:21+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:23+0000\n"
 "Language-Team: French\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: fr\n"
 "X-Message-Group: out-statusnet\n"
@@ -204,11 +204,11 @@ msgstr "Impossible de mettre à jour votre conception."
 msgid "You cannot block yourself!"
 msgstr "Vous ne pouvez pas vous bloquer vous-même !"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Le blocage de l’utilisateur a échoué."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Le déblocage de l’utilisateur a échoué."
 
@@ -322,7 +322,7 @@ msgid "Could not find target user."
 msgstr "Impossible de trouver l’utilisateur cible."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -330,25 +330,25 @@ msgstr ""
 "chiffres, sans espaces."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Pseudo déjà utilisé. Essayez-en un autre."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Pseudo invalide."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "L’adresse du site personnel n’est pas un URL valide. "
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nom complet trop long (maximum de 255 caractères)."
@@ -359,7 +359,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "La description est trop longue (%d caractères maximum)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Emplacement trop long (maximum de 255 caractères)."
@@ -474,7 +474,7 @@ msgstr "C’est trop long ! La taille maximale de l’avis est de %d caractères
 msgid "Not found"
 msgstr "Non trouvé"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -607,7 +607,7 @@ msgid "Preview"
 msgstr "Aperçu"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Supprimer"
 
@@ -620,13 +620,13 @@ msgid "Crop"
 msgstr "Recadrer"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -701,7 +701,7 @@ msgstr "Oui"
 msgid "Block this user"
 msgstr "Bloquer cet utilisateur"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Impossible d’enregistrer les informations de blocage."
 
@@ -773,7 +773,7 @@ msgstr "Cette adresse a déjà été confirmée."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Impossible de mettre à jour l’utilisateur."
@@ -835,7 +835,7 @@ msgstr "Êtes-vous sûr(e) de vouloir supprimer cet avis ?"
 msgid "Do not delete this notice"
 msgstr "Ne pas supprimer cet avis"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Supprimer cet avis"
 
@@ -975,7 +975,7 @@ 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:167
+#: 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
@@ -1477,7 +1477,7 @@ msgstr "Membres du groupe %s - page %d"
 msgid "A list of the users in this group."
 msgstr "Liste des utilisateurs inscrits à ce groupe."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrer"
 
@@ -1577,7 +1577,7 @@ msgstr "Seul un administrateur peut débloquer les membres du groupes."
 msgid "User is not blocked from group."
 msgstr "Cet utilisateur n’est pas bloqué du groupe."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Erreur lors de l’annulation du blocage."
 
@@ -1768,7 +1768,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Envoyer"
 
@@ -1894,7 +1894,7 @@ msgstr ""
 "Erreur lors de la mise en place de l'utilisateur. Vous n'y êtes probablement "
 "pas autorisé."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Ouvrir une session"
@@ -2012,7 +2012,7 @@ msgstr "Message envoyé"
 msgid "Direct message to %s sent"
 msgstr "Votre message a été envoyé à %s"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Erreur Ajax"
 
@@ -2020,7 +2020,7 @@ msgstr "Erreur Ajax"
 msgid "New notice"
 msgstr "Nouvel avis"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Avis publié"
 
@@ -2454,73 +2454,81 @@ msgstr "Emplacement"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Indiquez votre emplacement, ex.: « Ville, État (ou région), Pays »"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Partager ma localisation lorsque je poste des avis"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Marques"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Marques pour vous-même (lettres, chiffres, -, ., et _), séparées par des "
 "virgules ou des espaces"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Langue"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Langue préférée"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuseau horaire"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Quel est votre fuseau horaire habituel ?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "M’abonner automatiquement à tous ceux qui s’abonnent à moi (recommandé pour "
 "les utilisateurs non-humains)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "La bio est trop longue (%d caractères maximum)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Aucun fuseau horaire n’a été choisi."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "La langue est trop longue (255 caractères maximum)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Marque invalide : « %s »"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Impossible de mettre à jour l’auto-abonnement."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Impossible d’enregistrer les préférences de localisation."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Impossible d’enregistrer le profil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Impossible d’enregistrer les marques."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Préférences enregistrées."
 
@@ -2627,7 +2635,7 @@ msgstr ""
 "Pourquoi ne pas [créer un compte](%%action.register%%) et être le premier à "
 "en poster un !"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Nuage de marques"
 
@@ -2771,7 +2779,7 @@ msgstr "Désolé, code d’invitation invalide."
 msgid "Registration successful"
 msgstr "Compte créé avec succès"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Créer un compte"
@@ -2964,7 +2972,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Repris"
 
@@ -4126,16 +4134,16 @@ msgstr ""
 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:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problème lors de l’enregistrement de l’avis."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, 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:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4190,128 +4198,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Page sans nom"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navigation primaire du site"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Accueil"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Profil personnel et flux des amis"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Compte"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Modifier votre courriel, avatar, mot de passe, profil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Connecter"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Se connecter aux services"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Modifier la configuration du site"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Inviter"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Fermeture de session"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Fermer la session"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Créer un compte"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Ouvrir une session"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Aide"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "À l’aide !"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Rechercher"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Rechercher des personnes ou du texte"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Notice du site"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Vues locales"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Avis de la page"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Navigation secondaire du site"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "À propos"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "CGU"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Confidentialité"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Source"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Insigne"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licence du logiciel StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4320,12 +4328,12 @@ msgstr ""
 "**%%site.name%%** est un service de microblogging qui vous est proposé par  "
 "[%%site.broughtby%%](%%site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** est un service de micro-blogging."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4336,31 +4344,31 @@ 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:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licence du contenu du site"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Tous "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licence."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Pagination"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Après"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Avant"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Un problème est survenu avec votre jeton de session."
 
@@ -4412,6 +4420,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Modification du mot de passe"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Modification du mot de passe"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Résultats de la commande"
@@ -5215,7 +5233,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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "de"
 
@@ -5283,69 +5301,73 @@ msgstr "Envoyer un message direct"
 msgid "To"
 msgstr "À"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Caractères restants"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Envoyer un avis"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Quoi de neuf, %s ?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Attacher"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Attacher un fichier"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Partager votre localisation"
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "chez"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "dans le contexte"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Repris par"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Répondre à cet avis"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Répondre"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Avis repris"
 
index 8da467cea66fe38a832607550a8ad8d68712a96d..00e8c6b8963655c7329bfb49ed1ab735a8a88247 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:24+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:28+0000\n"
 "Language-Team: Irish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ga\n"
 "X-Message-Group: out-statusnet\n"
@@ -195,11 +195,11 @@ msgstr "Non se puido actualizar o usuario."
 msgid "You cannot block yourself!"
 msgstr "Non se puido actualizar o usuario."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Bloqueo de usuario fallido."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Desbloqueo de usuario fallido."
 
@@ -320,31 +320,31 @@ msgid "Could not find target user."
 msgstr "Non se puido atopar ningún estado"
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "O alcume debe ter só letras minúsculas e números, e sen espazos."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Non é un alcume válido."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "A páxina persoal semella que non é unha URL válida."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "O nome completo é demasiado longo (max 255 car)."
@@ -355,7 +355,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "O teu Bio é demasiado longo (max 140 car.)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "A localización é demasiado longa (max 255 car.)."
@@ -475,7 +475,7 @@ msgstr ""
 msgid "Not found"
 msgstr "Non atopado"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -607,7 +607,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Delete"
 msgstr "eliminar"
@@ -621,13 +621,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -704,7 +704,7 @@ msgstr "Si"
 msgid "Block this user"
 msgstr "Bloquear usuario"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Erro ao gardar información de bloqueo."
 
@@ -781,7 +781,7 @@ msgstr "Esa dirección xa foi confirmada."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Non se puido actualizar o usuario."
@@ -846,7 +846,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 #, fuzzy
 msgid "Delete this notice"
 msgstr "Eliminar chío"
@@ -995,7 +995,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1512,7 +1512,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1605,7 +1605,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "O usuario bloqueoute."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Acounteceu un erro borrando o bloqueo."
 
@@ -1789,7 +1789,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Enviar"
 
@@ -1916,7 +1916,7 @@ msgstr "Usuario ou contrasinal incorrectos."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Non está autorizado."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Inicio de sesión"
@@ -2031,7 +2031,7 @@ msgstr "Non hai mensaxes de texto!"
 msgid "Direct message to %s sent"
 msgstr "Mensaxe directo a %s enviado"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Erro de Ajax"
 
@@ -2039,7 +2039,7 @@ msgstr "Erro de Ajax"
 msgid "New notice"
 msgstr "Novo chío"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Chío publicado"
 
@@ -2482,73 +2482,82 @@ msgstr "Localización"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "¿Onde estas, coma \"Cidade, Provincia, País\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tags"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Etiquetas para o teu usuario (letras, números, -, ., e _), separados por "
 "coma ou espazo"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Linguaxe"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Linguaxe preferida"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuso Horario"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "En que fuso horario estas normalmente?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Suscribirse automáticamente a calquera que se suscriba a min (o mellor para "
 "non humáns)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "O teu Bio é demasiado longo (max 140 car.)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Fuso Horario non seleccionado"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "A Linguaxe é demasiado longa (max 50 car.)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta inválida: '%s'"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Non se puido actualizar o usuario para autosuscrición."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Non se puideron gardar as etiquetas."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Non se puido gardar o perfil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Non se puideron gardar as etiquetas."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Configuracións gardadas."
 
@@ -2653,7 +2662,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2792,7 +2801,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:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Rexistrar"
@@ -2993,7 +3002,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Crear"
@@ -4154,16 +4163,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Tes restrinxido o envio de chíos neste sitio."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Aconteceu un erro ó gardar o chío."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Erro ó inserir a contestación na BD: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4222,139 +4231,139 @@ msgstr "%s (%s)"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Persoal"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "Sobre"
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "Cambiar contrasinal"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Conectar"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Non se pode redireccionar ao servidor: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Navegación de subscricións"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitar"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "Crear nova conta"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Axuda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Axuda"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Buscar"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Novo chío"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Novo chío"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Navegación de subscricións"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Preguntas frecuentes"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Fonte"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contacto"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4363,12 +4372,12 @@ msgstr ""
 "**%%site.name%%** é un servizo de microbloguexo que che proporciona [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** é un servizo de microbloguexo."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4379,35 +4388,35 @@ msgstr ""
 "%s, dispoñible baixo licenza [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Atopar no contido dos chíos"
 
-#: lib/action.php:799
+#: lib/action.php:800
 #, fuzzy
 msgid "All "
 msgstr "Todos"
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "« Despois"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "Antes »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 #, fuzzy
 msgid "There was a problem with your session token."
 msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
@@ -4468,6 +4477,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Contrasinal gardada."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Contrasinal gardada."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultados do comando"
@@ -5254,7 +5273,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " dende "
@@ -5320,76 +5339,80 @@ msgstr "Eliminar chío"
 msgid "To"
 msgstr "A"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 ou máis caracteres"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Dar un toque"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "¿Que pasa, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "No"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Sen contido!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Crear"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "Non se pode eliminar este chíos."
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "contestar"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Chío publicado"
index c0d4ecf51eb2087bfaf2cc7e9741141e94e41331..97c2dc823b754744e7ed9092d2283276155d435e 100644 (file)
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:27+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:31+0000\n"
 "Language-Team: Hebrew\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: he\n"
 "X-Message-Group: out-statusnet\n"
@@ -192,11 +192,11 @@ msgstr "עידכון המשתמש נכשל."
 msgid "You cannot block yourself!"
 msgstr "עידכון המשתמש נכשל."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -311,31 +311,31 @@ msgid "Could not find target user."
 msgstr "עידכון המשתמש נכשל."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "כינוי יכול להכיל רק אותיות אנגליות קטנות ומספרים, וללא רווחים."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "כינוי זה כבר תפוס. נסה כינוי אחר."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "שם משתמש לא חוקי."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "לאתר הבית יש כתובת לא חוקית."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "השם המלא ארוך מידי (מותרות 255 אותיות בלבד)"
@@ -346,7 +346,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיות)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "שם המיקום ארוך מידי (מותר עד 255 אותיות)."
@@ -467,7 +467,7 @@ msgstr "זה ארוך מידי. אורך מירבי להודעה הוא 140 או
 msgid "Not found"
 msgstr "לא נמצא"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -600,7 +600,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Delete"
 msgstr "מחק"
@@ -614,13 +614,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -695,7 +695,7 @@ msgstr "כן"
 msgid "Block this user"
 msgstr "אין משתמש כזה."
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -771,7 +771,7 @@ msgstr "כתובת זו כבר אושרה."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "עידכון המשתמש נכשל."
@@ -833,7 +833,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "אין הודעה כזו."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -980,7 +980,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1488,7 +1488,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1581,7 +1581,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "למשתמש אין פרופיל."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "שגיאה בשמירת המשתמש."
@@ -1760,7 +1760,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "שלח"
 
@@ -1860,7 +1860,7 @@ msgstr "שם משתמש או סיסמה לא נכונים."
 msgid "Error setting user. You are probably not authorized."
 msgstr "לא מורשה."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "היכנס"
@@ -1970,7 +1970,7 @@ msgstr "הודעה חדשה"
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1978,7 +1978,7 @@ msgstr ""
 msgid "New notice"
 msgstr "הודעה חדשה"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "הודעות"
@@ -2417,70 +2417,79 @@ msgstr "מיקום"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "מיקומך, למשל \"עיר, מדינה או מחוז, ארץ\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "שפה"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיות)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "כתובת אתר הבית '%s' אינה חוקית"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "שמירת הפרופיל נכשלה."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "שמירת הפרופיל נכשלה."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "שמירת הפרופיל נכשלה."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "ההגדרות נשמרו."
 
@@ -2577,7 +2586,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2714,7 +2723,7 @@ msgstr "שגיאה באישור הקוד."
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "הירשם"
@@ -2887,7 +2896,7 @@ msgstr "לא ניתן להירשם ללא הסכמה לרשיון"
 msgid "You already repeated that notice."
 msgstr "כבר נכנסת למערכת!"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "צור"
@@ -4010,16 +4019,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "בעיה בשמירת ההודעה."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "שגיאת מסד נתונים בהכנסת התגובה: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4078,136 +4087,136 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "בית"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "אודות"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "התחבר"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "נכשלה ההפניה לשרת: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "הרשמות"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "צא"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "צור חשבון חדש"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "עזרה"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "עזרה"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "חיפוש"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "הרשמות"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "אודות"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "רשימת שאלות נפוצות"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "פרטיות"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "מקור"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "צור קשר"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4216,12 +4225,12 @@ msgstr ""
 "**%%site.name%%** הוא שרות ביקרובלוג הניתן על ידי [%%site.broughtby%%](%%"
 "site.broughtbyurl%%)."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** הוא שרות ביקרובלוג."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4232,34 +4241,34 @@ msgstr ""
 "s, המופצת תחת רשיון [GNU Affero General Public License](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)"
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "הודעה חדשה"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "<< אחרי"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "לפני >>"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4314,6 +4323,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "הסיסמה נשמרה."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "הסיסמה נשמרה."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4999,7 +5018,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -5064,75 +5083,79 @@ msgstr ""
 msgid "To"
 msgstr "אל"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "לפחות 6 אותיות"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "הודעה חדשה"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "מה המצב %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "לא"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "אין תוכן!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "צור"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "הגב"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "הודעות"
index ae5b19651a295702ff834b04e469f2b7e0311d52..e12652087c57a259da8fd2e4533adccd0d03b791 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:30+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:35+0000\n"
 "Language-Team: Dutch\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: hsb\n"
 "X-Message-Group: out-statusnet\n"
@@ -188,11 +188,11 @@ msgstr "Design njeda so aktualizować."
 msgid "You cannot block yourself!"
 msgstr "Njemóžeš so samoho blokować."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -304,31 +304,31 @@ msgid "Could not find target user."
 msgstr ""
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Přimjeno so hižo wužiwa. Spytaj druhe."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Žane płaćiwe přimjeno."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Startowa strona njeje płaćiwy URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Dospołne mjeno je předołho (maks. 255 znamješkow)."
@@ -339,7 +339,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Wopisanje je předołho (maks. %d znamješkow)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Městno je předołho (maks. 255 znamješkow)."
@@ -454,7 +454,7 @@ msgstr "To je předołho. Maksimalna wulkosć zdźělenki je %d znamješkow."
 msgid "Not found"
 msgstr "Njenamakany"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -584,7 +584,7 @@ msgid "Preview"
 msgstr "Přehlad"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Zničić"
 
@@ -597,13 +597,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -673,7 +673,7 @@ msgstr "Haj"
 msgid "Block this user"
 msgstr "Tutoho wužiwarja blokować"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -745,7 +745,7 @@ msgstr "Tuta adresa bu hižo wobkrućena."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr ""
@@ -805,7 +805,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Tutu zdźělenku wušmórnyć"
 
@@ -940,7 +940,7 @@ 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:167
+#: 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
@@ -1424,7 +1424,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr "Lisćina wužiwarjow w tutej skupinje."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrator"
 
@@ -1511,7 +1511,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr ""
 
@@ -1682,7 +1682,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Pósłać"
 
@@ -1778,7 +1778,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Přizjewić"
@@ -1885,7 +1885,7 @@ msgstr "Powěsć pósłana"
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Zmylk Ajax"
 
@@ -1893,7 +1893,7 @@ msgstr "Zmylk Ajax"
 msgid "New notice"
 msgstr "Nowa zdźělenka"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Zdźělenka wotpósłana"
 
@@ -2310,69 +2310,77 @@ msgstr "Městno"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Rěč"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Preferowana rěč"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Časowe pasmo"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Biografija je předołha (maks. %d znamješkow)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Časowe pasmo njeje wubrane."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Mjeno rěče je předołhe (maks. 50 znamješkow)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Nastajenja městna njedachu so składować."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr ""
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr ""
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Nastajenja składowane."
 
@@ -2465,7 +2473,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2602,7 +2610,7 @@ msgstr "Wodaj, njepłaćiwy přeprošenski kod."
 msgid "Registration successful"
 msgstr "Registrowanje wuspěšne"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrować"
@@ -2766,7 +2774,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Wospjetowany"
 
@@ -3836,16 +3844,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -3900,140 +3908,140 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Strona bjez titula"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Konto"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Zwjazać"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Přeprosyć"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Konto załožić"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Pomoc"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Pomhaj!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Pytać"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Za ludźimi abo tekstom pytać"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Wo"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Huste prašenja"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Priwatnosć"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Žórło"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4041,31 +4049,31 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4117,6 +4125,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Hesło změnjene"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Hesło změnjene"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4785,7 +4803,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "wot"
 
@@ -4849,69 +4867,73 @@ msgstr "Direktnu zdźělenku pósłać"
 msgid "To"
 msgstr "Komu"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "K dispoziciji stejace znamješka"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Zdźělenku pósłać"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Připowěsnyć"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Dataju připowěsnyć"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "S"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "J"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "W"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "Z"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Wospjetowany wot"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Na tutu zdźělenku wotmołwić"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Wotmołwić"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Zdźělenka wospjetowana"
 
@@ -5041,9 +5063,8 @@ msgid "Popular"
 msgstr "Woblubowany"
 
 #: lib/repeatform.php:107
-#, fuzzy
 msgid "Repeat this notice?"
-msgstr "Tutu zdźělenku wospjetować"
+msgstr "Tutu zdźělenku wospjetować?"
 
 #: lib/repeatform.php:132
 msgid "Repeat this notice"
index 9f64bd6191804f426ad0a6f72fb7e33439912be6..adb2fb764dda554eef16517634dc0ae3f68d462b 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:33+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:39+0000\n"
 "Language-Team: Interlingua\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ia\n"
 "X-Message-Group: out-statusnet\n"
@@ -198,11 +198,11 @@ msgstr "Non poteva actualisar le apparentia."
 msgid "You cannot block yourself!"
 msgstr "Tu non pote blocar te mesme!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Le blocada del usator ha fallite."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Le disblocada del usator ha fallite."
 
@@ -314,31 +314,31 @@ msgid "Could not find target user."
 msgstr "Non poteva trovar le usator de destination."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Le pseudonymo pote solmente haber minusculas e numeros, sin spatios."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Pseudonymo ja in uso. Proba un altere."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Non un pseudonymo valide."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Le pagina personal non es un URL valide."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Le nomine complete es troppo longe (max. 255 characteres)."
@@ -349,7 +349,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Description es troppo longe (max %d charachteres)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Loco es troppo longe (max. 255 characteres)."
@@ -465,7 +465,7 @@ msgstr ""
 msgid "Not found"
 msgstr "Non trovate"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -597,7 +597,7 @@ msgid "Preview"
 msgstr "Previsualisation"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Deler"
 
@@ -610,13 +610,13 @@ msgid "Crop"
 msgstr "Taliar"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -689,7 +689,7 @@ msgstr "Si"
 msgid "Block this user"
 msgstr "Blocar iste usator"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Falleva de salveguardar le information del blocada."
 
@@ -761,7 +761,7 @@ msgstr "Iste adresse ha ja essite confirmate."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Non poteva actualisar usator."
@@ -823,7 +823,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Deler iste nota"
 
@@ -961,7 +961,7 @@ 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:167
+#: 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
@@ -1461,7 +1461,7 @@ msgstr "Membros del gruppo %s, pagina %d"
 msgid "A list of the users in this group."
 msgstr "Un lista de usatores in iste gruppo."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrator"
 
@@ -1559,7 +1559,7 @@ msgstr "Solmente un administrator pote disblocar membros de un gruppo."
 msgid "User is not blocked from group."
 msgstr "Le usator non es blocate del gruppo."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Error de remover le blocada."
 
@@ -1746,7 +1746,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Inviar"
 
@@ -1869,7 +1869,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Aperir session"
@@ -1984,7 +1984,7 @@ msgstr "Message inviate"
 msgid "Direct message to %s sent"
 msgstr "Message directe a %s inviate"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Error de Ajax"
 
@@ -1992,7 +1992,7 @@ msgstr "Error de Ajax"
 msgid "New notice"
 msgstr "Nove nota"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Nota publicate"
 
@@ -2299,35 +2299,35 @@ msgstr "Directorio al fundos"
 
 #: actions/pathsadminpanel.php:293
 msgid "SSL"
-msgstr ""
+msgstr "SSL"
 
 #: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
 msgid "Never"
-msgstr ""
+msgstr "Nunquam"
 
 #: actions/pathsadminpanel.php:297
 msgid "Sometimes"
-msgstr ""
+msgstr "Alcun vices"
 
 #: actions/pathsadminpanel.php:298
 msgid "Always"
-msgstr ""
+msgstr "Sempre"
 
 #: actions/pathsadminpanel.php:302
 msgid "Use SSL"
-msgstr ""
+msgstr "Usar SSL"
 
 #: actions/pathsadminpanel.php:303
 msgid "When to use SSL"
-msgstr ""
+msgstr "Quando usar SSL"
 
 #: actions/pathsadminpanel.php:308
 msgid "SSL Server"
-msgstr ""
+msgstr "Servitor SSL"
 
 #: actions/pathsadminpanel.php:309
 msgid "Server to direct SSL requests to"
-msgstr ""
+msgstr "Servitor verso le qual diriger le requestas SSL"
 
 #: actions/pathsadminpanel.php:325
 msgid "Save paths"
@@ -2424,72 +2424,80 @@ msgstr "Loco"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Ubi tu es, como \"Citate, Stato (o Region), Pais\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Divulgar mi loco actual quando io publica notas"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Etiquettas"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Etiquettas pro te (litteras, numeros, -, ., e _), separate per commas o "
 "spatios"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Lingua"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Lingua preferite"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuso horari"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "In que fuso horari es tu normalmente?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Subscriber me automaticamente a qui se subscribe a me (utile pro non-humanos)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Bio es troppo longe (max %d chars)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Fuso horari non seligite."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Lingua es troppo longe (max 50 chars)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Etiquetta invalide: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Non poteva actualisar usator pro autosubscription."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Non poteva salveguardar le preferentias de loco."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Non poteva salveguardar profilo."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Non poteva salveguardar etiquettas."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Preferentias confirmate."
 
@@ -2595,7 +2603,7 @@ msgstr ""
 "Proque non [registrar un conto](%%action.register%%) e devenir le prime a "
 "publicar un?"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Etiquettario"
 
@@ -2735,7 +2743,7 @@ msgstr "Pardono, le codice de invitation es invalide."
 msgid "Registration successful"
 msgstr "Registration succedite"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Crear un conto"
@@ -2927,7 +2935,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Repetite"
 
@@ -3376,184 +3384,190 @@ msgstr "Servitor"
 
 #: actions/siteadminpanel.php:306
 msgid "Site's server hostname."
-msgstr ""
+msgstr "Nomine de host del servitor del sito."
 
 #: actions/siteadminpanel.php:310
 msgid "Fancy URLs"
-msgstr ""
+msgstr "URLs de luxo"
 
 #: actions/siteadminpanel.php:312
 msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
+msgstr "Usar URLs de luxo (plus legibile e memorabile)?"
 
 #: actions/siteadminpanel.php:318
 msgid "Access"
-msgstr ""
+msgstr "Accesso"
 
 #: actions/siteadminpanel.php:321
 msgid "Private"
-msgstr ""
+msgstr "Private"
 
 #: actions/siteadminpanel.php:323
 msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "Prohiber al usatores anonyme (sin session aperte) de vider le sito?"
 
 #: actions/siteadminpanel.php:327
 msgid "Invite only"
-msgstr ""
+msgstr "Solmente per invitation"
 
 #: actions/siteadminpanel.php:329
 msgid "Make registration invitation only."
-msgstr ""
+msgstr "Permitter le registration solmente al invitatos."
 
 #: actions/siteadminpanel.php:333
 msgid "Closed"
-msgstr ""
+msgstr "Claudite"
 
 #: actions/siteadminpanel.php:335
 msgid "Disable new registrations."
-msgstr ""
+msgstr "Disactivar le creation de nove contos."
 
 #: actions/siteadminpanel.php:341
 msgid "Snapshots"
-msgstr ""
+msgstr "Instantaneos"
 
 #: actions/siteadminpanel.php:344
 msgid "Randomly during Web hit"
-msgstr ""
+msgstr "Aleatorimente durante un accesso web"
 
 #: actions/siteadminpanel.php:345
 msgid "In a scheduled job"
-msgstr ""
+msgstr "In un processo planificate"
 
 #: actions/siteadminpanel.php:347
 msgid "Data snapshots"
-msgstr ""
+msgstr "Instantaneos de datos"
 
 #: actions/siteadminpanel.php:348
 msgid "When to send statistical data to status.net servers"
-msgstr ""
+msgstr "Quando inviar datos statistic al servitores de status.net"
 
 #: actions/siteadminpanel.php:353
 msgid "Frequency"
-msgstr ""
+msgstr "Frequentia"
 
 #: actions/siteadminpanel.php:354
 msgid "Snapshots will be sent once every N web hits"
-msgstr ""
+msgstr "Un instantaneo essera inviate a cata N accessos web"
 
 #: actions/siteadminpanel.php:359
 msgid "Report URL"
-msgstr ""
+msgstr "URL pro reporto"
 
 #: actions/siteadminpanel.php:360
 msgid "Snapshots will be sent to this URL"
-msgstr ""
+msgstr "Le instantaneos essera inviate a iste URL"
 
 #: actions/siteadminpanel.php:367
 msgid "Limits"
-msgstr ""
+msgstr "Limites"
 
 #: actions/siteadminpanel.php:370
 msgid "Text limit"
-msgstr ""
+msgstr "Limite de texto"
 
 #: actions/siteadminpanel.php:370
 msgid "Maximum number of characters for notices."
-msgstr ""
+msgstr "Numero maxime de characteres pro notas."
 
 #: actions/siteadminpanel.php:374
 msgid "Dupe limit"
-msgstr ""
+msgstr "Limite de duplicatos"
 
 #: actions/siteadminpanel.php:374
 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 ""
+msgstr "Salveguardar configurationes del sito"
 
 #: actions/smssettings.php:58
 msgid "SMS Settings"
-msgstr ""
+msgstr "Configuration SMS"
 
 #: actions/smssettings.php:69
 #, php-format
 msgid "You can receive SMS messages through email from %%site.name%%."
-msgstr ""
+msgstr "Tu pote reciper messages SMS per e-mail ab %%site.name%%."
 
 #: actions/smssettings.php:91
 msgid "SMS is not available."
-msgstr ""
+msgstr "SMS non es disponibile."
 
 #: actions/smssettings.php:112
 msgid "Current confirmed SMS-enabled phone number."
-msgstr ""
+msgstr "Numero de telephono actual e confirmate con servicio SMS."
 
 #: actions/smssettings.php:123
 msgid "Awaiting confirmation on this phone number."
-msgstr ""
+msgstr "Iste numero de telephono attende confirmation."
 
 #: actions/smssettings.php:130
 msgid "Confirmation code"
-msgstr ""
+msgstr "Codice de confirmation"
 
 #: actions/smssettings.php:131
 msgid "Enter the code you received on your phone."
-msgstr ""
+msgstr "Entra le codice que tu ha recipite in tu telephono."
 
 #: actions/smssettings.php:138
 msgid "SMS Phone number"
-msgstr ""
+msgstr "Numero de telephono pro SMS"
 
 #: actions/smssettings.php:140
 msgid "Phone number, no punctuation or spaces, with area code"
-msgstr ""
+msgstr "Numero de telephono, sin punctuation o spatios, con indicativo"
 
 #: actions/smssettings.php:174
 msgid ""
 "Send me notices through SMS; I understand I may incur exorbitant charges "
 "from my carrier."
 msgstr ""
+"Invia me notas per SMS; io comprende que io pote incurrer exorbitante costos "
+"de mi operator."
 
 #: actions/smssettings.php:306
 msgid "No phone number."
-msgstr ""
+msgstr "Nulle numero de telephono."
 
 #: actions/smssettings.php:311
 msgid "No carrier selected."
-msgstr ""
+msgstr "Nulle operator seligite."
 
 #: actions/smssettings.php:318
 msgid "That is already your phone number."
-msgstr ""
+msgstr "Isto es ja tu numero de telephono."
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
-msgstr ""
+msgstr "Iste numero de telephono pertine ja a un altere usator."
 
 #: actions/smssettings.php:347
 msgid ""
 "A confirmation code was sent to the phone number you added. Check your phone "
 "for the code and instructions on how to use it."
 msgstr ""
+"Un codice de confirmation ha essite inviate al numero de telephono que tu ha "
+"addite. Vide in tu telephono le codice e le instructiones super como usar lo."
 
 #: actions/smssettings.php:374
 msgid "That is the wrong confirmation number."
-msgstr ""
+msgstr "Iste codice de confirmation es incorrecte."
 
 #: actions/smssettings.php:405
 msgid "That is not your phone number."
-msgstr ""
+msgstr "Isto non es tu numero de telephono."
 
 #: actions/smssettings.php:465
 msgid "Mobile carrier"
-msgstr ""
+msgstr "Operator de telephonia mobile"
 
 #: actions/smssettings.php:469
 msgid "Select a carrier"
-msgstr ""
+msgstr "Selige un operator"
 
 #: actions/smssettings.php:476
 #, php-format
@@ -3561,51 +3575,56 @@ msgid ""
 "Mobile carrier for your phone. If you know a carrier that accepts SMS over "
 "email but isn't listed here, send email to let us know at %s."
 msgstr ""
+"Le operator de telephonia mobile de tu telephono. Si tu cognosce un operator "
+"que accepta SMS via e-mail ma non es listate hic, invia e-mail pro informar "
+"nos a %s."
 
 #: actions/smssettings.php:498
 msgid "No code entered"
-msgstr ""
+msgstr "Nulle codice entrate"
 
 #: actions/subedit.php:70
 msgid "You are not subscribed to that profile."
-msgstr ""
+msgstr "Tu non es subscribite a iste profilo."
 
 #: actions/subedit.php:83
 msgid "Could not save subscription."
-msgstr ""
+msgstr "Non poteva salveguardar le subscription."
 
 #: actions/subscribe.php:55
 msgid "Not a local user."
-msgstr ""
+msgstr "Le usator non es local."
 
 #: actions/subscribe.php:69
 msgid "Subscribed"
-msgstr ""
+msgstr "Subscribite"
 
 #: actions/subscribers.php:50
 #, php-format
 msgid "%s subscribers"
-msgstr ""
+msgstr "Subscriptores a %s"
 
 #: actions/subscribers.php:52
 #, php-format
 msgid "%s subscribers, page %d"
-msgstr ""
+msgstr "Subscriptores a %s, pagina %d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
-msgstr ""
+msgstr "Iste personas seque tu notas."
 
 #: actions/subscribers.php:67
 #, php-format
 msgid "These are the people who listen to %s's notices."
-msgstr ""
+msgstr "Iste personas seque le notas de %s."
 
 #: actions/subscribers.php:108
 msgid ""
 "You have no subscribers. Try subscribing to people you know and they might "
 "return the favor"
 msgstr ""
+"Tu non ha subscriptores. Tenta subscriber te a personas que tu cognosce e "
+"illes poterea retornar te le favor."
 
 #: actions/subscribers.php:110
 #, php-format
@@ -4032,16 +4051,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4096,140 +4115,140 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr ""
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr ""
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr ""
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr ""
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr ""
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4237,31 +4256,31 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4313,6 +4332,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Cambio del contrasigno"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Cambio del contrasigno"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4973,7 +5002,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -5037,69 +5066,73 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr ""
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr ""
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Repetite per"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Nota delite."
index d085a47c82628c7c7b797f1d1650e6f4b4dfd05c..3092d2e99f4d0a7f69663a4ed94036cf85814d20 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:35+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:42+0000\n"
 "Language-Team: Icelandic\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: is\n"
 "X-Message-Group: out-statusnet\n"
@@ -194,11 +194,11 @@ msgstr "Gat ekki uppfært hóp."
 msgid "You cannot block yourself!"
 msgstr "Gat ekki uppfært notanda."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Mistókst að loka á notanda."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Mistókst að opna fyrir notanda."
 
@@ -312,31 +312,31 @@ msgid "Could not find target user."
 msgstr ""
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Stuttnefni geta bara verið lágstafir og tölustafir en engin bil."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Ekki tækt stuttnefni."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Heimasíða er ekki gild vefslóð."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)."
@@ -347,7 +347,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Lýsing er of löng (í mesta lagi 140 tákn)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Staðsetning er of löng (í mesta lagi 255 stafir)."
@@ -467,7 +467,7 @@ msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn."
 msgid "Not found"
 msgstr "Fannst ekki"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -597,7 +597,7 @@ msgid "Preview"
 msgstr "Forsýn"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Eyða"
 
@@ -610,13 +610,13 @@ msgid "Crop"
 msgstr "Skera af"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -689,7 +689,7 @@ msgstr "Já"
 msgid "Block this user"
 msgstr "Loka á þennan notanda"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Mistókst að vista upplýsingar um notendalokun"
 
@@ -762,7 +762,7 @@ msgstr "Þetta tölvupóstfang hefur nú þegar verið staðfest."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Gat ekki uppfært notanda."
@@ -823,7 +823,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Eyða þessu babli"
 
@@ -967,7 +967,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1463,7 +1463,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Stjórnandi"
 
@@ -1550,7 +1550,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Vill kom upp við að aflétta notendalokun."
 
@@ -1738,7 +1738,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Senda"
 
@@ -1862,7 +1862,7 @@ msgstr "Rangt notendanafn eða lykilorð."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Engin heimild."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Innskráning"
@@ -1978,7 +1978,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr "Bein skilaboð send til %s"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax villa"
 
@@ -1986,7 +1986,7 @@ msgstr "Ajax villa"
 msgid "New notice"
 msgstr "Nýtt babl"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Babl sent inn"
 
@@ -2425,73 +2425,82 @@ msgstr "Staðsetning"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Staðsetning þín, eins og \"borg, sýsla, land\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Merki"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Merki fyrir þig (bókstafir, tölustafir, -, ., og _), aðskilin með kommu eða "
 "bili"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Tungumál"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Tungumál (ákjósanlegt)"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Tímabelti"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Í hvaða tímabelti eru í rauninni?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Gerast sjálfkrafa áskrifandi að hverjum þeim sem gerist áskrifandi að þér "
 "(best fyrir ómannlega notendur)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Lýsingin er of löng (í mesta lagi 140 tákn)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Tímabelti ekki valið."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Tungumál er of langt (í mesta lagi 50 stafir)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ógilt merki: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Gat ekki uppfært notanda í sjálfvirka áskrift."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Gat ekki vistað merki."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Gat ekki vistað persónulega síðu."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Gat ekki vistað merki."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Stillingar vistaðar."
 
@@ -2584,7 +2593,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Merkjaský"
 
@@ -2724,7 +2733,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr "Nýskráning tókst"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Nýskrá"
@@ -2919,7 +2928,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Í sviðsljósinu"
@@ -4042,16 +4051,16 @@ msgstr ""
 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:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Vandamál komu upp við að vista babl."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Gagnagrunnsvilla við innsetningu svars: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4106,132 +4115,132 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Ónafngreind síða"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Stikl aðalsíðu"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Heim"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Persónuleg síða og vinarás"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Aðgangur"
 
-#: lib/action.php:433
+#: lib/action.php:434
 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:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Tengjast"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Gat ekki framsent til vefþjóns: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Stikl aðalsíðu"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Bjóða"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Útskráning"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Skrá þig út af síðunni"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Búa til aðgang"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Skrá þig inn á síðuna"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hjálp"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Hjálp!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Leita"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Leita að fólki eða texta"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Babl vefsíðunnar"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Staðbundin sýn"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Babl síðunnar"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Stikl undirsíðu"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Um"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Spurt og svarað"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Friðhelgi"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Frumþula"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Tengiliður"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Hugbúnaðarleyfi StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4240,12 +4249,12 @@ msgstr ""
 "**%%site.name%%** er örbloggsþjónusta í boði [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er örbloggsþjónusta."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4256,32 +4265,32 @@ msgstr ""
 "sem er gefinn út undir [GNU Affero almenningsleyfinu](http://www.fsf.org/"
 "licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Hugbúnaðarleyfi StatusNet"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Allt "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "leyfi."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Uppröðun"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Eftir"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Áður"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Það komu upp vandamál varðandi setutókann þinn."
 
@@ -4339,6 +4348,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Lykilorðabreyting"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Lykilorðabreyting"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Niðurstöður skipunar"
@@ -5022,7 +5041,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr "frá"
@@ -5088,71 +5107,75 @@ msgstr "Senda bein skilaboð"
 msgid "To"
 msgstr "Til"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Leyfileg tákn"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Senda babl"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Hvað er að frétta %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "Nei"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Í sviðsljósinu"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Svara þessu babli"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Svara"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Babl sent inn"
index 29aab4755cabde6aff94963dca60f21261670dfa..5c025c4c0be2bc96fc72667f955b2a006ed52bd5 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:38+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:47+0000\n"
 "Language-Team: Italian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: it\n"
 "X-Message-Group: out-statusnet\n"
@@ -199,11 +199,11 @@ msgstr "Impossibile aggiornare l'aspetto."
 msgid "You cannot block yourself!"
 msgstr "Non puoi bloccarti!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Blocco dell'utente non riuscito."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Sblocco dell'utente non riuscito."
 
@@ -315,7 +315,7 @@ msgid "Could not find target user."
 msgstr "Impossibile trovare l'utente destinazione."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -323,25 +323,25 @@ msgstr ""
 "spazi."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Soprannome già in uso. Prova con un altro."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Non è un soprannome valido."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "L'indirizzo della pagina web non è valido."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nome troppo lungo (max 255 caratteri)."
@@ -352,7 +352,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "La descrizione è troppo lunga (max %d caratteri)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Ubicazione troppo lunga (max 255 caratteri)."
@@ -467,7 +467,7 @@ msgstr "Troppo lungo. Lunghezza massima %d caratteri."
 msgid "Not found"
 msgstr "Non trovato"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -598,7 +598,7 @@ msgid "Preview"
 msgstr "Anteprima"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Elimina"
 
@@ -611,13 +611,13 @@ msgid "Crop"
 msgstr "Ritaglia"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -691,7 +691,7 @@ msgstr "Sì"
 msgid "Block this user"
 msgstr "Blocca questo utente"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Salvataggio delle informazioni per il blocco non riuscito."
 
@@ -763,7 +763,7 @@ msgstr "Quell'indirizzo è già stato confermato."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Impossibile aggiornare l'utente."
@@ -825,7 +825,7 @@ msgstr "Vuoi eliminare questo messaggio?"
 msgid "Do not delete this notice"
 msgstr "Non eliminare il messaggio"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Elimina questo messaggio"
 
@@ -964,7 +964,7 @@ 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:167
+#: 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
@@ -1467,7 +1467,7 @@ msgstr "Membri del gruppo %s, pagina %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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Amministra"
 
@@ -1565,7 +1565,7 @@ msgstr "Solo gli amministratori possono sbloccare i membri del gruppo."
 msgid "User is not blocked from group."
 msgstr "L'utente non è bloccato dal gruppo."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Errore nel rimuovere il blocco."
 
@@ -1751,7 +1751,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Invia"
 
@@ -1873,7 +1873,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Accedi"
@@ -1985,7 +1985,7 @@ msgstr "Messaggio inviato"
 msgid "Direct message to %s sent"
 msgstr "Messaggio diretto a %s inviato"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Errore di Ajax"
 
@@ -1993,7 +1993,7 @@ msgstr "Errore di Ajax"
 msgid "New notice"
 msgstr "Nuovo messaggio"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Messaggio inviato"
 
@@ -2427,72 +2427,81 @@ msgstr "Ubicazione"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Dove ti trovi, tipo \"città, regione, stato\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Etichette"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Le tue etichette (lettere, numeri, -, . e _), separate da virgole o spazi"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Lingua"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Lingua preferita"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuso orario"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "In che fuso orario risiedi solitamente?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Abbonami automaticamente a chi si abbona ai miei messaggi (utile per i non-"
 "umani)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "La biografia è troppo lunga (max %d caratteri)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Fuso orario non selezionato"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "La lingua è troppo lunga (max 50 caratteri)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Etichetta non valida: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Impossibile aggiornare l'utente per auto-abbonarsi."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Impossibile salvare le etichette."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Impossibile salvare il profilo."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Impossibile salvare le etichette."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Impostazioni salvate."
 
@@ -2595,7 +2604,7 @@ msgid ""
 "one!"
 msgstr "Perché non [crei un accout](%%action.register%%) e ne scrivi uno tu!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Insieme delle etichette"
 
@@ -2736,7 +2745,7 @@ msgstr "Codice di invito non valido."
 msgid "Registration successful"
 msgstr "Registrazione riuscita"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registra"
@@ -2928,7 +2937,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Ripetuti"
 
@@ -4079,16 +4088,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Ti è proibito inviare messaggi su questo sito."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problema nel salvare il messaggio."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Errore del DB nell'inserire la risposta: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4143,128 +4152,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Pagina senza nome"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Esplorazione sito primaria"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Home"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Profilo personale e attività degli amici"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Account"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Modifica la tua email, immagine, password o il tuo profilo"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Connetti"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Connettiti con altri servizi"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Modifica la configurazione del sito"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invita"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Esci"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Termina la tua sessione sul sito"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Crea un account"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Accedi al sito"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Aiuto"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Aiutami!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Cerca"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Cerca persone o del testo"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Messaggio del sito"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Viste locali"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Pagina messaggio"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Esplorazione secondaria del sito"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Informazioni"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Sorgenti"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contatti"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Badge"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licenza del software StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4273,12 +4282,12 @@ msgstr ""
 "**%%site.name%%** è un servizio di microblog offerto da [%%site.broughtby%%]"
 "(%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** è un servizio di microblog. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4289,31 +4298,31 @@ 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:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licenza del contenuto del sito"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Tutti "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licenza."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginazione"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Successivi"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Precedenti"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Si è verificato un problema con il tuo token di sessione."
 
@@ -4365,6 +4374,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Modifica password"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Modifica password"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Risultati comando"
@@ -5162,7 +5181,7 @@ msgstr ""
 "iniziare una conversazione con altri utenti. Altre persone possono mandare "
 "messaggi riservati solamente a te."
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "via"
 
@@ -5229,69 +5248,73 @@ msgstr "Invia un messaggio diretto"
 msgid "To"
 msgstr "A"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Caratteri disponibili"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Invia un messaggio"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Cosa succede, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Allega"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Allega un file"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "presso"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "nel contesto"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Ripetuto da"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Rispondi a questo messaggio"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Rispondi"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Messaggio ripetuto"
 
index 9fb5918e728fdddf0315c729e6d965514a405c8d..9e4fe43c7470cfcacfcb4f532c1e7a5866c0f931 100644 (file)
@@ -11,12 +11,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:42+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:50+0000\n"
 "Language-Team: Japanese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ja\n"
 "X-Message-Group: out-statusnet\n"
@@ -199,11 +199,11 @@ msgstr "デザインを更新できませんでした。"
 msgid "You cannot block yourself!"
 msgstr "自分自身をブロックすることはできません!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "利用者のブロックに失敗しました。"
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "利用者のブロック解除に失敗しました。"
 
@@ -316,7 +316,7 @@ msgid "Could not find target user."
 msgstr "ターゲットユーザーを見つけられません。"
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -324,25 +324,25 @@ msgstr ""
 "できません。"
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "そのニックネームは既に使用されています。他のものを試してみて下さい。"
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "有効なニックネームではありません。"
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "ホームページのURLが不適切です。"
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "フルネームが長すぎます。(255字まで)"
@@ -353,7 +353,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "記述が長すぎます。(最長140字)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "場所が長すぎます。(255字まで)"
@@ -468,7 +468,7 @@ msgstr "長すぎます。つぶやきは最大 140 字までです。"
 msgid "Not found"
 msgstr "みつかりません"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "つぶやきは URL を含めて最大 %d 字までです。"
@@ -507,7 +507,7 @@ msgstr "%1$s / %2$s について更新"
 #: actions/apitimelinementions.php:127
 #, php-format
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
-msgstr ""
+msgstr "%2$s からアップデートに答える %1$s アップデート"
 
 #: actions/apitimelinepublic.php:107 actions/publicrss.php:103
 #, php-format
@@ -517,12 +517,12 @@ msgstr "%s のパブリックタイムライン"
 #: actions/apitimelinepublic.php:111 actions/publicrss.php:105
 #, php-format
 msgid "%s updates from everyone!"
-msgstr ""
+msgstr "皆からの %s アップデート!"
 
 #: actions/apitimelineretweetedbyme.php:112
 #, php-format
 msgid "Repeated by %s"
-msgstr ""
+msgstr "%s による繰り返し"
 
 #: actions/apitimelineretweetedtome.php:111
 #, php-format
@@ -537,7 +537,7 @@ msgstr "%s の返信"
 #: actions/apitimelinetag.php:102 actions/tag.php:66
 #, php-format
 msgid "Notices tagged with %s"
-msgstr ""
+msgstr "%s とタグ付けされたつぶやき"
 
 #: actions/apitimelinetag.php:108 actions/tagrss.php:64
 #, php-format
@@ -579,7 +579,7 @@ msgstr "自分のアバターをアップロードできます。最大サイズ
 #: actions/grouplogo.php:178 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
@@ -597,7 +597,7 @@ msgid "Preview"
 msgstr "プレビュー"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "削除"
 
@@ -610,13 +610,13 @@ msgid "Crop"
 msgstr "切り取り"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -661,16 +661,20 @@ msgid "Block user"
 msgstr "ブロック利用者"
 
 #: actions/block.php:130
+#, fuzzy
 msgid ""
 "Are you sure you want to block this user? Afterwards, they will be "
 "unsubscribed from you, unable to subscribe to you in the future, and you "
 "will not be notified of any @-replies from them."
 msgstr ""
+"あなたはこのユーザをブロックしたいのを確信していますか? その後、それらはあな"
+"たからフォローを外されるでしょう、将来、あなたにフォローできないで、あなたは"
+"どんな @-返信 についてもそれらから通知されないでしょう。"
 
 #: actions/block.php:143 actions/deletenotice.php:145
 #: actions/deleteuser.php:147 actions/groupblock.php:178
 msgid "No"
-msgstr ""
+msgstr "No"
 
 #: actions/block.php:143 actions/deleteuser.php:147
 msgid "Do not block this user"
@@ -680,13 +684,13 @@ msgstr "このユーザをアンブロックする"
 #: actions/deleteuser.php:148 actions/groupblock.php:179
 #: lib/repeatform.php:132
 msgid "Yes"
-msgstr ""
+msgstr "Yes"
 
 #: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
 msgid "Block this user"
 msgstr "このユーザをブロックする"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "ブロック情報の保存に失敗しました。"
 
@@ -758,7 +762,7 @@ msgstr "そのアドレスは既に承認されています。"
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "ユーザを更新できません"
@@ -805,6 +809,8 @@ 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
 msgid "Delete notice"
@@ -818,7 +824,7 @@ msgstr "本当にこのつぶやきを削除しますか?"
 msgid "Do not delete this notice"
 msgstr "このつぶやきを削除できません。"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "このつぶやきを削除"
 
@@ -843,6 +849,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 ""
+"あなたは本当にこの利用者を削除したいですか? これはバックアップなしでデータ"
+"ベースから利用者に関するすべてのデータをクリアします。"
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
 msgid "Delete this user"
@@ -954,7 +962,7 @@ msgstr "デフォルトへリセットする"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1077,7 +1085,7 @@ msgstr "投稿のための新しいEメールアドレスを作ります; 古い
 
 #: actions/emailsettings.php:148 actions/smssettings.php:164
 msgid "New"
-msgstr ""
+msgstr "New"
 
 #: actions/emailsettings.php:153 actions/imsettings.php:139
 #: actions/smssettings.php:169
@@ -1227,6 +1235,8 @@ msgid ""
 "Be the first to add a notice to your favorites by clicking the fave button "
 "next to any notice you like."
 msgstr ""
+"あなたの好きなつぶやきを、お気に入りボタンをクリックしてあなたのお気に入りに"
+"加える最初になってください。"
 
 #: actions/favorited.php:156
 #, php-format
@@ -1234,6 +1244,8 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to add a "
 "notice to your favorites!"
 msgstr ""
+"なぜ [アカウント登録](%%action.register%%) しないのですか、そして、あなたのお"
+"気に入りにつぶやきを加える最初になりましょう!"
 
 #: actions/favoritesrss.php:111 actions/showfavorites.php:77
 #: lib/personalgroupnav.php:115
@@ -1453,7 +1465,7 @@ msgstr "%s グループメンバー、ページ %d"
 msgid "A list of the users in this group."
 msgstr "このグループの利用者のリスト。"
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "管理者"
 
@@ -1497,6 +1509,11 @@ 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"
@@ -1517,9 +1534,8 @@ msgstr "グループの検索"
 
 #: actions/groupsearch.php:79 actions/noticesearch.php:117
 #: actions/peoplesearch.php:83
-#, fuzzy
 msgid "No results."
-msgstr "結果なし"
+msgstr "結果なし"
 
 #: actions/groupsearch.php:82
 #, php-format
@@ -1547,7 +1563,7 @@ msgstr "管理者だけがグループメンバーをアンブロックできま
 msgid "User is not blocked from group."
 msgstr "利用者はグループからブロックされていません。"
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "ブロックの削除エラー"
 
@@ -1605,10 +1621,12 @@ msgstr "Jabber/GTalkのステータスが変更された時に通知を送る。
 #: actions/imsettings.php:153
 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to."
 msgstr ""
+"Jabber/GTalkを通して回答を、私がフォローされていない人々から私に送ってくださ"
+"い。"
 
 #: actions/imsettings.php:159
 msgid "Publish a MicroID for my Jabber/GTalk address."
-msgstr ""
+msgstr "私のJabber/GTalkアドレスのためにMicroIDを発行してください。"
 
 #: actions/imsettings.php:285
 msgid "No Jabber ID."
@@ -1730,7 +1748,7 @@ msgstr "パーソナルメッセージ"
 msgid "Optionally add a personal message to the invitation."
 msgstr "任意に招待にパーソナルメッセージを加えてください。"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "送る"
 
@@ -1798,71 +1816,68 @@ msgstr ""
 
 #: actions/joingroup.php:60
 msgid "You must be logged in to join a group."
-msgstr ""
+msgstr "グループに入るためにはログインしなければなりません。"
 
 #: actions/joingroup.php:90 lib/command.php:217
 msgid "You are already a member of that group"
 msgstr "あなたは既にそのグループに参加しています。"
 
 #: actions/joingroup.php:128 lib/command.php:234
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s"
-msgstr "サーバへリダイレクトできません : %s"
+msgstr "利用者 %s はグループ %s に参加できません"
 
 #: actions/joingroup.php:135 lib/command.php:239
 #, php-format
 msgid "%s joined group %s"
-msgstr ""
+msgstr "%s はグループ %s に参加しました"
 
 #: actions/leavegroup.php:60
 msgid "You must be logged in to leave a group."
-msgstr ""
+msgstr "グループから離れるにはログインしていなければなりません。"
 
 #: actions/leavegroup.php:90 lib/command.php:268
-#, fuzzy
 msgid "You are not a member of that group."
-msgstr "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¦ã\81\84ません。"
+msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\83¡ã\83³ã\83\90ã\83¼ã\81§ã\81¯ã\81\82ã\82\8aません。"
 
 #: actions/leavegroup.php:119 lib/command.php:278
 msgid "Could not find membership record."
-msgstr ""
+msgstr "会員資格記録を見つけることができませんでした。"
 
 #: actions/leavegroup.php:127 lib/command.php:284
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "OpenIDを作成できません : %s"
+msgstr "利用者 %s をグループ %s から削除することができません"
 
 #: actions/leavegroup.php:134 lib/command.php:289
 #, php-format
 msgid "%s left group %s"
-msgstr ""
+msgstr "%s はグループ %s に残りました。"
 
 #: actions/login.php:83 actions/register.php:137
 msgid "Already logged in."
 msgstr "既にログインしています。"
 
 #: actions/login.php:114 actions/login.php:124
-#, fuzzy
 msgid "Invalid or expired token."
-msgstr "ä¸\8dæ­£ã\81ªé\80\9aç\9f¥å\86\85容"
+msgstr "ä¸\8dæ­£ã\81¾ã\81\9fã\81¯æ\9c\9fé\99\90å\88\87ã\82\8cã\81®ã\83\88ã\83¼ã\82¯ã\83³"
 
 #: actions/login.php:147
 msgid "Incorrect username or password."
 msgstr "ユーザ名またはパスワードが間違っています。"
 
 #: actions/login.php:153
-#, fuzzy
 msgid "Error setting user. You are probably not authorized."
-msgstr "認証されていません。"
+msgstr "ユーザ設定エラー。 あなたはたぶん承認されていません。"
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ログイン"
 
 #: actions/login.php:247
 msgid "Login to site"
-msgstr ""
+msgstr "サイトへログイン"
 
 #: actions/login.php:250 actions/profilesettings.php:106
 #: actions/register.php:423 actions/showgroup.php:236 actions/tagother.php:94
@@ -1901,45 +1916,47 @@ msgid ""
 "Login with your username and password. Don't have a username yet? [Register]"
 "(%%action.register%%) a new account."
 msgstr ""
+"ユーザ名とパスワードで、ログインしてください。 まだユーザ名を持っていません"
+"か? 新しいアカウントを [登録](%%action.register%%)。"
 
 #: actions/makeadmin.php:91
 msgid "Only an admin can make another user an admin."
-msgstr ""
+msgstr "管理者だけが別のユーザを管理者にすることができます。"
 
 #: actions/makeadmin.php:95
 #, php-format
 msgid "%s is already an admin for group \"%s\"."
-msgstr ""
+msgstr "%s はすでにグループ \"%s\" の管理者です。"
 
 #: actions/makeadmin.php:132
 #, php-format
 msgid "Can't get membership record for %s in group %s"
-msgstr ""
+msgstr "%s の会員資格記録をグループ %s 中から取得できません。"
 
 #: actions/makeadmin.php:145
 #, php-format
 msgid "Can't make %s an admin for group %s"
-msgstr ""
+msgstr "%s をグループ %s の管理者にすることはできません"
 
 #: actions/microsummary.php:69
 msgid "No current status"
-msgstr ""
+msgstr "現在のステータスはありません"
 
 #: actions/newgroup.php:53
 msgid "New group"
-msgstr ""
+msgstr "新しいグループ"
 
 #: actions/newgroup.php:110
 msgid "Use this form to create a new group."
-msgstr ""
+msgstr "このフォームを使って新しいグループを作成します。"
 
 #: actions/newmessage.php:71 actions/newmessage.php:231
 msgid "New message"
-msgstr ""
+msgstr "新しいメッセージ"
 
 #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:367
 msgid "You can't send a message to this user."
-msgstr ""
+msgstr "この利用者にメッセージを送ることはできません。"
 
 #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:351
 #: lib/command.php:484
@@ -1948,31 +1965,32 @@ msgstr "コンテンツがありません!"
 
 #: actions/newmessage.php:158
 msgid "No recipient specified."
-msgstr ""
+msgstr "受取人が書かれていません。"
 
 #: actions/newmessage.php:164 lib/command.php:370
 msgid ""
 "Don't send a message to yourself; just say it to yourself quietly instead."
 msgstr ""
+"自分自身にメッセージを送ることはできません; かわりに独り言を言いましょう。"
 
 #: actions/newmessage.php:181
 msgid "Message sent"
-msgstr ""
+msgstr "メッセージを送りました"
 
 #: actions/newmessage.php:185 lib/command.php:376
 #, php-format
 msgid "Direct message to %s sent"
-msgstr ""
+msgstr "ダイレクトメッセージを %s  に送りました"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
-msgstr ""
+msgstr "Ajax エラー"
 
 #: actions/newnotice.php:69
 msgid "New notice"
 msgstr "新しいつぶやき"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "つぶやきを投稿しました"
 
@@ -1981,16 +1999,17 @@ msgstr "つぶやきを投稿しました"
 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字以上"
+msgstr ""
+"%%site.name%% のつぶやきを内容から検索。検索語はスペース区切り。3字以上"
 
 #: actions/noticesearch.php:78
 msgid "Text search"
-msgstr "文字検索"
+msgstr "テキスト検索"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%s\" on %s"
-msgstr "\"%s\" のストリームを検索"
+msgstr "%s の %s 上の検索結果"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -1998,6 +2017,8 @@ msgid ""
 "Be the first to [post on this topic](%%%%action.newnotice%%%%?"
 "status_textarea=%s)!"
 msgstr ""
+"最初の [このトピック投稿](%%%%action.newnotice%%%%?status_textarea=%s) をして"
+"ください!"
 
 #: actions/noticesearch.php:124
 #, php-format
@@ -2005,29 +2026,33 @@ 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
+#, php-format
 msgid "Updates with \"%s\""
-msgstr "マイクロブログ by %s"
+msgstr "%s で更新"
 
 #: actions/noticesearchrss.php:98
 #, php-format
 msgid "Updates matching search term \"%1$s\" on %2$s!"
-msgstr "検索語「%s」に一致するすべての更新"
+msgstr "\"%2$s\" 上の検索語 \"$1$s\" に一致するすべての更新"
 
 #: actions/nudge.php:85
 msgid ""
 "This user doesn't allow nudges or hasn't confirmed or set his email yet."
 msgstr ""
+"この利用者は、合図を許可していないか、確認されていた状態でないか、メール設定"
+"をしていません。"
 
 #: actions/nudge.php:94
 msgid "Nudge sent"
-msgstr ""
+msgstr "合図を送った"
 
 #: actions/nudge.php:97
 msgid "Nudge sent!"
-msgstr ""
+msgstr "合図を送った!"
 
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
@@ -2036,7 +2061,7 @@ msgstr "つぶやきにはプロファイルはありません。"
 #: actions/oembed.php:86 actions/shownotice.php:180
 #, php-format
 msgid "%1$s's status on %2$s"
-msgstr "%2$s における %1$ の状態"
+msgstr "%2$s における %1$ のステータス"
 
 #: actions/oembed.php:157
 msgid "content type "
@@ -2044,12 +2069,12 @@ msgstr "内容種別 "
 
 #: actions/oembed.php:160
 msgid "Only "
-msgstr ""
+msgstr "だけ "
 
 #: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1031
 #: lib/api.php:1059 lib/api.php:1169
 msgid "Not a supported data format."
-msgstr ""
+msgstr "サポートされていないデータ形式。"
 
 #: actions/opensearch.php:64
 msgid "People Search"
@@ -2060,53 +2085,52 @@ msgid "Notice Search"
 msgstr "つぶやき検索"
 
 #: actions/othersettings.php:60
-#, fuzzy
 msgid "Other Settings"
-msgstr "設定"
+msgstr "その他の設定"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
-msgstr ""
+msgstr "他のオプションを管理。"
 
 #: actions/othersettings.php:108
 msgid " (free service)"
-msgstr ""
+msgstr "(フリーサービス)"
 
 #: actions/othersettings.php:116
 msgid "Shorten URLs with"
-msgstr ""
+msgstr "URLを短くします"
 
 #: actions/othersettings.php:117
 msgid "Automatic shortening service to use."
-msgstr ""
+msgstr "使用する自動短縮サービス。"
 
 #: actions/othersettings.php:122
-#, fuzzy
 msgid "View profile designs"
-msgstr "プロファイル設定"
+msgstr "プロファイルデザインを表示"
 
 #: actions/othersettings.php:123
 msgid "Show or hide profile designs."
-msgstr ""
+msgstr "プロファイルデザインの表示または非表示"
 
 #: actions/othersettings.php:153
-#, fuzzy
 msgid "URL shortening service is too long (max 50 chars)."
-msgstr "場所が長すぎます。(255字まで)"
+msgstr "URL 短縮サービスが長すぎます。(最大50字)"
 
 #: actions/outbox.php:58
 #, php-format
 msgid "Outbox for %s - page %d"
-msgstr ""
+msgstr "%s の送信箱 - ページ %d"
 
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
-msgstr ""
+msgstr "%s の送信箱"
 
 #: actions/outbox.php:116
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
+"これはあなたの送信箱です、あなたが送ったプライベート・メッセージをリストしま"
+"す。"
 
 #: actions/passwordsettings.php:58
 msgid "Change password"
@@ -2118,7 +2142,7 @@ msgstr "パスワードを変更します。"
 
 #: actions/passwordsettings.php:96 actions/recoverpassword.php:231
 msgid "Password change"
-msgstr "パスワード変更"
+msgstr "パスワード変更"
 
 #: actions/passwordsettings.php:104
 msgid "Old password"
@@ -2135,7 +2159,7 @@ msgstr "6文字以上"
 #: actions/passwordsettings.php:112 actions/recoverpassword.php:239
 #: actions/register.php:432 actions/smssettings.php:134
 msgid "Confirm"
-msgstr "確認"
+msgstr "パスワード確認"
 
 #: actions/passwordsettings.php:113 actions/recoverpassword.php:240
 msgid "Same as password above"
@@ -2171,148 +2195,140 @@ msgstr "パスワードが保存されました。"
 
 #: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:308
 msgid "Paths"
-msgstr ""
+msgstr "パス"
 
 #: actions/pathsadminpanel.php:70
 msgid "Path and server settings for this StatusNet site."
-msgstr ""
+msgstr "パスと StatusNet サイトのサーバー設定"
 
 #: actions/pathsadminpanel.php:140
-#, fuzzy, php-format
+#, php-format
 msgid "Theme directory not readable: %s"
-msgstr "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\81\82ã\81ªã\81\9fã\81\8cæ\89¿èª\8dã\81\97ã\81\9fã\83¡ã\83\87ã\82£ã\82¢ã\82¿ã\82¤ã\83\97ã\81§ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr "ã\83\86ã\83¼ã\83\9eã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81\8c読ã\81¿è¾¼ã\82\81ã\81¾ã\81\9bã\82\93: %s"
 
 #: actions/pathsadminpanel.php:146
 #, php-format
 msgid "Avatar directory not writable: %s"
-msgstr ""
+msgstr "アバターディレクトリに書き込みできません: %s"
 
 #: actions/pathsadminpanel.php:152
 #, php-format
 msgid "Background directory not writable: %s"
-msgstr ""
+msgstr "バックグラウンドディレクトリに書き込みできません : %s"
 
 #: actions/pathsadminpanel.php:160
 #, php-format
 msgid "Locales directory not readable: %s"
-msgstr ""
+msgstr "場所ディレクトリが読み込めません: %s"
 
 #: actions/pathsadminpanel.php:166
 msgid "Invalid SSL server. The maximum length is 255 characters."
-msgstr ""
+msgstr "不正な SSL サーバー。最大 255 文字まで。"
 
 #: actions/pathsadminpanel.php:217 actions/siteadminpanel.php:58
 #: lib/adminpanelaction.php:299
 msgid "Site"
-msgstr ""
+msgstr "サイト"
 
 #: actions/pathsadminpanel.php:221
 msgid "Path"
-msgstr ""
+msgstr "パス"
 
 #: actions/pathsadminpanel.php:221
-#, fuzzy
 msgid "Site path"
-msgstr "新しい通知"
+msgstr "サイトパス"
 
 #: actions/pathsadminpanel.php:225
 msgid "Path to locales"
-msgstr ""
+msgstr "ロケールのパス"
 
 #: actions/pathsadminpanel.php:225
 msgid "Directory path to locales"
-msgstr ""
+msgstr "ロケールへのディレクトリパス"
 
 #: actions/pathsadminpanel.php:232
 msgid "Theme"
-msgstr ""
+msgstr "テーマ"
 
 #: actions/pathsadminpanel.php:237
 msgid "Theme server"
-msgstr ""
+msgstr "テーマサーバー"
 
 #: actions/pathsadminpanel.php:241
 msgid "Theme path"
-msgstr ""
+msgstr "テーマパス"
 
 #: actions/pathsadminpanel.php:245
 msgid "Theme directory"
-msgstr ""
+msgstr "テーマディレクトリ"
 
 #: actions/pathsadminpanel.php:252
-#, fuzzy
 msgid "Avatars"
 msgstr "アバター"
 
 #: actions/pathsadminpanel.php:257
-#, fuzzy
 msgid "Avatar server"
-msgstr "設定"
+msgstr "アバターサーバー"
 
 #: actions/pathsadminpanel.php:261
-#, fuzzy
 msgid "Avatar path"
-msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82"
+msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\83\91ã\82¹"
 
 #: actions/pathsadminpanel.php:265
-#, fuzzy
 msgid "Avatar directory"
-msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82"
+msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª"
 
 #: actions/pathsadminpanel.php:274
 msgid "Backgrounds"
-msgstr ""
+msgstr "バックグラウンド"
 
 #: actions/pathsadminpanel.php:278
 msgid "Background server"
-msgstr ""
+msgstr "バックグラウンドサーバー"
 
 #: actions/pathsadminpanel.php:282
 msgid "Background path"
-msgstr ""
+msgstr "バックグラウンドパス"
 
 #: actions/pathsadminpanel.php:286
 msgid "Background directory"
-msgstr ""
+msgstr "バックグラウンドディレクトリ"
 
 #: actions/pathsadminpanel.php:293
 msgid "SSL"
-msgstr ""
+msgstr "SSL"
 
 #: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
-#, fuzzy
 msgid "Never"
-msgstr "回復"
+msgstr ""
 
 #: actions/pathsadminpanel.php:297
-#, fuzzy
 msgid "Sometimes"
-msgstr "通知"
+msgstr "ときどき"
 
 #: actions/pathsadminpanel.php:298
 msgid "Always"
-msgstr ""
+msgstr "いつも"
 
 #: actions/pathsadminpanel.php:302
 msgid "Use SSL"
-msgstr ""
+msgstr "SSL 使用"
 
 #: actions/pathsadminpanel.php:303
 msgid "When to use SSL"
-msgstr ""
+msgstr "SSL 使用時"
 
 #: actions/pathsadminpanel.php:308
 msgid "SSL Server"
-msgstr ""
+msgstr "SSLサーバ"
 
 #: actions/pathsadminpanel.php:309
 msgid "Server to direct SSL requests to"
-msgstr ""
+msgstr "ダイレクト SSL リクエストを向けるサーバ"
 
 #: actions/pathsadminpanel.php:325
-#, fuzzy
 msgid "Save paths"
-msgstr "新しい通知"
+msgstr "保存パス"
 
 #: actions/peoplesearch.php:52
 #, php-format
@@ -2320,30 +2336,31 @@ msgid ""
 "Search for people on %%site.name%% by their name, location, or interests. "
 "Separate the terms by spaces; they must be 3 characters or more."
 msgstr ""
-"%%site.name%% の人を名前、場所、興味から検索。検索語はスペース区切る。3字以上"
+"%%site.name%% の人を名前、場所、興味から検索。検索語はスペース区切り。3字以"
+"上。"
 
 #: actions/peoplesearch.php:58
 msgid "People search"
 msgstr "ピープルサーチ"
 
 #: actions/peopletag.php:70
-#, fuzzy, php-format
+#, php-format
 msgid "Not a valid people tag: %s"
-msgstr "æ\9c\89å\8a¹ã\81ªã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81§ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr "æ­£ã\81\97ã\81\84ã\82¿ã\82°ã\81§ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ï¼\9a %s"
 
 #: actions/peopletag.php:144
 #, php-format
 msgid "Users self-tagged with %s - page %d"
-msgstr ""
+msgstr "ユーザがつけたタグ %s  - ページ %d"
 
 #: actions/postnotice.php:84
 msgid "Invalid notice content"
-msgstr "不正な通知内容"
+msgstr "不正なつぶやき内容"
 
 #: actions/postnotice.php:90
 #, php-format
 msgid "Notice license ‘%s’ is not compatible with site license ‘%s’."
-msgstr ""
+msgstr "つぶやきライセンス ‘%s’ はサイトライセンス ‘%s’ と互換性がありません。"
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2357,9 +2374,8 @@ msgstr ""
 "す。"
 
 #: actions/profilesettings.php:99
-#, fuzzy
 msgid "Profile information"
-msgstr "プロファイルが不明"
+msgstr "プロファイル情報"
 
 #: actions/profilesettings.php:108 lib/groupeditform.php:154
 msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
@@ -2402,109 +2418,114 @@ msgstr "場所"
 
 #: actions/profilesettings.php:134 actions/register.php:472
 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 "つぶやきを投稿するときには私の現在の場所を共有してください"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "タグ"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
-"自分自身についてのタグ (アルファベット/数字/-/./_)、カンマまたは空白区切"
+"自分自身についてのタグ (アルファベット、数字、-、.、_)、カンマまたは空白区切"
 "りで"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "言語"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "ご希望の言語"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "タイムゾーン"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "普段のタイムゾーンはどれですか?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr "自分をフォローしている者を自動的にフォローする (BOTに最適)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "自己紹介が長すぎます (最長140文字)。"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
-msgstr ""
+msgstr "タイムゾーンが選ばれていません。"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
-msgstr ""
+msgstr "言語が長すぎます。(最大50字)"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
-#, fuzzy, php-format
+#: actions/profilesettings.php:253 actions/tagother.php:178
+#, php-format
 msgid "Invalid tag: \"%s\""
-msgstr "ä¸\8dæ­£ã\81ªã\83\9bã\83¼ã\83 ã\83\9aã\83¼ã\82¸ '%s'"
+msgstr "ä¸\8dæ­£ã\81ªã\82¿ã\82°: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
-msgstr ""
+msgstr "自動フォローのための利用者を更新できませんでした。"
+
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "場所情報を保存できません。"
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "プロファイルを保存できません"
 
-#: actions/profilesettings.php:336
-#, fuzzy
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
-msgstr "ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "ã\82¿ã\82°ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "設定が保存されました。"
 
 #: actions/public.php:83
 #, php-format
 msgid "Beyond the page limit (%s)"
-msgstr ""
+msgstr "ページ制限を超えました (%s)"
 
 #: actions/public.php:92
 msgid "Could not retrieve public stream."
-msgstr ""
+msgstr "パブリックストリームを検索できません。"
 
 #: actions/public.php:129
-#, fuzzy, php-format
+#, php-format
 msgid "Public timeline, page %d"
-msgstr "パブリックタイムライン"
+msgstr "パブリックタイムライン、ページ %d"
 
 #: actions/public.php:131 lib/publicgroupnav.php:79
 msgid "Public timeline"
 msgstr "パブリックタイムライン"
 
 #: actions/public.php:151
-#, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
-msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\83\95ã\82£ã\83¼ã\83\89 (RSS 1.0)"
 
 #: actions/public.php:155
-#, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
-msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\83\95ã\82£ã\83¼ã\83\89 (RSS 2.0)"
 
 #: actions/public.php:159
-#, fuzzy
 msgid "Public Stream Feed (Atom)"
-msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\83\95ã\82£ã\83¼ã\83\89 (Atom)"
 
 #: actions/public.php:179
 #, php-format
@@ -2512,16 +2533,20 @@ msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
+"これは %%site.name%% のパブリックタイムラインです、しかしまだ誰も投稿していま"
+"せん。"
 
 #: actions/public.php:182
 msgid "Be the first to post!"
-msgstr ""
+msgstr "投稿する1番目になってください!"
 
 #: actions/public.php:186
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
+"なぜ [アカウント登録](%%action.register%%) しないのですか、そして最初の投稿を"
+"してください!"
 
 #: actions/public.php:233
 #, php-format
@@ -2531,6 +2556,11 @@ msgid ""
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
+"これは %%site.name%% です。フリーソフトウェアツール[StatusNet](http://status."
+"net/)を基にした[マイクロブロギング](http://en.wikipedia.org/wiki/Micro-"
+"blogging) サービス。[今すぐ参加](%%action.register%%)してあなた自身や友達、家"
+"族そして同僚などについてのつぶやきを共有しましょう! ([もっと読む](%%doc.help%"
+"%))"
 
 #: actions/public.php:238
 #, php-format
@@ -2539,25 +2569,28 @@ msgid ""
 "blogging) service based on the Free Software [StatusNet](http://status.net/) "
 "tool."
 msgstr ""
+"これは %%site.name%% です。フリーソフトウェアツール[StatusNet](http://status."
+"net/)を基にした[マイクロブロギング](http://en.wikipedia.org/wiki/Micro-"
+"blogging) サービス。"
 
 #: actions/publictagcloud.php:57
-#, fuzzy
 msgid "Public tag cloud"
-msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\83\95ã\82£ã\83¼ド"
+msgstr "ã\83\91ã\83\96ã\83ªã\83\83ã\82¯ã\82¿ã\82°ã\82¯ã\83©ã\82¦ド"
 
 #: actions/publictagcloud.php:63
 #, php-format
 msgid "These are most popular recent tags on %s "
-msgstr ""
+msgstr "これらは %s の人気がある最近のタグです "
 
 #: actions/publictagcloud.php:69
 #, php-format
 msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet."
 msgstr ""
+"まだだれも [ハッシュタグ](%%doc.tags%%) 付きのつぶやきを投稿していません。"
 
 #: actions/publictagcloud.php:72
 msgid "Be the first to post one!"
-msgstr ""
+msgstr "投稿する1番目になってください!"
 
 #: actions/publictagcloud.php:75
 #, php-format
@@ -2565,10 +2598,12 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post "
 "one!"
 msgstr ""
+"なぜ [アカウント登録](%%action.register%%) しないのですか。そして最初の投稿を"
+"してください!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
-msgstr ""
+msgstr "タグクラウド"
 
 #: actions/recoverpassword.php:36
 msgid "You are already logged in!"
@@ -2596,25 +2631,27 @@ msgstr "確認コードが古すぎます。もう一度やり直してくださ
 
 #: actions/recoverpassword.php:111
 msgid "Could not update user with confirmed email address."
-msgstr ""
+msgstr "確認されたメールアドレスで利用者を更新できません。"
 
 #: actions/recoverpassword.php:152
 msgid ""
 "If you have forgotten or lost your password, you can get a new one sent to "
 "the email address you have stored in your account."
 msgstr ""
+"あなたのパスワードを忘れるか紛失したなら、あなたはアカウントに格納したメール"
+"アドレスに新しいものを送らせることができます。"
 
 #: actions/recoverpassword.php:158
 msgid "You have been identified. Enter a new password below. "
-msgstr ""
+msgstr "あなたは特定されました。 以下の新しいパスワードを入力してください。 "
 
 #: actions/recoverpassword.php:188
 msgid "Password recovery"
-msgstr ""
+msgstr "パスワード回復"
 
 #: actions/recoverpassword.php:191
 msgid "Nickname or email address"
-msgstr ""
+msgstr "ニックネームまたはメールアドレス"
 
 #: actions/recoverpassword.php:193
 msgid "Your nickname on this server, or your registered email address."
@@ -2634,11 +2671,11 @@ msgstr "パスワードを回復"
 
 #: actions/recoverpassword.php:210 actions/recoverpassword.php:322
 msgid "Password recovery requested"
-msgstr "ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89å\9b\9e復ã\81®リクエストされました"
+msgstr "ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89å\9b\9e復ã\81\8cリクエストされました"
 
 #: actions/recoverpassword.php:213
 msgid "Unknown action"
-msgstr ""
+msgstr "不明なアクション"
 
 #: actions/recoverpassword.php:236
 msgid "6 or more characters, and don't forget it!"
@@ -2654,11 +2691,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."
@@ -2668,7 +2705,7 @@ msgstr "アドレス確認保存エラー"
 msgid ""
 "Instructions for recovering your password have been sent to the email "
 "address registered to your account."
-msgstr "登録されたメールアドレスにパスワードの回復方法をおおくりしました。"
+msgstr "登録されたメールアドレスにパスワードの回復方法をおりしました。"
 
 #: actions/recoverpassword.php:344
 msgid "Unexpected password reset."
@@ -2692,25 +2729,24 @@ msgstr "新しいパスワードの保存に成功しました。ログインし
 
 #: actions/register.php:85 actions/register.php:189 actions/register.php:404
 msgid "Sorry, only invited people can register."
-msgstr ""
+msgstr "すみません、招待された人々だけが登録できます。"
 
 #: actions/register.php:92
-#, fuzzy
 msgid "Sorry, invalid invitation code."
-msgstr "確認コードにエラーがあります。"
+msgstr "すみません、不正な招待コード。"
 
 #: actions/register.php:112
 msgid "Registration successful"
-msgstr ""
+msgstr "登録成功"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "登録"
 
 #: actions/register.php:135
 msgid "Registration not allowed."
-msgstr ""
+msgstr "登録は許可されていません。"
 
 #: actions/register.php:198
 msgid "You can't register if you don't agree to the license."
@@ -2733,6 +2769,8 @@ msgid ""
 "With this form you can create  a new account. You can then post notices and "
 "link up to friends and colleagues. "
 msgstr ""
+"このフォームで新しいアカウントを作成できます。 次につぶやきを投稿して、友人や"
+"同僚にリンクできます。 "
 
 #: actions/register.php:424
 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
@@ -2745,7 +2783,7 @@ msgstr "6文字以上。必須です。"
 
 #: actions/register.php:433
 msgid "Same as password above. Required."
-msgstr ""
+msgstr "上のパスワードと同じです。 必須。"
 
 #: actions/register.php:437 actions/register.php:441
 #: actions/siteadminpanel.php:270 lib/accountsettingsaction.php:120
@@ -2758,22 +2796,21 @@ msgstr "更新、アナウンス、パスワードリカバリーでのみ使用
 
 #: actions/register.php:449
 msgid "Longer name, preferably your \"real\" name"
-msgstr ""
+msgstr "長い名前"
 
 #: actions/register.php:493
 msgid "My text and files are available under "
-msgstr "の下でテキスト及びファイルを利用可能"
+msgstr "次の下でテキスト及びファイルを利用可能 "
 
 #: actions/register.php:495
 msgid "Creative Commons Attribution 3.0"
 msgstr ""
 
 #: actions/register.php:496
-#, fuzzy
 msgid ""
 " except this private data: password, email address, IM address, and phone "
 "number."
-msgstr "個人情報を除く:パスワード、メールアドレス、IMアドレス、電話番号"
+msgstr "個人情報を除く: パスワード、メールアドレス、IMアドレス、電話番号"
 
 #: actions/register.php:537
 #, php-format
@@ -2823,22 +2860,22 @@ msgid ""
 "register%%) a new  account. If you already have an account  on a [compatible "
 "microblogging site](%%doc.openmublog%%),  enter your profile URL below."
 msgstr ""
-"ã\82µã\83\96ã\82¹ã\82¯ã\83©ã\82¤ã\83\96するには、[ログイン](%%action.login%%) するか, [登録](%%action."
+"ã\83\95ã\82©ã\83­ã\83¼するには、[ログイン](%%action.login%%) するか, [登録](%%action."
 "register%%) を行って下さい。既に [compatible microblogging site](%%doc."
-"openmublog%%) にアカウントを持っおもちの場合は、下にプロファイルURLを入力して"
-"下さい."
+"openmublog%%) にアカウントをお持ちの場合は、下にプロファイルURLを入力して下さ"
+"い."
 
 #: actions/remotesubscribe.php:112
 msgid "Remote subscribe"
-msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\82µã\83\96ã\82¹ã\82¯ã\83©ã\82¤ã\83\96"
+msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\83\95ã\82©ã\83­ã\83¼"
 
 #: actions/remotesubscribe.php:124
 msgid "Subscribe to a remote user"
-msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\83¦ã\83¼ã\82¶ã\83¼ã\81®ã\83\95ã\82©ã\83­ã\83¼ã\82\92許å\8f¯"
+msgstr "ã\83ªã\83¢ã\83¼ã\83\88ã\83¦ã\83¼ã\82¶ã\83¼ã\82\92ã\83\95ã\82©ã\83­ã\83¼"
 
 #: actions/remotesubscribe.php:129
 msgid "User nickname"
-msgstr "ユーザのニックネーム"
+msgstr "利用者のニックネーム"
 
 #: actions/remotesubscribe.php:130
 msgid "Nickname of the user you want to follow"
@@ -2862,47 +2899,43 @@ msgid "Invalid profile URL (bad format)"
 msgstr "不正なプロファイルURL。(形式不備)"
 
 #: actions/remotesubscribe.php:168
-#, fuzzy
 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)."
-msgstr "有効なプロファイルURLではありません。(XRDSドキュメントが無い)"
+msgstr ""
+"有効なプロファイルURLではありません。(YADIS ドキュメントがないかまたは 不正"
+"な XRDS 定義)"
 
 #: actions/remotesubscribe.php:176
 msgid "That’s a local profile! Login to subscribe."
 msgstr ""
+"それはローカルのプロファイルです! フォローするには、ログインしてください。"
 
 #: actions/remotesubscribe.php:183
-#, fuzzy
 msgid "Couldn’t get a request token."
 msgstr "リクエストトークンを取得できません"
 
 #: actions/repeat.php:57
 msgid "Only logged-in users can repeat notices."
-msgstr ""
+msgstr "ログインユーザだけがつぶやきを繰り返せます。"
 
 #: actions/repeat.php:64 actions/repeat.php:71
-#, fuzzy
 msgid "No notice specified."
-msgstr "新しい通知"
+msgstr "つぶやきがありません。"
 
 #: actions/repeat.php:76
-#, fuzzy
 msgid "You can't repeat your own notice."
-msgstr "ライセンスに同意頂けない場合は登録できません。"
+msgstr "自分のつぶやきは繰り返せません。"
 
 #: actions/repeat.php:90
-#, fuzzy
 msgid "You already repeated that notice."
-msgstr "既にログイン済みです。"
+msgstr "すでにそのつぶやきを繰り返しています。"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
-#, fuzzy
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
-msgstr "作成"
+msgstr "繰り返された"
 
 #: actions/repeat.php:119
-#, fuzzy
 msgid "Repeated!"
-msgstr "作成"
+msgstr "繰り返されました!"
 
 #: actions/replies.php:125 actions/repliesrss.php:68
 #: lib/personalgroupnav.php:105
@@ -2911,24 +2944,24 @@ msgid "Replies to %s"
 msgstr "%s への返信"
 
 #: actions/replies.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "Replies to %s, page %d"
-msgstr "%s への返信"
+msgstr "%s への返信、ページ %d"
 
 #: actions/replies.php:144
-#, fuzzy, php-format
+#, php-format
 msgid "Replies feed for %s (RSS 1.0)"
-msgstr "%sの通知フィード"
+msgstr "%s の返信フィード (RSS 1.0)"
 
 #: actions/replies.php:151
-#, fuzzy, php-format
+#, php-format
 msgid "Replies feed for %s (RSS 2.0)"
-msgstr "%sの通知フィード"
+msgstr "%s の返信フィード (RSS 2.0)"
 
 #: actions/replies.php:158
-#, fuzzy, php-format
+#, php-format
 msgid "Replies feed for %s (Atom)"
-msgstr "%sの通知フィード"
+msgstr "%s の返信フィード (Atom)"
 
 #: actions/replies.php:198
 #, php-format
@@ -2936,6 +2969,8 @@ msgid ""
 "This is the timeline showing replies to %s but %s hasn't received a notice "
 "to his attention yet."
 msgstr ""
+"これは %s への返信を表示したタイムラインです、しかし %s はまだつぶやきを受け"
+"取っていません。"
 
 #: actions/replies.php:203
 #, php-format
@@ -2943,6 +2978,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
@@ -2950,51 +2987,54 @@ msgid ""
 "You can try to [nudge %s](../%s) or [post something to his or her attention]"
 "(%%%%action.newnotice%%%%?status_textarea=%s)."
 msgstr ""
+"あなたは [合図 %s](../%s) するか、[その人宛てに何かを投稿](%%%%action."
+"newnotice%%%%?status_textarea=%s)してください。"
 
 #: actions/repliesrss.php:72
-#, fuzzy, php-format
+#, php-format
 msgid "Replies to %1$s on %2$s!"
-msgstr "%s への返信"
+msgstr "%2$s 上の %1$s への返信!"
 
 #: actions/sandbox.php:65 actions/unsandbox.php:65
-#, fuzzy
 msgid "You cannot sandbox users on this site."
-msgstr "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¦ã\81\84ません。"
+msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81\93ã\81®ã\82µã\82¤ã\83\88ã\81®ã\82µã\83³ã\83\89ã\83\9cã\83\83ã\82¯ã\82¹ã\83¦ã\83¼ã\82¶ã\81\8cã\81§ã\81\8dません。"
 
 #: actions/sandbox.php:72
-#, fuzzy
 msgid "User is already sandboxed."
-msgstr "プロファイルがありません。"
+msgstr "利用者はすでにサンドボックスです。"
 
 #: actions/showfavorites.php:79
-#, fuzzy, php-format
+#, php-format
 msgid "%s's favorite notices, page %d"
-msgstr "そのような通知はありません。"
+msgstr "%s のお気に入りのつぶやき、ページ %d"
 
 #: actions/showfavorites.php:132
 msgid "Could not retrieve favorite notices."
-msgstr ""
+msgstr "お気に入りのつぶやきを検索できません。"
 
 #: actions/showfavorites.php:170
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (RSS 1.0)"
-msgstr "%s ã\81®ã\81¨ã\82\82ã\81 ã\81¡ã\81®ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "%s ã\81®ã\81\8aæ°\97ã\81«å\85¥ã\82\8aã\81®ã\83\95ã\82£ã\83¼ã\83\89 (RSS 1.0)"
 
 #: actions/showfavorites.php:177
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (RSS 2.0)"
-msgstr "%s ã\81®ã\81¨ã\82\82ã\81 ã\81¡ã\81®ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "%s ã\81®ã\81\8aæ°\97ã\81«å\85¥ã\82\8aã\81®ã\83\95ã\82£ã\83¼ã\83\89 (RSS 2.0)"
 
 #: actions/showfavorites.php:184
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (Atom)"
-msgstr "%s ã\81®ã\81¨ã\82\82ã\81 ã\81¡ã\81®ã\83\95ã\82£ã\83¼ã\83\89"
+msgstr "%s ã\81®ã\81\8aæ°\97ã\81«å\85¥ã\82\8aã\81®ã\83\95ã\82£ã\83¼ã\83\89 (Atom)"
 
 #: 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 ""
+"あなたはまだ少しのお気に入りのつぶやきも選んでいません。 後でブックマークを追"
+"加するあなたがそれらがお気に入りのつぶやきのときにお気に入りボタンをクリック"
+"するか、またはそれらの上でスポットライトをはじいてください。"
 
 #: actions/showfavorites.php:207
 #, php-format
@@ -3002,6 +3042,8 @@ msgid ""
 "%s hasn't added any notices to his favorites yet. Post something interesting "
 "they would add to their favorites :)"
 msgstr ""
+"%s はまだ彼のお気に入りに少しのつぶやきも加えていません。 彼らがお気に入りに"
+"加えることおもしろいものを投稿してください:)"
 
 #: actions/showfavorites.php:211
 #, php-format
@@ -3010,88 +3052,87 @@ msgid ""
 "account](%%%%action.register%%%%) and then post something interesting they "
 "would add to their favorites :)"
 msgstr ""
+"%s はまだお気に入りに少しのつぶやきも加えていません。 なぜ [アカウント登録](%"
+"%%%action.register%%%%) しないのですか。そして、彼らがお気に入りに加えるおも"
+"しろい何かを投稿しませんか:)"
 
 #: actions/showfavorites.php:242
 msgid "This is a way to share what you like."
-msgstr ""
+msgstr "これは、あなたが好きなことを共有する方法です。"
 
 #: actions/showgroup.php:82 lib/groupnav.php:86
 #, php-format
 msgid "%s group"
-msgstr ""
+msgstr "%s グループ"
 
 #: actions/showgroup.php:84
 #, php-format
 msgid "%s group, page %d"
-msgstr ""
+msgstr "%s グループ、ページ %d"
 
 #: actions/showgroup.php:218
-#, fuzzy
 msgid "Group profile"
-msgstr "ã\81\9dã\81®ã\82\88ã\81\86ã\81ªé\80\9aç\9f¥ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
 #: actions/userauthorization.php:167 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
-#, fuzzy
 msgid "Note"
-msgstr "通知"
+msgstr "ノート"
 
 #: actions/showgroup.php:284 lib/groupeditform.php:184
 msgid "Aliases"
-msgstr ""
+msgstr "別名"
 
 #: actions/showgroup.php:293
 msgid "Group actions"
-msgstr ""
+msgstr "グループアクション"
 
 #: actions/showgroup.php:328
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (RSS 1.0)"
-msgstr "%sの通知フィード"
+msgstr "%s グループのつぶやきフィード (RSS 1.0)"
 
 #: actions/showgroup.php:334
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (RSS 2.0)"
-msgstr "%sの通知フィード"
+msgstr "%s グループのつぶやきフィード (RSS 2.0)"
 
 #: actions/showgroup.php:340
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (Atom)"
-msgstr "%sの通知フィード"
+msgstr "%s グループのつぶやきフィード (Atom)"
 
 #: actions/showgroup.php:345
-#, fuzzy, php-format
+#, php-format
 msgid "FOAF for %s group"
-msgstr "%sの通知フィード"
+msgstr "%s グループの FOAF"
 
 #: actions/showgroup.php:381 actions/showgroup.php:438 lib/groupnav.php:91
-#, fuzzy
 msgid "Members"
-msgstr "ã\81\8bã\82\89ã\81®ã\83¡ã\83³ã\83\90ã\83¼"
+msgstr "メンバー"
 
 #: actions/showgroup.php:386 lib/profileaction.php:117
 #: lib/profileaction.php:148 lib/profileaction.php:236 lib/section.php:95
 #: lib/tagcloudsection.php:71
 msgid "(None)"
-msgstr ""
+msgstr "(なし)"
 
 #: actions/showgroup.php:392
 msgid "All members"
-msgstr ""
+msgstr "全てのメンバー"
 
 #: actions/showgroup.php:429 lib/profileaction.php:174
 msgid "Statistics"
 msgstr "統計データ"
 
 #: actions/showgroup.php:432
-#, fuzzy
 msgid "Created"
-msgstr "作成"
+msgstr "作成されました"
 
 #: actions/showgroup.php:448
 #, php-format
@@ -3102,6 +3143,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** は %%site.name%% 上のユーザグループです。フリーソフトウェアツール"
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング] (http://en."
+"wikipedia.org/wiki/Micro-blogging) サービス。メンバーは彼らの暮らしと興味に関"
+"する短いメッセージを共有します。[今すぐ参加](%%%%action.register%%%%) してこ"
+"のグループの一員になりましょう! ([もっと読む](%%%%doc.help%%%%))"
 
 #: actions/showgroup.php:454
 #, php-format
@@ -3111,29 +3157,32 @@ msgid ""
 "[StatusNet](http://status.net/) tool. Its members share short messages about "
 "their life and interests. "
 msgstr ""
+"**%s** は %%site.name%% 上のユーザグループです。フリーソフトウェアツール"
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
+"wikipedia.org/wiki/Micro-blogging) サービス。メンバーは彼らの暮らしと興味に関"
+"する短いメッセージを共有します。"
 
 #: actions/showgroup.php:482
-#, fuzzy
 msgid "Admins"
 msgstr "管理者"
 
 #: actions/showmessage.php:81
 msgid "No such message."
-msgstr ""
+msgstr "そのようなメッセージはありません。"
 
 #: actions/showmessage.php:98
 msgid "Only the sender and recipient may read this message."
-msgstr ""
+msgstr "送信者と受取人だけがこのメッセージを読めます。"
 
 #: actions/showmessage.php:108
 #, php-format
 msgid "Message to %1$s on %2$s"
-msgstr ""
+msgstr "%2$s 上の %1$s へのメッセージ"
 
 #: actions/showmessage.php:113
 #, php-format
 msgid "Message from %1$s on %2$s"
-msgstr ""
+msgstr "%2$s 上の %1$s からのメッセージ"
 
 #: actions/shownotice.php:90
 msgid "Notice deleted."
@@ -3142,12 +3191,12 @@ msgstr "つぶやきを削除しました。"
 #: actions/showstream.php:73
 #, php-format
 msgid " tagged %s"
-msgstr ""
+msgstr "タグ付けされた %s"
 
 #: actions/showstream.php:79
 #, php-format
 msgid "%s, page %d"
-msgstr ""
+msgstr "%s、ページ %d"
 
 #: actions/showstream.php:122
 #, php-format
@@ -3172,18 +3221,20 @@ msgstr "%sのつぶやきフィード (Atom)"
 #: actions/showstream.php:148
 #, php-format
 msgid "FOAF for %s"
-msgstr ""
+msgstr "%s の FOAF"
 
 #: actions/showstream.php:191
 #, php-format
 msgid "This is the timeline for %s but %s hasn't posted anything yet."
-msgstr ""
+msgstr "これは %s のタイムラインですが、%s はまだなにも投稿していません。"
 
 #: actions/showstream.php:196
 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
 #, php-format
@@ -3191,6 +3242,8 @@ msgid ""
 "You can try to nudge %s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%s)."
 msgstr ""
+"あなたは、%s に合図するか、[またはその人宛に何かを投稿](%%%%action.newnotice%"
+"%%%?status_textarea=%s) しようとすることができます。"
 
 #: actions/showstream.php:234
 #, php-format
@@ -3200,6 +3253,11 @@ 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."
+"wikipedia.org/wiki/Micro-blogging) サービス。[今すぐ参加](%%%%action.register"
+"%%%%)して、**%s** のつぶやきなどをフォローしましょう! ([もっと読む](%%%%doc."
+"help%%%%))"
 
 #: actions/showstream.php:239
 #, php-format
@@ -3208,62 +3266,63 @@ msgid ""
 "wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
 "[StatusNet](http://status.net/) tool. "
 msgstr ""
+"**%s** は %%site.name%% 上のアカウントです。フリーソフトウェアツール"
+"[StatusNet](http://status.net/)を基にした[マイクロブロギング] (http://en."
+"wikipedia.org/wiki/Micro-blogging) サービス。"
 
 #: actions/showstream.php:313
-#, fuzzy, php-format
+#, php-format
 msgid "Repeat of %s"
-msgstr "%s ã\81¸ã\81®è¿\94ä¿¡"
+msgstr "%s ã\81®ç¹°ã\82\8aè¿\94ã\81\97"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 msgid "You cannot silence users on this site."
-msgstr ""
+msgstr "あなたはこのサイトでユーザを黙らせることができません。"
 
 #: actions/silence.php:72
-#, fuzzy
 msgid "User is already silenced."
-msgstr "プロファイルがありません。"
+msgstr "利用者は既に黙っています。"
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
-msgstr ""
+msgstr "この StatusNet サイトの基本設定。"
 
 #: actions/siteadminpanel.php:146
 msgid "Site name must have non-zero length."
-msgstr ""
+msgstr "サイト名は長さ0ではいけません。"
 
 #: actions/siteadminpanel.php:154
-#, fuzzy
 msgid "You must have a valid contact email address"
-msgstr "有効なメールアドレスではありません。"
+msgstr "有効な連絡用メールアドレスがなければなりません。"
 
 #: actions/siteadminpanel.php:172
 #, php-format
 msgid "Unknown language \"%s\""
-msgstr ""
+msgstr "不明な言語 \"%s\""
 
 #: actions/siteadminpanel.php:179
 msgid "Invalid snapshot report URL."
-msgstr ""
+msgstr "不正なスナップショットレポートURL。"
 
 #: actions/siteadminpanel.php:185
 msgid "Invalid snapshot run value."
-msgstr ""
+msgstr "不正なスナップショットランバリュー"
 
 #: actions/siteadminpanel.php:191
 msgid "Snapshot frequency must be a number."
-msgstr ""
+msgstr "スナップショット頻度は数でなければなりません。"
 
 #: actions/siteadminpanel.php:197
 msgid "Minimum text limit is 140 characters."
-msgstr ""
+msgstr "最小のテキスト制限は140字です。"
 
 #: actions/siteadminpanel.php:203
 msgid "Dupe limit must 1 or more seconds."
-msgstr ""
+msgstr "デュープ制限は1秒以上でなければなりません。"
 
 #: actions/siteadminpanel.php:253
 msgid "General"
-msgstr ""
+msgstr "一般"
 
 #: actions/siteadminpanel.php:256
 msgid "Site name"
@@ -3271,58 +3330,58 @@ msgstr "サイト名"
 
 #: actions/siteadminpanel.php:257
 msgid "The name of your site, like \"Yourcompany Microblog\""
-msgstr ""
+msgstr "あなたのサイトの名前、\"Yourcompany Microblog\"のような。"
 
 #: actions/siteadminpanel.php:261
 msgid "Brought by"
-msgstr ""
+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 ""
+msgstr "URLで、持って来られます"
 
 #: actions/siteadminpanel.php:267
 msgid "URL used for credits link in footer of each page"
 msgstr ""
+"クレジットに使用されるURLは、それぞれのページのフッターでリンクされます。"
 
 #: actions/siteadminpanel.php:271
-#, fuzzy
 msgid "Contact email address for your site"
-msgstr "ã\81\9dã\81®ã\83¦ã\83¼ã\82¶ã\81«ã\81¯ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81®ç\99»é\8c²ã\81\8cã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr "ã\81\82ã\81ªã\81\9fã\81®ã\82µã\82¤ã\83\88ã\81«ã\82³ã\83³ã\82¿ã\82¯ã\83\88ã\81\99ã\82\8bã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹"
 
 #: actions/siteadminpanel.php:277
-#, fuzzy
 msgid "Local"
-msgstr "場所"
+msgstr "ローカル"
 
 #: actions/siteadminpanel.php:288
 msgid "Default timezone"
-msgstr ""
+msgstr "デフォルトタイムゾーン"
 
 #: actions/siteadminpanel.php:289
 msgid "Default timezone for the site; usually UTC."
-msgstr ""
+msgstr "サイトのデフォルトタイムゾーン; 通常UTC。"
 
 #: actions/siteadminpanel.php:295
 msgid "Default site language"
-msgstr ""
+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 ""
+msgstr "サイトのサーバーホスト名"
 
 #: actions/siteadminpanel.php:310
 msgid "Fancy URLs"
@@ -3330,42 +3389,39 @@ msgstr ""
 
 #: actions/siteadminpanel.php:312
 msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
+msgstr "Fancy URL (読みやすく忘れにくい) を使用しますか?"
 
 #: actions/siteadminpanel.php:318
-#, fuzzy
 msgid "Access"
-msgstr "承認"
+msgstr "アクセス"
 
 #: actions/siteadminpanel.php:321
-#, fuzzy
 msgid "Private"
-msgstr "ã\83\97ã\83©ã\82¤ã\83\90ã\82·ã\83¼"
+msgstr "ã\83\97ã\83©ã\82¤ã\83\99ã\83¼ã\83\88"
 
 #: actions/siteadminpanel.php:323
 msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "匿名ユーザー(ログインしていません)がサイトを見るのを禁止しますか?"
 
 #: actions/siteadminpanel.php:327
 msgid "Invite only"
-msgstr ""
+msgstr "招待のみ"
 
 #: actions/siteadminpanel.php:329
 msgid "Make registration invitation only."
-msgstr ""
+msgstr "招待のみ登録する"
 
 #: actions/siteadminpanel.php:333
-#, fuzzy
 msgid "Closed"
-msgstr "ブロック"
+msgstr "閉じられた"
 
 #: actions/siteadminpanel.php:335
 msgid "Disable new registrations."
-msgstr ""
+msgstr "新規登録を無効。"
 
 #: actions/siteadminpanel.php:341
 msgid "Snapshots"
-msgstr ""
+msgstr "スナップショット"
 
 #: actions/siteadminpanel.php:344
 msgid "Randomly during Web hit"
@@ -3373,74 +3429,75 @@ msgstr ""
 
 #: actions/siteadminpanel.php:345
 msgid "In a scheduled job"
-msgstr ""
+msgstr "予定されているジョブで"
 
 #: actions/siteadminpanel.php:347
 msgid "Data snapshots"
-msgstr ""
+msgstr "データスナップショット"
 
 #: actions/siteadminpanel.php:348
 msgid "When to send statistical data to status.net servers"
-msgstr ""
+msgstr "いつ status.net サーバに統計データを送りますか"
 
 #: actions/siteadminpanel.php:353
 msgid "Frequency"
-msgstr ""
+msgstr "頻度"
 
 #: actions/siteadminpanel.php:354
 msgid "Snapshots will be sent once every N web hits"
-msgstr ""
+msgstr "レポート URL"
 
 #: actions/siteadminpanel.php:359
 msgid "Report URL"
-msgstr ""
+msgstr "レポート URL"
 
 #: actions/siteadminpanel.php:360
 msgid "Snapshots will be sent to this URL"
-msgstr ""
+msgstr "このURLにスナップショットを送るでしょう"
 
 #: actions/siteadminpanel.php:367
 msgid "Limits"
-msgstr ""
+msgstr "制限"
 
 #: actions/siteadminpanel.php:370
 msgid "Text limit"
-msgstr ""
+msgstr "テキスト制限"
 
 #: actions/siteadminpanel.php:370
 msgid "Maximum number of characters for notices."
-msgstr ""
+msgstr "つぶやきの文字の最大数"
 
 #: actions/siteadminpanel.php:374
 msgid "Dupe limit"
-msgstr ""
+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 "設定"
+msgstr "サイト設定の保存"
 
 #: actions/smssettings.php:58
 msgid "SMS Settings"
-msgstr ""
+msgstr "SMS 設定"
 
 #: actions/smssettings.php:69
 #, php-format
 msgid "You can receive SMS messages through email from %%site.name%%."
 msgstr ""
+"あなたは %%site.name%% からメールでSMSメッセージを受け取ることができます。"
 
 #: actions/smssettings.php:91
-#, fuzzy
 msgid "SMS is not available."
-msgstr "このページはあなたが承認したメディアタイプでは利用できません。"
+msgstr "SMS は利用できません。"
 
 #: actions/smssettings.php:112
 msgid "Current confirmed SMS-enabled phone number."
-msgstr ""
+msgstr "現在の確認された SMS 可能な電話番号。"
 
 #: actions/smssettings.php:123
 msgid "Awaiting confirmation on this phone number."
@@ -3452,60 +3509,63 @@ msgstr "確認コード"
 
 #: actions/smssettings.php:131
 msgid "Enter the code you received on your phone."
-msgstr ""
+msgstr "あなたがあなたの電話で受け取ったコードを入れてください。"
 
 #: actions/smssettings.php:138
 msgid "SMS Phone number"
-msgstr ""
+msgstr "SMS 電話番号"
 
 #: actions/smssettings.php:140
 msgid "Phone number, no punctuation or spaces, with area code"
-msgstr ""
+msgstr "電話番号、句読点またはスペースがない、市街番号付き"
 
 #: actions/smssettings.php:174
 msgid ""
 "Send me notices through SMS; I understand I may incur exorbitant charges "
 "from my carrier."
 msgstr ""
+"SMSを通してつぶやきを私に送ってください; 私は、私のキャリアから法外な料金を被"
+"るかもしれないのを理解しています。"
 
 #: actions/smssettings.php:306
 msgid "No phone number."
-msgstr ""
+msgstr "電話番号がありません。"
 
 #: actions/smssettings.php:311
 msgid "No carrier selected."
-msgstr ""
+msgstr "キャリアが選択されていません。"
 
 #: actions/smssettings.php:318
 msgid "That is already your phone number."
-msgstr ""
+msgstr "これはすでにあなたの電話番号です。"
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
-msgstr ""
+msgstr "この電話番号はすでに他の利用者に使われています。"
 
 #: actions/smssettings.php:347
-#, fuzzy
 msgid ""
 "A confirmation code was sent to the phone number you added. Check your phone "
 "for the code and instructions on how to use it."
-msgstr "その確認コードはあなたのものではありません!"
+msgstr ""
+"あなたが加えた電話番号に確認コードを送りました。 どうそれを使用するかに関する"
+"コードと指示のために電話をチェックしてください。"
 
 #: actions/smssettings.php:374
 msgid "That is the wrong confirmation number."
-msgstr ""
+msgstr "それは間違った確認番号です。"
 
 #: actions/smssettings.php:405
 msgid "That is not your phone number."
-msgstr ""
+msgstr "それはあなたの電話番号ではありません。"
 
 #: actions/smssettings.php:465
 msgid "Mobile carrier"
-msgstr ""
+msgstr "携帯電話会社"
 
 #: actions/smssettings.php:469
 msgid "Select a carrier"
-msgstr ""
+msgstr "キャリア選択"
 
 #: actions/smssettings.php:476
 #, php-format
@@ -3513,25 +3573,25 @@ msgid ""
 "Mobile carrier for your phone. If you know a carrier that accepts SMS over "
 "email but isn't listed here, send email to let us know at %s."
 msgstr ""
+"あなたの電話のための携帯電話会社。 メールの上にSMSを受け入れますが、ここに記"
+"載されていないキャリアを知っているなら、メールを送って、%sで私たちに知らせて"
+"ください。"
 
 #: actions/smssettings.php:498
 msgid "No code entered"
-msgstr ""
+msgstr "コードが入力されていません"
 
 #: actions/subedit.php:70
-#, fuzzy
 msgid "You are not subscribed to that profile."
-msgstr "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡されていません。"
+msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\83\95ã\82©ã\83­ã\83¼されていません。"
 
 #: actions/subedit.php:83
-#, fuzzy
 msgid "Could not save subscription."
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83ªã\83\97ã\82·ã\83§ã\83³ã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "ã\83\95ã\82©ã\83­ã\83¼ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
 
 #: actions/subscribe.php:55
-#, fuzzy
 msgid "Not a local user."
-msgstr "ã\81\9dã\81®ã\82\88ã\81\86ã\81ªã\83¦ã\83¼ã\82¶ã\81¯ã\81\84ません。"
+msgstr "ã\83­ã\83¼ã\82«ã\83«ã\83¦ã\83¼ã\82¶ã\81§ã\81¯ã\81\82ã\82\8aません。"
 
 #: actions/subscribe.php:69
 msgid "Subscribed"
@@ -3561,11 +3621,13 @@ 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
@@ -3573,6 +3635,8 @@ msgid ""
 "%s has no subscribers. Why not [register an account](%%%%action.register%%%"
 "%) and be the first?"
 msgstr ""
+"%s にはフォローしている人がいません。なぜ[アカウント登録](%%%%action.register"
+"%%%%)して最初にならないのですか?"
 
 #: actions/subscriptions.php:52
 #, php-format
@@ -3602,107 +3666,108 @@ msgid ""
 "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
 "automatically subscribe to people you already follow there."
 msgstr ""
+"今、だれのつぶやきも聞いていないなら、あなたが知っている人々をフォローしてみ"
+"てください。[ピープル検索](%%action.peoplesearch%%)を試してください。そして、"
+"あなたが興味を持っているグループと私たちの[フィーチャーされた利用者](%%"
+"action.featured%%)のメンバーを探してください。もし[Twitterユーザ](%%action."
+"twittersettings%%)であれば、あなたは自動的に既にフォローしている人々をフォ"
+"ローできます。"
 
 #: actions/subscriptions.php:123 actions/subscriptions.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not listening to anyone."
-msgstr "%1$s は %2$s であなたの通知を聞いています。"
+msgstr "%s はだれも言うことを聞いていません。"
 
 #: actions/subscriptions.php:194
-#, fuzzy
 msgid "Jabber"
-msgstr "Jabbar ID はありません。"
+msgstr "Jabber"
 
 #: actions/subscriptions.php:199 lib/connectsettingsaction.php:115
 msgid "SMS"
-msgstr ""
+msgstr "SMS"
 
 #: actions/tag.php:68
-#, fuzzy, php-format
+#, php-format
 msgid "Notices tagged with %s, page %d"
-msgstr "マイクロブログ by %s"
+msgstr "%s とタグ付けされたつぶやき、ページ %d"
 
 #: actions/tag.php:86
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
-msgstr "%sの通知フィード"
+msgstr "%s とタグ付けされたつぶやきフィード (RSS 1.0)"
 
 #: actions/tag.php:92
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 2.0)"
-msgstr "%sの通知フィード"
+msgstr "%s とタグ付けされたつぶやきフィード (RSS 2.0)"
 
 #: actions/tag.php:98
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (Atom)"
-msgstr "%sの通知フィード"
+msgstr "%s とタグ付けされたつぶやきフィード (Atom)"
 
 #: actions/tagother.php:39
-#, fuzzy
 msgid "No ID argument."
-msgstr "そのようなドキュメントはありません。"
+msgstr "ID引数がありません。"
 
 #: actions/tagother.php:65
 #, php-format
 msgid "Tag %s"
-msgstr ""
+msgstr "タグ %s"
 
 #: actions/tagother.php:77 lib/userprofile.php:75
-#, fuzzy
 msgid "User profile"
-msgstr "プロファイルがありません。"
+msgstr "利用者プロファイル"
 
 #: actions/tagother.php:81 lib/userprofile.php:102
 msgid "Photo"
-msgstr ""
+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 ""
 "You can only tag people you are subscribed to or who are subscribed to you."
 msgstr ""
+"あなたはフォローされる人々にタグ付けをすることができるだけか、あなたをフォ"
+"ローされているか。"
 
 #: actions/tagother.php:200
-#, fuzzy
 msgid "Could not save tags."
-msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "ã\82¿ã\82°ã\82\92ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
 
 #: actions/tagother.php:236
 msgid "Use this form to add tags to your subscribers or subscriptions."
-msgstr ""
+msgstr "このフォームを使用して、フォロー者かフォローにタグを加えてください。"
 
 #: actions/tagrss.php:35
-#, fuzzy
 msgid "No such tag."
-msgstr "そのような通知はありません。"
+msgstr "そのようなタグはありません。"
 
 #: actions/twitapitrends.php:87
 msgid "API method under construction."
 msgstr "API メソッドが工事中です。"
 
 #: actions/unblock.php:59
-#, fuzzy
 msgid "You haven't blocked that user."
-msgstr "既にログイン済みです。"
+msgstr "あなたはそのユーザをブロックしていません。"
 
 #: actions/unsandbox.php:72
-#, fuzzy
 msgid "User is not sandboxed."
-msgstr "プロファイルがありません。"
+msgstr "利用者はサンドボックスではありません。"
 
 #: actions/unsilence.php:72
-#, fuzzy
 msgid "User is not silenced."
-msgstr "プロファイルがありません。"
+msgstr "利用者はサイレンスではありません。"
 
 #: actions/unsubscribe.php:77
 msgid "No profile id in request."
@@ -3714,34 +3779,36 @@ msgstr "そのIDはプロファイルではありません。"
 
 #: actions/unsubscribe.php:98
 msgid "Unsubscribed"
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83©ã\82¤ã\83\96解除済み"
+msgstr "ã\83\95ã\82©ã\83­ã\83¼解除済み"
 
 #: actions/updateprofile.php:62 actions/userauthorization.php:330
 #, php-format
 msgid "Listenee stream license ‘%s’ is not compatible with site license ‘%s’."
 msgstr ""
+"リスニーストリームライセンス ‘%s’ は、サイトライセンス ‘%s’ と互換性がありま"
+"せん。"
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:305
 #: lib/personalgroupnav.php:115
 msgid "User"
-msgstr ""
+msgstr "利用者"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr ""
+msgstr "この StatusNet サイトの利用者設定。"
 
 #: actions/useradminpanel.php:149
 msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "不正な自己紹介制限。数字である必要があります。"
 
 #: actions/useradminpanel.php:155
 msgid "Invalid welcome text. Max length is 255 characters."
-msgstr ""
+msgstr "不正なウェルカムテキスト。最大長は255字です。"
 
 #: actions/useradminpanel.php:165
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr ""
+msgstr "不正なデフォルトフォローです: '%1$s'  は利用者ではありません。"
 
 #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
@@ -3750,86 +3817,80 @@ msgstr "プロファイル"
 
 #: actions/useradminpanel.php:222
 msgid "Bio Limit"
-msgstr ""
+msgstr "自己紹介制限"
 
 #: actions/useradminpanel.php:223
 msgid "Maximum length of a profile bio in characters."
-msgstr ""
+msgstr "プロファイル自己紹介の最大文字長。"
 
 #: actions/useradminpanel.php:231
-#, fuzzy
 msgid "New users"
-msgstr "削除"
+msgstr "新しい利用者"
 
 #: actions/useradminpanel.php:235
 msgid "New user welcome"
-msgstr ""
+msgstr "新しい利用者を歓迎"
 
 #: actions/useradminpanel.php:236
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr ""
+msgstr "新しい利用者へのウェルカムテキスト (最大255字)。"
 
 #: actions/useradminpanel.php:241
-#, fuzzy
 msgid "Default subscription"
-msgstr "ã\81\99ã\81¹ã\81¦ã\81®è³¼èª­"
+msgstr "ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\83\95ã\82©ã\83­ã\83¼"
 
 #: actions/useradminpanel.php:242
-#, fuzzy
 msgid "Automatically subscribe new users to this user."
-msgstr "è\87ªå\88\86ã\82\92購読ã\81\97ã\81¦ã\81\84ã\82\8bè\80\85ã\82\92è\87ªå\8b\95ç\9a\84ã\81«è³¼èª­ã\81\99ã\82\8b (é\9d\9e人é\96\93ã\81«æ\9c\80é\81©)"
+msgstr "è\87ªå\8b\95ç\9a\84ã\81«ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81«æ\96°ã\81\97ã\81\84å\88©ç\94¨è\80\85ã\82\92ã\83\95ã\82©ã\83­ã\83¼ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82"
 
 #: actions/useradminpanel.php:251
-#, fuzzy
 msgid "Invitations"
-msgstr "確認コード"
+msgstr "招待"
 
 #: actions/useradminpanel.php:256
 msgid "Invitations enabled"
-msgstr ""
+msgstr "招待が可能"
 
 #: actions/useradminpanel.php:258
 msgid "Whether to allow users to invite new users."
-msgstr ""
+msgstr "利用者が新しい利用者を招待するのを許容するかどうか。"
 
 #: actions/useradminpanel.php:265
 msgid "Sessions"
-msgstr ""
+msgstr "セッション"
 
 #: actions/useradminpanel.php:270
 msgid "Handle sessions"
-msgstr ""
+msgstr "セッションの扱い"
 
 #: actions/useradminpanel.php:272
 msgid "Whether to handle sessions ourselves."
-msgstr ""
+msgstr "自分達でセッションを扱うのであるかどうか。"
 
 #: actions/useradminpanel.php:276
 msgid "Session debugging"
-msgstr ""
+msgstr "セッションデバッグ"
 
 #: actions/useradminpanel.php:278
 msgid "Turn on debugging output for sessions."
-msgstr ""
+msgstr "セッションのためのデバッグ出力をオン。"
 
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "フォローを承認"
 
 #: actions/userauthorization.php:110
-#, fuzzy
 msgid ""
 "Please check these details to make sure that you want to subscribe to this "
 "user’s notices. If you didn’t just ask to subscribe to someone’s notices, "
 "click “Reject”."
 msgstr ""
-"ユーザの通知を購読するには詳細を確認して下さい。購読しない場合は、\"Cancel\" "
-"ã\82­ã\83£ã\83³ã\82»ã\83«をクリックして下さい。"
+"ユーザのつぶやきをフォローするには詳細を確認して下さい。だれかのつぶやきを"
+"ã\83\95ã\82©ã\83­ã\83¼ã\81\99ã\82\8bã\81\9fã\82\81ã\81«å°\8bã\81­ã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81\"Reject\" をクリックして下さい。"
 
 #: actions/userauthorization.php:188
-#, fuzzy
 msgid "License"
-msgstr "ライセンス"
+msgstr "ライセンス"
 
 #: actions/userauthorization.php:209
 msgid "Accept"
@@ -3845,9 +3906,8 @@ msgid "Reject"
 msgstr "拒否"
 
 #: actions/userauthorization.php:212
-#, fuzzy
 msgid "Reject this subscription"
-msgstr "全てのサブスクリプション"
+msgstr "このフォローを拒否"
 
 #: actions/userauthorization.php:225
 msgid "No authorization request!"
@@ -3863,6 +3923,9 @@ msgid ""
 "with the site’s instructions for details on how to authorize the "
 "subscription. Your subscription token is:"
 msgstr ""
+"フォローは承認されましたが、コールバックURLが通過できませんでした。どう"
+"フォローを承認するかに関する詳細のためのサイトの指示をチェックしてください。"
+"あなたのフォロートークンは:"
 
 #: actions/userauthorization.php:259
 msgid "Subscription rejected"
@@ -3874,61 +3937,65 @@ msgid ""
 "with the site’s instructions for details on how to fully reject the "
 "subscription."
 msgstr ""
+"フォローは拒絶されましたが、コールバックURLは全く通過されませんでした。 どう"
+"フォローを完全に拒絶するかに関する詳細のためのサイトの指示をチェックしてくだ"
+"さい。"
 
 #: actions/userauthorization.php:296
 #, php-format
 msgid "Listener URI ‘%s’ not found here"
-msgstr ""
+msgstr "リスナー URI  ‘%s’ はここでは見つかりません"
 
 #: actions/userauthorization.php:301
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
-msgstr ""
+msgstr "リスニー URI  ‘%s’ が長すぎます。"
 
 #: actions/userauthorization.php:307
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
-msgstr ""
+msgstr "リスニー URI  ‘%s’ はローカルユーザーではありません。"
 
 #: actions/userauthorization.php:322
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
-msgstr ""
+msgstr "プロファイル URL  ‘%s’ はローカルユーザーではありません。"
 
 #: actions/userauthorization.php:338
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
-msgstr ""
+msgstr "アバター URL  ‘%s’ が正しくありません。"
 
 #: actions/userauthorization.php:343
-#, fuzzy, php-format
+#, php-format
 msgid "Can’t read avatar URL ‘%s’."
 msgstr "アバターURL を読み取れません '%s'"
 
 #: actions/userauthorization.php:348
-#, fuzzy, php-format
+#, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
-msgstr "不正な画像形式。'%s'"
+msgstr "アバター URL '%s' は不正な画像形式。"
 
 #: actions/userbyid.php:70
-#, fuzzy
 msgid "No ID."
-msgstr "id がありません。"
+msgstr "ID がありません。"
 
 #: actions/userdesignsettings.php:76 lib/designsettings.php:65
-#, fuzzy
 msgid "Profile design"
-msgstr "プロファイル設定"
+msgstr "プロファイルデザイン"
 
 #: actions/userdesignsettings.php:87 lib/designsettings.php:76
 msgid ""
 "Customize the way your profile looks with a background image and a colour "
 "palette of your choice."
 msgstr ""
+"あなたのプロフィールがバックグラウンド画像とあなたの選択の色のパレットで見る"
+"方法をカスタマイズしてください。"
 
 #: actions/userdesignsettings.php:282
+#, fuzzy
 msgid "Enjoy your hotdog!"
-msgstr ""
+msgstr "あなたのhotdogを楽しんでください!"
 
 #: actions/usergroups.php:64
 #, php-format
@@ -3936,19 +4003,18 @@ msgid "%s groups, page %d"
 msgstr "%s グループ, %d ページ"
 
 #: actions/usergroups.php:130
-#, fuzzy
 msgid "Search for more groups"
-msgstr "人々かテキストを検索"
+msgstr "もっとグループを検索"
 
 #: actions/usergroups.php:153
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a member of any group."
-msgstr "そのプロファイルは送信されていません。"
+msgstr "%s はどのグループのメンバーでもありません。"
 
 #: actions/usergroups.php:158
 #, php-format
 msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
-msgstr ""
+msgstr "[グループを探して](%%action.groupsearch%%)それに加入してください。"
 
 #: classes/File.php:137
 #, php-format
@@ -3956,33 +4022,38 @@ msgid ""
 "No file may be larger than %d bytes and the file you sent was %d bytes. Try "
 "to upload a smaller version."
 msgstr ""
+"どんなファイルも %d バイトより大きくてはいけません、そして、あなたが送った"
+"ファイルは %d バイトでした。より小さいバージョンをアップロードするようにして"
+"ください。"
 
 #: classes/File.php:147
 #, php-format
 msgid "A file this large would exceed your user quota of %d bytes."
 msgstr ""
+"これほど大きいファイルはあなたの%dバイトのユーザ割当てを超えているでしょう。"
 
 #: classes/File.php:154
 #, php-format
 msgid "A file this large would exceed your monthly quota of %d bytes."
 msgstr ""
+"これほど大きいファイルはあなたの%dバイトの毎月の割当てを超えているでしょう。"
 
 #: classes/Message.php:45
 msgid "You are banned from sending direct messages."
-msgstr ""
+msgstr "あなたはダイレクトメッセージを送るのが禁止されています。"
 
 #: classes/Message.php:61
 msgid "Could not insert message."
-msgstr ""
+msgstr "メッセージを追加できません。"
 
 #: classes/Message.php:71
 msgid "Could not update message with new URI."
-msgstr ""
+msgstr "新しいURIでメッセージをアップデートできませんでした。"
 
 #: classes/Notice.php:172
 #, php-format
 msgid "DB error inserting hashtag: %s"
-msgstr ""
+msgstr "ハッシュタグ追加 DB エラー: %s"
 
 #: classes/Notice.php:226
 msgid "Problem saving notice. Too long."
@@ -3996,27 +4067,30 @@ msgstr "つぶやきを保存する際に問題が発生しました。不明な
 msgid ""
 "Too many notices too fast; take a breather and post again in a few minutes."
 msgstr ""
+"多すぎるつぶやきが速すぎます; 数分間の休みを取ってから再投稿してください。"
 
 #: classes/Notice.php:241
 msgid ""
 "Too many duplicate messages too quickly; take a breather and post again in a "
 "few minutes."
 msgstr ""
+"多すぎる重複メッセージが速すぎます; 数分間休みを取ってから再度投稿してくださ"
+"い。"
 
 #: classes/Notice.php:247
 msgid "You are banned from posting notices on this site."
-msgstr ""
+msgstr "あなたはこのサイトでつぶやきを投稿するのが禁止されています。"
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "つぶやきを保存する際に問題が発生しました。"
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "返信を追加する際にデータベースエラー : %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4024,17 +4098,15 @@ msgstr ""
 #: classes/User.php:368
 #, php-format
 msgid "Welcome to %1$s, @%2$s!"
-msgstr ""
+msgstr "ようこそ %1$s、@%2$s!"
 
 #: classes/User_group.php:380
-#, fuzzy
 msgid "Could not create group."
-msgstr "ã\82¢ã\83\90ã\82¿ã\83¼ã\82\92ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
 
 #: classes/User_group.php:409
-#, fuzzy
 msgid "Could not set group membership."
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83ªã\83\97ã\82·ã\83§ã\83³ã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\83¡ã\83³ã\83\90ã\83¼ã\82·ã\83\83ã\83\97ã\82\92ã\82»ã\83\83ã\83\88ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82"
 
 #: lib/accountsettingsaction.php:108
 msgid "Change your profile settings"
@@ -4053,9 +4125,8 @@ msgid "Change email handling"
 msgstr "メールの扱いを変更"
 
 #: lib/accountsettingsaction.php:124
-#, fuzzy
 msgid "Design your profile"
-msgstr "ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr "ã\81\82ã\81ªã\81\9fã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\83\87ã\82¶ã\82¤ã\83³"
 
 #: lib/accountsettingsaction.php:128
 msgid "Other"
@@ -4074,131 +4145,128 @@ msgstr ""
 msgid "Untitled page"
 msgstr "名称未設定ページ"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
-msgstr ""
+msgstr "プライマリサイトナビゲーション"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "ホーム"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
-msgstr ""
+msgstr "パーソナルプロファイルと友人のタイムライン"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "アカウント"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "メールアドレス、アバター、パスワード、プロパティの変更"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "接続"
 
-#: lib/action.php:436
-#, fuzzy
+#: lib/action.php:437
 msgid "Connect to services"
-msgstr "ã\82µã\83¼ã\83\90ã\81¸ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81§ã\81\8dã\81¾ã\81\9bã\82\93 : %s"
+msgstr "ã\82µã\83¼ã\83\93ã\82¹ã\81¸æ\8e¥ç¶\9a"
 
-#: lib/action.php:440
-#, fuzzy
+#: lib/action.php:441
 msgid "Change site configuration"
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83ªã\83\97ã\82·ã\83§ã\83³"
+msgstr "ã\82µã\82¤ã\83\88設å®\9aã\81®å¤\89æ\9b´"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "招待"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "友人や同僚が %s で加わるよう誘ってください。"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "ログアウト"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "サイトからログアウト"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "アカウントを作成"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "サイトへログイン"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "ヘルプ"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "助けて!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "検索"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "人々かテキストを検索"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "サイトつぶやき"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "ローカルビュー"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "ページつぶやき"
 
-#: lib/action.php:719
-#, fuzzy
+#: lib/action.php:720
 msgid "Secondary site navigation"
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83ªã\83\97ション"
+msgstr "ã\82»ã\82«ã\83³ã\83\80ã\83ªã\82µã\82¤ã\83\88ã\83\8aã\83\93ã\82²ã\83¼ション"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
-msgstr "解説"
+msgstr "About"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "よくある質問"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "プライバシー"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "ソース"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "連絡先"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "バッジ"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
-msgstr ""
+msgstr "StatusNet ソフトウェアライセンス"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4207,12 +4275,12 @@ msgstr ""
 "**%%site.name%%** は [%%site.broughtby%%](%%site.broughtbyurl%%) が提供するマ"
 "イクロブログサービスです。 "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** はマイクロブログサービスです。 "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4223,67 +4291,61 @@ msgstr ""
 "いています。 ライセンス [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)。"
 
-#: lib/action.php:790
-#, fuzzy
+#: lib/action.php:791
 msgid "Site content license"
-msgstr "新しい通知"
+msgstr "サイト内容ライセンス"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "全て "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "ライセンス。"
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "ページ化"
 
-#: lib/action.php:1107
-#, fuzzy
+#: lib/action.php:1108
 msgid "After"
-msgstr "<< 前"
+msgstr "<<"
 
-#: lib/action.php:1115
-#, fuzzy
+#: lib/action.php:1116
 msgid "Before"
-msgstr "前 >>"
+msgstr "前>>"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
-msgstr ""
+msgstr "あなたのセッショントークンに関する問題がありました。"
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
-msgstr ""
+msgstr "あなたはこのサイトへの変更を行うことができません。"
 
 #: lib/adminpanelaction.php:195
 msgid "showForm() not implemented."
-msgstr ""
+msgstr "showForm() は実装されていません。"
 
 #: lib/adminpanelaction.php:224
 msgid "saveSettings() not implemented."
-msgstr ""
+msgstr "saveSettings() は実装されていません。"
 
 #: lib/adminpanelaction.php:247
 msgid "Unable to delete design setting."
-msgstr ""
+msgstr "デザイン設定を削除できません。"
 
 #: lib/adminpanelaction.php:300
-#, fuzzy
 msgid "Basic site configuration"
-msgstr "メールアドレス確認"
+msgstr "基本サイト設定"
 
 #: lib/adminpanelaction.php:303
-#, fuzzy
 msgid "Design configuration"
-msgstr "ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ç¢ºèª\8d"
+msgstr "ã\83\87ã\82¶ã\82¤ã\83³è¨­å®\9a"
 
 #: lib/adminpanelaction.php:306 lib/adminpanelaction.php:309
-#, fuzzy
 msgid "Paths configuration"
-msgstr "ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ç¢ºèª\8d"
+msgstr "ã\83\91ã\82¹è¨­å®\9a"
 
 #: lib/attachmentlist.php:87
 msgid "Attachments"
@@ -4294,17 +4356,26 @@ msgid "Author"
 msgstr "作者"
 
 #: lib/attachmentlist.php:278
-#, fuzzy
 msgid "Provider"
-msgstr "ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«"
+msgstr "ã\83\97ã\83­ã\83\90ã\82¤ã\83\80"
 
 #: lib/attachmentnoticesection.php:67
 msgid "Notices where this attachment appears"
-msgstr ""
+msgstr "この添付が現れるつぶやき"
 
 #: lib/attachmenttagcloudsection.php:48
 msgid "Tags for this attachment"
-msgstr ""
+msgstr "この添付のタグ"
+
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "パスワード変更"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "パスワード変更"
 
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
@@ -4320,7 +4391,7 @@ msgstr "コマンド失敗"
 
 #: lib/command.php:44
 msgid "Sorry, this command is not yet implemented."
-msgstr ""
+msgstr "すみません、このコマンドはまだ実装されていません。"
 
 #: lib/command.php:88
 #, php-format
@@ -4329,7 +4400,7 @@ msgstr "ユーザを更新できません"
 
 #: lib/command.php:92
 msgid "It does not make a lot of sense to nudge yourself!"
-msgstr ""
+msgstr "それは自分自身への合図で多くは意味がありません!"
 
 #: lib/command.php:99
 #, php-format
@@ -4349,16 +4420,16 @@ msgstr ""
 
 #: lib/command.php:152 lib/command.php:399 lib/command.php:460
 msgid "Notice with that id does not exist"
-msgstr ""
+msgstr "その ID によるつぶやきは存在していません"
 
 #: lib/command.php:168 lib/command.php:415 lib/command.php:476
 #: lib/command.php:532
 msgid "User has no last notice"
-msgstr ""
+msgstr "利用者はまだつぶやいていません"
 
 #: lib/command.php:190
 msgid "Notice marked as fave."
-msgstr ""
+msgstr "お気に入りにされているつぶやき。"
 
 #: lib/command.php:315
 #, php-format
@@ -4383,92 +4454,89 @@ msgstr "ホームページ: %s"
 #: lib/command.php:327
 #, php-format
 msgid "About: %s"
-msgstr ""
+msgstr "About: %s"
 
 #: lib/command.php:358 scripts/xmppdaemon.php:301
 #, php-format
 msgid "Message too long - maximum is %d characters, you sent %d"
-msgstr ""
+msgstr "メッセージが長すぎます - 最大 %d 字、あなたが送ったのは %d"
 
 #: lib/command.php:378
 msgid "Error sending direct message."
-msgstr ""
+msgstr "ダイレクトメッセージ送信エラー。"
 
 #: lib/command.php:422
 msgid "Cannot repeat your own notice"
-msgstr ""
+msgstr "自分のつぶやきを繰り返すことはできません"
 
 #: lib/command.php:427
-#, fuzzy
 msgid "Already repeated that notice"
-msgstr "ã\81\93ã\81®é\80\9aç\9f¥ã\82\92å\89\8aé\99¤"
+msgstr "ã\81\99ã\81§ã\81«ã\81\93ã\81®ã\81¤ã\81¶ã\82\84ã\81\8dã\81¯ç¹°ã\82\8aè¿\94ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99"
 
 #: lib/command.php:435
-#, fuzzy, php-format
+#, php-format
 msgid "Notice from %s repeated"
-msgstr "通知"
+msgstr "%s からつぶやきが繰り返されています"
 
 #: lib/command.php:437
-#, fuzzy
 msgid "Error repeating notice."
-msgstr "通知を保存する際に問題が発生しました。"
+msgstr "つぶやき繰り返しエラー"
 
 #: lib/command.php:491
 #, php-format
 msgid "Notice too long - maximum is %d characters, you sent %d"
-msgstr ""
+msgstr "つぶやきが長すぎます - 最大 %d 字、あなたが送ったのは %d"
 
 #: lib/command.php:500
-#, fuzzy, php-format
+#, php-format
 msgid "Reply to %s sent"
-msgstr "この通知へ返信"
+msgstr "%s へ返信を送りました"
 
 #: lib/command.php:502
-#, fuzzy
 msgid "Error saving notice."
-msgstr "通知を保存する際に問題が発生しました。"
+msgstr "つぶやき保存エラー。"
 
 #: lib/command.php:556
 msgid "Specify the name of the user to subscribe to"
-msgstr ""
+msgstr "フォローする利用者の名前を指定してください"
 
 #: lib/command.php:563
 #, php-format
 msgid "Subscribed to %s"
-msgstr ""
+msgstr "%s をフォローしました"
 
 #: lib/command.php:584
 msgid "Specify the name of the user to unsubscribe from"
-msgstr ""
+msgstr "フォローをやめるユーザの名前を指定してください"
 
 #: lib/command.php:591
 #, php-format
 msgid "Unsubscribed from %s"
-msgstr ""
+msgstr "%s のフォローをやめる"
 
 #: lib/command.php:609 lib/command.php:632
 msgid "Command not yet implemented."
-msgstr ""
+msgstr "コマンドはまだ実装されていません。"
 
 #: lib/command.php:612
 msgid "Notification off."
-msgstr ""
+msgstr "通知オフ。"
 
 #: lib/command.php:614
 msgid "Can't turn off notification."
-msgstr ""
+msgstr "通知をオフできません。"
 
 #: lib/command.php:635
 msgid "Notification on."
-msgstr ""
+msgstr "通知オン。"
 
 #: lib/command.php:637
 msgid "Can't turn on notification."
-msgstr ""
+msgstr "通知をオンできません。"
 
 #: lib/command.php:650
 msgid "Login command is disabled"
-msgstr ""
+msgstr "ログインコマンドが無効になっています。"
 
 #: lib/command.php:664
 #, php-format
@@ -4478,37 +4546,34 @@ msgstr "%s 用のログイン・トークンを作成できませんでした"
 #: lib/command.php:669
 #, php-format
 msgid "This link is useable only once, and is good for only 2 minutes: %s"
-msgstr ""
+msgstr "このリンクは、かつてだけ使用可能であり、2分間だけ良いです: %s"
 
 #: lib/command.php:685
-#, fuzzy
 msgid "You are not subscribed to anyone."
-msgstr "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡されていません。"
+msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81 ã\82\8cã\81«ã\82\82ã\83\95ã\82©ã\83­ã\83¼されていません。"
 
 #: lib/command.php:687
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
-msgstr[0] "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr[0] "ã\81\82ã\81ªã\81\9fã\81¯ã\81\93ã\81®äººã\81«ã\83\95ã\82©ã\83­ã\83¼ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99:"
 
 #: lib/command.php:707
-#, fuzzy
 msgid "No one is subscribed to you."
-msgstr "リモートサブスクライブ"
+msgstr "誰もフォローしていません。"
 
 #: lib/command.php:709
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
-msgstr[0] "ã\83ªã\83¢ã\83¼ã\83\88ã\82µã\83\96ã\82¹ã\82¯ã\83©ã\82¤ã\83\96"
+msgstr[0] "ã\81\93ã\81®äººã\81¯ã\81\82ã\81ªã\81\9fã\81«ã\83\95ã\82©ã\83­ã\83¼ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b:"
 
 #: lib/command.php:729
-#, fuzzy
 msgid "You are not a member of any groups."
-msgstr "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¦ã\81\84ません。"
+msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81©ã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\83¡ã\83³ã\83\90ã\83¼ã\81§ã\82\82ã\81\82ã\82\8aません。"
 
 #: lib/command.php:731
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
-msgstr[0] "ã\81\9dã\81®ã\83\97ã\83­ã\83\95ã\82¡ã\82¤ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82"
+msgstr[0] "ã\81\82ã\81ªã\81\9fã\81¯ã\81\93ã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\83¡ã\83³ã\83\90ã\83¼ã\81§ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93:"
 
 #: lib/command.php:745
 msgid ""
@@ -4552,57 +4617,57 @@ msgid ""
 msgstr ""
 
 #: lib/common.php:199
-#, fuzzy
 msgid "No configuration file found. "
-msgstr "確認コードがありません。"
+msgstr "コンフィギュレーションファイルがありません。 "
 
 #: lib/common.php:200
 msgid "I looked for configuration files in the following places: "
-msgstr ""
+msgstr "私は以下の場所でコンフィギュレーションファイルを探しました: "
 
 #: lib/common.php:201
 msgid "You may wish to run the installer to fix this."
 msgstr ""
+"あなたは、これを修理するためにインストーラを動かしたがっているかもしれませ"
+"ん。"
 
 #: lib/common.php:202
-#, fuzzy
 msgid "Go to the installer."
-msgstr "ã\82µã\82¤ã\83\88ã\81¸ã\83­ã\82°ã\82¤ã\83³"
+msgstr "ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83©ã\81¸ã\80\82"
 
 #: lib/connectsettingsaction.php:110
 msgid "IM"
-msgstr ""
+msgstr "IM"
 
 #: lib/connectsettingsaction.php:111
 msgid "Updates by instant messenger (IM)"
-msgstr ""
+msgstr "インスタントメッセンジャー(IM)での更新"
 
 #: lib/connectsettingsaction.php:116
 msgid "Updates by SMS"
-msgstr ""
+msgstr "SMSでの更新"
 
 #: lib/dberroraction.php:60
 msgid "Database error"
-msgstr ""
+msgstr "データベースエラー"
 
 #: lib/designsettings.php:105
-#, fuzzy
 msgid "Upload file"
-msgstr "アップロード"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89"
 
 #: lib/designsettings.php:109
-#, fuzzy
 msgid ""
 "You can upload your personal background image. The maximum file size is 2MB."
-msgstr "長すぎます。通知は最大 140 字までです。"
+msgstr ""
+"自分のバックグラウンド画像をアップロードできます。最大ファイルサイズは 2MB で"
+"す。"
 
 #: lib/designsettings.php:418
 msgid "Design defaults restored."
-msgstr ""
+msgstr "デフォルトのデザインを回復。"
 
 #: lib/disfavorform.php:114 lib/disfavorform.php:140
 msgid "Disfavor this notice"
-msgstr ""
+msgstr "このつぶやきのお気に入りをやめる"
 
 #: lib/favorform.php:114 lib/favorform.php:140
 msgid "Favor this notice"
@@ -4610,23 +4675,23 @@ msgstr "このつぶやきをお気に入りにする"
 
 #: lib/favorform.php:140
 msgid "Favor"
-msgstr ""
+msgstr "お気に入り"
 
 #: 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"
@@ -4638,11 +4703,11 @@ msgstr "タグのフィルター"
 
 #: lib/galleryaction.php:131
 msgid "All"
-msgstr ""
+msgstr "全て"
 
 #: lib/galleryaction.php:139
 msgid "Select tag to filter"
-msgstr ""
+msgstr "フィルターにかけるタグを選択"
 
 #: lib/galleryaction.php:140
 msgid "Tag"
@@ -4650,7 +4715,7 @@ msgstr "タグ"
 
 #: lib/galleryaction.php:141
 msgid "Choose a tag to narrow list"
-msgstr ""
+msgstr "タグを選んで、リストを狭くしてください"
 
 #: lib/galleryaction.php:143
 msgid "Go"
@@ -4661,43 +4726,40 @@ msgid "URL of the homepage or blog of the group or topic"
 msgstr "グループやトピックのホームページやブログの URL"
 
 #: lib/groupeditform.php:168
-#, fuzzy
 msgid "Describe the group or topic"
-msgstr "グループやトピックを140字以内記述"
+msgstr "グループやトピックを記述"
 
 #: lib/groupeditform.php:170
-#, fuzzy, php-format
+#, php-format
 msgid "Describe the group or topic in %d characters"
-msgstr "グループやトピックを140字以内記述"
+msgstr "グループやトピックを %d 字以内記述"
 
 #: lib/groupeditform.php:172
 msgid "Description"
 msgstr "概要"
 
 #: lib/groupeditform.php:179
-#, fuzzy
 msgid ""
 "Location for the group, if any, like \"City, State (or Region), Country\""
-msgstr "ã\81\84ã\82\8bå ´æ\89\80, ä¾\8bã\81\88ã\81° \"City, State (or Region), Country\""
+msgstr "ã\82°ã\83«ã\83¼ã\83\97ã\81®å ´æ\89\80, ä¾\8bã\81\88ã\81° \"é\83½å¸\82, é\83½é\81\93åº\9cç\9c\8c (ã\81¾ã\81\9fã\81¯ å\9c°å\9f\9f), å\9b½\""
 
 #: lib/groupeditform.php:187
 #, php-format
 msgid "Extra nicknames for the group, comma- or space- separated, max %d"
-msgstr ""
+msgstr "グループのエクストラニックネーム、カンマまたはスペース区切り、最大 %d"
 
 #: lib/groupnav.php:85
 msgid "Group"
 msgstr "グループ"
 
 #: lib/groupnav.php:101
-#, fuzzy
 msgid "Blocked"
 msgstr "ブロック"
 
 #: lib/groupnav.php:102
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked users"
-msgstr "そのようなユーザはいません。"
+msgstr "%s ブロック利用者"
 
 #: lib/groupnav.php:108
 #, php-format
@@ -4714,9 +4776,9 @@ msgid "Add or edit %s logo"
 msgstr "%s ロゴの追加や編集"
 
 #: lib/groupnav.php:120
-#, fuzzy, php-format
+#, php-format
 msgid "Add or edit %s design"
-msgstr "%s ã\83­ã\82´の追加や編集"
+msgstr "%s ã\83\87ã\82¶ã\82¤ã\83³の追加や編集"
 
 #: lib/groupsbymemberssection.php:71
 msgid "Groups with most members"
@@ -4736,9 +4798,9 @@ msgid "This page is not available in a media type you accept"
 msgstr "このページはあなたが承認したメディアタイプでは利用できません。"
 
 #: lib/imagefile.php:75
-#, fuzzy, php-format
+#, php-format
 msgid "That file is too big. The maximum file size is %s."
-msgstr "長すぎます。通知は最大 140 字までです。"
+msgstr "ファイルが大きすぎます。最大ファイルサイズは %s 。"
 
 #: lib/imagefile.php:80
 msgid "Partial upload."
@@ -4757,21 +4819,20 @@ msgid "Unsupported image file format."
 msgstr "サポート外の画像形式です。"
 
 #: lib/imagefile.php:118
-#, fuzzy
 msgid "Lost our file."
-msgstr "ã\81\9dã\81®ã\82\88ã\81\86ã\81ªé\80\9aç\9f¥ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93。"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ç´\9b失。"
 
 #: lib/imagefile.php:150 lib/imagefile.php:197
 msgid "Unknown file type"
-msgstr ""
+msgstr "不明なファイルタイプ"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "MB"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "kB"
 
 #: lib/jabber.php:191
 #, php-format
@@ -4814,11 +4875,23 @@ msgid ""
 "Thanks for your time, \n"
 "%s\n"
 msgstr ""
+"こんにちは、%s\n"
+"\n"
+"だれかがこのメールアドレスを %s に入力しました。\n"
+"\n"
+"もしエントリーを確認したいなら、以下のURLを使用してください:\n"
+"\n"
+"%s\n"
+"\n"
+"もしそうでなければ、このメッセージを無視してください。\n"
+"\n"
+"ありがとうございます。\n"
+"%s\n"
 
 #: lib/mail.php:236
 #, php-format
 msgid "%1$s is now listening to your notices on %2$s."
-msgstr "%1$s は %2$s であなたの通知を購読しています。"
+msgstr "%1$s は %2$s であなたのつぶやきを聞いています。"
 
 #: lib/mail.php:241
 #, fuzzy, php-format
@@ -4834,12 +4907,16 @@ msgid ""
 "----\n"
 "Change your email address or notification options at %8$s\n"
 msgstr ""
-"%1$s は %2$s であなたの通知を聞いています。\n"
+"%1$s は %2$s であなたのつぶやきを聞いています。\n"
 "\n"
-"\t%3$s\n"
+"%3$s\n"
+"\n"
+"%4$s%5$s%6$s\n"
+"忠実である、あなたのもの、\n"
+"%7$s.\n"
 "\n"
-"確かにあなたの,\n"
-"%4$s.\n"
+"----\n"
+"%8$s でメールアドレスか通知オプションを変えてください。\n"
 
 #: lib/mail.php:254
 #, php-format
@@ -4857,14 +4934,16 @@ msgid ""
 "Bio: %s\n"
 "\n"
 msgstr ""
+"自己紹介: %s\n"
+"\n"
 
 #: lib/mail.php:286
 #, php-format
 msgid "New email address for posting to %s"
-msgstr ""
+msgstr "%s へ投稿のための新しいメールアドレス"
 
 #: lib/mail.php:289
-#, php-format
+#, fuzzy, php-format
 msgid ""
 "You have a new posting address on %1$s.\n"
 "\n"
@@ -4875,6 +4954,14 @@ msgid ""
 "Faithfully yours,\n"
 "%4$s"
 msgstr ""
+"あなたは %1$s に関する新しい投稿アドレスを持っています。\n"
+"\n"
+"%2$s にメールを送って、新しいメッセージを投稿してください。\n"
+"\n"
+"%3$s でより多くのメール指示。\n"
+"\n"
+"忠実である、あなたのもの、\n"
+"%4$s"
 
 #: lib/mail.php:413
 #, php-format
@@ -4883,15 +4970,15 @@ msgstr "%s の状態"
 
 #: lib/mail.php:439
 msgid "SMS confirmation"
-msgstr ""
+msgstr "SMS確認"
 
 #: lib/mail.php:463
 #, php-format
 msgid "You've been nudged by %s"
-msgstr "あなたは %s に突かれています"
+msgstr "あなたは %s に合図されています"
 
 #: lib/mail.php:467
-#, php-format
+#, fuzzy, php-format
 msgid ""
 "%1$s (%2$s) is wondering what you are up to these days and is inviting you "
 "to post some news.\n"
@@ -4905,14 +4992,25 @@ msgid ""
 "With kind regards,\n"
 "%4$s\n"
 msgstr ""
+"%1$s ($2$s) は、最近まであなたが何であるかと思っていて、あなたが何らかの"
+"ニュースを投稿するよう誘っています。\n"
+"\n"
+"それで、あなたから、連絡をいただきましょう :)\n"
+"\n"
+"%3$s\n"
+"\n"
+"このメールに答えないでください。 それはそれらを始めないでしょう。\n"
+"\n"
+"敬具\n"
+"%4$s\n"
 
 #: lib/mail.php:510
 #, php-format
 msgid "New private message from %s"
-msgstr ""
+msgstr "%s からの新しいプライベートメッセージ"
 
 #: lib/mail.php:514
-#, php-format
+#, fuzzy, php-format
 msgid ""
 "%1$s (%2$s) sent you a private message:\n"
 "\n"
@@ -4929,14 +5027,28 @@ msgid ""
 "With kind regards,\n"
 "%5$s\n"
 msgstr ""
+"%1$s (%2$s) はあなたにプライベートメッセージを送りました:\n"
+"\n"
+"------------------------------------------------------\n"
+"%3$s\n"
+"------------------------------------------------------\n"
+"\n"
+"あなたはここでそれらのメッセージに答えることができます:\n"
+"\n"
+"%4$s\n"
+"\n"
+"このメールに答えないでください。 それはそれらを始めないでしょう。\n"
+"\n"
+"敬具\n"
+"%5$s\n"
 
 #: lib/mail.php:559
-#, fuzzy, php-format
+#, php-format
 msgid "%s (@%s) added your notice as a favorite"
-msgstr "%1$s は %2$s であなたの通知を聞いています。"
+msgstr "%s (@%s) はお気に入りとしてあなたのつぶやきを加えました"
 
 #: lib/mail.php:561
-#, php-format
+#, fuzzy, php-format
 msgid ""
 "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n"
 "\n"
@@ -4955,11 +5067,28 @@ msgid ""
 "Faithfully yours,\n"
 "%6$s\n"
 msgstr ""
+"%1$s (@%7$s) は彼らのお気に入りのひとりとして %2$s からあなたのつぶやきを加え"
+"ました。\n"
+"\n"
+"あなたのつぶやきのURL:\n"
+"\n"
+"%3$s\n"
+"\n"
+"あなたのつぶやきのテキスト:\n"
+"\n"
+"%4$s\n"
+"\n"
+"あなたはここで %1$s のお気に入りのリストを見ることができます:\n"
+"\n"
+"%5$s\n"
+"\n"
+"忠実である、あなたのもの、\n"
+"%6%s\n"
 
 #: 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
@@ -4975,73 +5104,91 @@ 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."
-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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
-msgstr "から "
+msgstr "from"
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
 msgstr ""
+"データベースエラーがあなたのファイルを保存しているときにありました。 再試行し"
+"てください。"
 
 #: lib/mediafile.php:142
 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
 msgstr ""
+"アップロードされたファイルは php.ini の upload_max_filesize ディレクティブを"
+"超えています。"
 
 #: lib/mediafile.php:147
 msgid ""
 "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
 "the HTML form."
 msgstr ""
+"アップロードされたファイルはHTMLフォームで指定された MAX_FILE_SIZE ディレク"
+"ティブを超えています。"
 
 #: lib/mediafile.php:152
 msgid "The uploaded file was only partially uploaded."
-msgstr ""
+msgstr "アップロードされたファイルは部分的にアップロードされていただけです。"
 
 #: lib/mediafile.php:159
 msgid "Missing a temporary folder."
-msgstr ""
+msgstr "一時フォルダを失いました。"
 
 #: lib/mediafile.php:162
 msgid "Failed to write file to disk."
-msgstr ""
+msgstr "ディスクへのファイル書き込みに失敗しました。"
 
 #: lib/mediafile.php:165
 msgid "File upload stopped by extension."
-msgstr ""
+msgstr "エクステンションによってファイルアップロードを中止しました。"
 
 #: lib/mediafile.php:179 lib/mediafile.php:216
 msgid "File exceeds user's quota!"
-msgstr ""
+msgstr "ファイルはユーザの割当てを超えています!"
 
 #: lib/mediafile.php:196 lib/mediafile.php:233
 msgid "File could not be moved to destination directory."
-msgstr ""
+msgstr "ファイルを目的ディレクトリに動かすことができませんでした。"
 
 #: lib/mediafile.php:201 lib/mediafile.php:237
-#, fuzzy
 msgid "Could not determine file's mime-type!"
-msgstr "ã\83¦ã\83¼ã\82¶ã\82\92æ\9b´æ\96°できません"
+msgstr "ã\83\95ã\82¡ã\82¤ã\83«ã\81®MIMEã\82¿ã\82¤ã\83\97ã\82\92決å®\9aできません"
 
 #: lib/mediafile.php:270
 #, php-format
 msgid " Try using another %s format."
-msgstr ""
+msgstr "別の %s フォーマットを試してください。"
 
 #: lib/mediafile.php:275
 #, php-format
 msgid "%s is not a supported filetype on this server."
-msgstr ""
+msgstr "%s はこのサーバのサポートしているファイルタイプではありません。"
 
 #: lib/messageform.php:120
 msgid "Send a direct notice"
@@ -5049,88 +5196,93 @@ msgstr "直接つぶやきを送る"
 
 #: lib/messageform.php:146
 msgid "To"
-msgstr ""
+msgstr "To"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "利用可能な文字"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "つぶやきを送る"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "最近どう %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
-msgstr ""
+msgstr "添付"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
-msgstr ""
+msgstr "ファイル添付"
+
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "あなたの場所を共有"
 
-#: lib/noticelist.php:420
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
+#, fuzzy
 msgid "N"
-msgstr ""
+msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
+#, fuzzy
 msgid "S"
-msgstr ""
+msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
+#, fuzzy
 msgid "E"
-msgstr ""
+msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
+#, fuzzy
 msgid "W"
-msgstr ""
+msgstr "西"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
-msgstr ""
+msgstr "at"
 
-#: lib/noticelist.php:523
-#, fuzzy
+#: lib/noticelist.php:531
 msgid "in context"
-msgstr "コンテンツがありません!"
+msgstr ""
 
-#: lib/noticelist.php:548
-#, fuzzy
+#: lib/noticelist.php:556
 msgid "Repeated by"
-msgstr "作成"
+msgstr ""
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "このつぶやきへ返信"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "返信"
 
-#: lib/noticelist.php:620
-#, fuzzy
+#: lib/noticelist.php:628
 msgid "Notice repeated"
-msgstr "通知"
+msgstr "つぶやきを繰り返しました"
 
 #: lib/nudgeform.php:116
 msgid "Nudge this user"
-msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\82\92çª\81ã\81\8f"
+msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\81¸å\90\88å\9b³"
 
 #: lib/nudgeform.php:128
 msgid "Nudge"
-msgstr "突く"
+msgstr "合図"
 
 #: lib/nudgeform.php:128
 msgid "Send a nudge to this user"
-msgstr "このユーザへ突きを送る"
+msgstr "このユーザへ合図を送る"
 
 #: lib/oauthstore.php:283
 msgid "Error inserting new profile"
@@ -5146,11 +5298,11 @@ msgstr "リモートプロファイル追加エラー"
 
 #: lib/oauthstore.php:345
 msgid "Duplicate notice"
-msgstr "重なったつぶやき"
+msgstr "重複したつぶやき"
 
 #: lib/oauthstore.php:466 lib/subs.php:48
 msgid "You have been banned from subscribing."
-msgstr ""
+msgstr "あなたはフォローが禁止されました。"
 
 #: lib/oauthstore.php:491
 msgid "Couldn't insert new subscription."
@@ -5166,28 +5318,28 @@ msgstr "返信"
 
 #: lib/personalgroupnav.php:114
 msgid "Favorites"
-msgstr ""
+msgstr "お気に入り"
 
 #: lib/personalgroupnav.php:124
 msgid "Inbox"
-msgstr ""
+msgstr "受信箱"
 
 #: lib/personalgroupnav.php:125
 msgid "Your incoming messages"
-msgstr ""
+msgstr "あなたの入ってくるメッセージ"
 
 #: lib/personalgroupnav.php:129
 msgid "Outbox"
-msgstr ""
+msgstr "送信箱"
 
 #: lib/personalgroupnav.php:130
 msgid "Your sent messages"
-msgstr ""
+msgstr "あなたが送ったメッセージ"
 
 #: lib/personaltagcloudsection.php:56
 #, php-format
 msgid "Tags in %s's notices"
-msgstr ""
+msgstr "%s のつぶやきのタグ"
 
 #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
 msgid "Subscriptions"
@@ -5207,7 +5359,7 @@ msgstr "すべてのフォローされている"
 
 #: lib/profileaction.php:178
 msgid "User ID"
-msgstr ""
+msgstr "利用者ID"
 
 #: lib/profileaction.php:183
 msgid "Member since"
@@ -5215,16 +5367,15 @@ msgstr "からのメンバー"
 
 #: lib/profileaction.php:245
 msgid "All groups"
-msgstr ""
+msgstr "全てのグループ"
 
 #: lib/profileformaction.php:123
-#, fuzzy
 msgid "No return-to arguments."
-msgstr "そのようなドキュメントはありません。"
+msgstr "return-to 引数がありません。"
 
 #: lib/profileformaction.php:137
 msgid "Unimplemented method."
-msgstr ""
+msgstr "未実装のメソッド。"
 
 #: lib/publicgroupnav.php:78
 msgid "Public"
@@ -5240,56 +5391,51 @@ msgstr "最近のタグ"
 
 #: lib/publicgroupnav.php:88
 msgid "Featured"
-msgstr ""
+msgstr "フィーチャーされた"
 
 #: lib/publicgroupnav.php:92
 msgid "Popular"
 msgstr "人気"
 
 #: lib/repeatform.php:107
-#, fuzzy
 msgid "Repeat this notice?"
-msgstr "この通知へ返信"
+msgstr "このつぶやきを繰り返しますか?"
 
 #: lib/repeatform.php:132
-#, fuzzy
 msgid "Repeat this notice"
-msgstr "この通知へ返信"
+msgstr "このつぶやきを繰り返す"
 
 #: lib/sandboxform.php:67
 msgid "Sandbox"
-msgstr ""
+msgstr "サンドボックス"
 
 #: lib/sandboxform.php:78
-#, fuzzy
 msgid "Sandbox this user"
-msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\82\92ã\82¢ã\83³ã\83\96ã\83­ã\83\83ã\82¯ã\81\99ã\82\8b"
+msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\82\92ã\82µã\83³ã\83\89ã\83\9cã\83\83ã\82¯ã\82¹"
 
 #: lib/searchaction.php:120
-#, fuzzy
 msgid "Search site"
-msgstr "検索"
+msgstr "サイト検索"
 
 #: lib/searchaction.php:126
 msgid "Keyword(s)"
-msgstr ""
+msgstr "キーワード"
 
 #: lib/searchaction.php:162
-#, fuzzy
 msgid "Search help"
-msgstr "検索"
+msgstr "ヘルプ検索"
 
 #: lib/searchgroupnav.php:80
 msgid "People"
-msgstr ""
+msgstr "人々"
 
 #: lib/searchgroupnav.php:81
 msgid "Find people on this site"
-msgstr ""
+msgstr "このサイトの人々を探す"
 
 #: lib/searchgroupnav.php:83
 msgid "Find content of notices"
-msgstr ""
+msgstr "つぶやきの内容を探す"
 
 #: lib/searchgroupnav.php:85
 msgid "Find groups on this site"
@@ -5301,73 +5447,68 @@ msgstr "名称未設定のセクション"
 
 #: lib/section.php:106
 msgid "More..."
-msgstr ""
+msgstr "さらに..."
 
 #: lib/silenceform.php:67
-#, fuzzy
 msgid "Silence"
-msgstr "新しい通知"
+msgstr "サイレンス"
 
 #: lib/silenceform.php:78
-#, fuzzy
 msgid "Silence this user"
-msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\82\92ã\83\96ã\83­ã\83\83ã\82¯ã\81\99ã\82\8b"
+msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\82\92ã\82µã\82¤ã\83¬ã\83³ã\82¹ã\81«"
 
 #: lib/subgroupnav.php:83
-#, fuzzy, php-format
+#, 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 "リモートサブスクライブ"
+msgstr "人々は %s をフォローしました。"
 
 #: lib/subgroupnav.php:99
 #, php-format
 msgid "Groups %s is a member of"
-msgstr ""
+msgstr "グループ %s はメンバー"
 
 #: lib/subs.php:52
 msgid "Already subscribed!"
-msgstr ""
+msgstr "すでにフォローしています!"
 
 #: lib/subs.php:56
-#, fuzzy
 msgid "User has blocked you."
-msgstr "プロファイルがありません。"
+msgstr "利用者はあなたをブロックしました。"
 
 #: lib/subs.php:60
 msgid "Could not subscribe."
-msgstr ""
+msgstr "フォローできません。"
 
 #: lib/subs.php:79
 msgid "Could not subscribe other to you."
-msgstr ""
+msgstr "他の人があなたをフォローできません。"
 
 #: lib/subs.php:128
-#, fuzzy
 msgid "Not subscribed!"
-msgstr "購読していません!"
+msgstr "フォローしていません!"
 
 #: lib/subs.php:133
-#, fuzzy
 msgid "Couldn't delete self-subscription."
-msgstr "サブスクリプションを削除できません"
+msgstr "自己フォローを削除できません。"
 
 #: lib/subs.php:146
 msgid "Couldn't delete subscription."
-msgstr "ã\82µã\83\96ã\82¹ã\82¯ã\83ªã\83\97ã\82·ã\83§ã\83³を削除できません"
+msgstr "ã\83\95ã\82©ã\83­ã\83¼を削除できません"
 
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
-msgstr ""
+msgstr "自己タグづけとしての人々タグクラウド"
 
 #: lib/subscriberspeopletagcloudsection.php:48
 #: lib/subscriptionspeopletagcloudsection.php:48
 msgid "People Tagcloud as tagged"
-msgstr ""
+msgstr "タグ付けとしての人々タグクラウド"
 
 #: lib/subscriptionlist.php:126
 msgid "(none)"
@@ -5375,7 +5516,7 @@ msgstr "(なし)"
 
 #: lib/tagcloudsection.php:56
 msgid "None"
-msgstr ""
+msgstr "なし"
 
 #: lib/topposterssection.php:74
 msgid "Top posters"
@@ -5383,59 +5524,56 @@ msgstr "上位投稿者"
 
 #: lib/unsandboxform.php:69
 msgid "Unsandbox"
-msgstr ""
+msgstr "アンサンドボックス"
 
 #: lib/unsandboxform.php:80
-#, fuzzy
 msgid "Unsandbox this user"
-msgstr "このユーザをアンブロックする"
+msgstr "この利用者をアンサンドボックス"
 
 #: lib/unsilenceform.php:67
 msgid "Unsilence"
-msgstr ""
+msgstr "アンサイレンス"
 
 #: lib/unsilenceform.php:78
-#, fuzzy
 msgid "Unsilence this user"
-msgstr "このユーザをアンブロックする"
+msgstr "この利用者をアンサイレンス"
 
 #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
 msgid "Unsubscribe from this user"
-msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\81\8bã\82\89ã\81®ã\82µã\83\96ã\82¹ã\82¯ã\83©ã\82¤ã\83\96を解除する"
+msgstr "ã\81\93ã\81®ã\83¦ã\83¼ã\82¶ã\81\8bã\82\89ã\81®ã\83\95ã\82©ã\83­ã\83¼を解除する"
 
 #: lib/unsubscribeform.php:137
 msgid "Unsubscribe"
-msgstr "フォロー中止"
+msgstr "フォロー解除"
 
 #: lib/userprofile.php:116
-#, fuzzy
 msgid "Edit Avatar"
-msgstr "アバター"
+msgstr "アバターを編集する"
 
 #: lib/userprofile.php:236
 msgid "User actions"
-msgstr ""
+msgstr "利用者アクション"
 
 #: lib/userprofile.php:248
-#, fuzzy
 msgid "Edit profile settings"
-msgstr "プロファイル設定"
+msgstr "プロファイル設定編集"
 
 #: lib/userprofile.php:249
 msgid "Edit"
-msgstr ""
+msgstr "編集"
 
 #: lib/userprofile.php:272
 msgid "Send a direct message to this user"
-msgstr ""
+msgstr "この利用者にダイレクトメッセージを送る"
 
 #: lib/userprofile.php:273
 msgid "Message"
-msgstr ""
+msgstr "メッセージ"
 
 #: lib/userprofile.php:311
+#, fuzzy
 msgid "Moderate"
-msgstr ""
+msgstr "司会"
 
 #: lib/util.php:837
 msgid "a few seconds ago"
@@ -5482,27 +5620,27 @@ msgid "about a year ago"
 msgstr "約 1 年前"
 
 #: lib/webcolor.php:82
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a valid color!"
-msgstr "ホームページのURLが不適切です。"
+msgstr "%sは有効な色ではありません!"
 
 #: lib/webcolor.php:123
 #, php-format
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
-msgstr ""
+msgstr "%s は有効な色ではありません! 3か6の16進数を使ってください。"
 
 #: scripts/maildaemon.php:48
 msgid "Could not parse message."
-msgstr ""
+msgstr "メッセージを分析できませんでした。"
 
 #: scripts/maildaemon.php:53
 msgid "Not a registered user."
-msgstr ""
+msgstr "登録ユーザではありません。"
 
 #: scripts/maildaemon.php:57
 msgid "Sorry, that is not your incoming email address."
-msgstr ""
+msgstr "すみません、それはあなたの入って来るメールアドレスではありません。"
 
 #: scripts/maildaemon.php:61
 msgid "Sorry, no incoming email allowed."
-msgstr ""
+msgstr "すみません、入ってくるメールは許可されていません。"
index eb7cdfb3c361608a8fa57e3f2c51e69aabd196ae..e90f2d3385beeead93194ed3e5ccbb45523054c2 100644 (file)
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:45+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:54+0000\n"
 "Language-Team: Korean\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ko\n"
 "X-Message-Group: out-statusnet\n"
@@ -193,11 +193,11 @@ msgstr "사용자를 업데이트 할 수 없습니다."
 msgid "You cannot block yourself!"
 msgstr "사용자를 업데이트 할 수 없습니다."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "사용자 차단에 실패했습니다."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "사용자 차단 해제에 실패했습니다."
 
@@ -314,7 +314,7 @@ msgid "Could not find target user."
 msgstr "어떠한 상태도 찾을 수 없습니다."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -322,25 +322,25 @@ msgstr ""
 "다."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "별명이 이미 사용중 입니다. 다른 별명을 시도해 보십시오."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "유효한 별명이 아닙니다"
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "홈페이지 주소형식이 올바르지 않습니다."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "실명이 너무 깁니다. (최대 255글자)"
@@ -351,7 +351,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "설명이 너무 길어요. (최대 140글자)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "위치가 너무 깁니다. (최대 255글자)"
@@ -472,7 +472,7 @@ msgstr "너무 깁니다. 통지의 최대 길이는 140글자 입니다."
 msgid "Not found"
 msgstr "찾지 못함"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -603,7 +603,7 @@ msgid "Preview"
 msgstr "미리보기"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "삭제"
 
@@ -616,13 +616,13 @@ msgid "Crop"
 msgstr "자르기"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -695,7 +695,7 @@ msgstr "네, 맞습니다."
 msgid "Block this user"
 msgstr "이 사용자 차단하기"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "정보차단을 저장하는데 실패했습니다."
 
@@ -770,7 +770,7 @@ msgstr "그 주소는 이미 승인되었습니다."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "사용자를 업데이트 할 수 없습니다."
@@ -834,7 +834,7 @@ msgstr "정말로 통지를 삭제하시겠습니까?"
 msgid "Do not delete this notice"
 msgstr "이 통지를 지울 수 없습니다."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "이 게시글 삭제하기"
 
@@ -983,7 +983,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1493,7 +1493,7 @@ msgstr "%s 그룹 회원, %d페이지"
 msgid "A list of the users in this group."
 msgstr "이 그룹의 회원리스트"
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "관리자"
 
@@ -1586,7 +1586,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "회원이 당신을 차단해왔습니다."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "차단 제거 에러!"
 
@@ -1767,7 +1767,7 @@ msgstr "개인적인 메시지"
 msgid "Optionally add a personal message to the invitation."
 msgstr "초대장에 메시지 첨부하기."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "보내기"
 
@@ -1886,7 +1886,7 @@ msgstr "틀린 계정 또는 비밀 번호"
 msgid "Error setting user. You are probably not authorized."
 msgstr "인증이 되지 않았습니다."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "로그인"
@@ -1999,7 +1999,7 @@ msgstr "메시지"
 msgid "Direct message to %s sent"
 msgstr "%s에게 보낸 직접 메시지"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax 에러입니다."
 
@@ -2007,7 +2007,7 @@ msgstr "Ajax 에러입니다."
 msgid "New notice"
 msgstr "새로운 통지"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "게시글이 등록되었습니다."
 
@@ -2444,69 +2444,78 @@ msgstr "위치"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "당신은 어디에 삽니까? \"시, 도 (or 군,구), 나라"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "태그"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr "당신을 위한 태그, (문자,숫자,-, ., _로 구성) 콤마 혹은 공백으로 구분."
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "언어"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "언어 설정"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "타임존"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "당신이 주로 생활하는 곳이 어떤 타임존입니까?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr "나에게 구독하는 사람에게 자동 구독 신청"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "자기소개가 너무 깁니다. (최대 140글자)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "타임존이 설정 되지 않았습니다."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "언어가 너무 깁니다. (최대 50글자)"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "유효하지 않은태그: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "자동구독에 사용자를 업데이트 할 수 없습니다."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "태그를 저장할 수 없습니다."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "프로필을 저장 할 수 없습니다."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "태그를 저장할 수 없습니다."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "설정 저장"
 
@@ -2604,7 +2613,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "태그 클라우드"
 
@@ -2742,7 +2751,7 @@ msgstr "확인 코드 오류"
 msgid "Registration successful"
 msgstr "회원 가입이 성공적입니다."
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "회원가입"
@@ -2936,7 +2945,7 @@ msgstr "라이선스에 동의하지 않는다면 등록할 수 없습니다."
 msgid "You already repeated that notice."
 msgstr "당신은 이미 이 사용자를 차단하고 있습니다."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "생성"
@@ -4071,16 +4080,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "이 사이트에 게시글 포스팅으로부터 당신은 금지되었습니다."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "통지를 저장하는데 문제가 발생했습니다."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "답신을 추가 할 때에 데이타베이스 에러 : %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4136,131 +4145,131 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "제목없는 페이지"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "주 사이트 네비게이션"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "홈"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "개인 프로필과 친구 타임라인"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "계정"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "당신의 이메일, 아바타, 비밀 번호, 프로필을 변경하세요."
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "연결"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "서버에 재접속 할 수 없습니다 : %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "주 사이트 네비게이션"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "초대"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "%s에 친구를 가입시키기 위해 친구와 동료를 초대합니다."
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "로그아웃"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "이 사이트로부터 로그아웃"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "계정 만들기"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "이 사이트 로그인"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "도움말"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "도움이 필요해!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "검색"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "프로필이나 텍스트 검색"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "사이트 공지"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "로컬 뷰"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "페이지 공지"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "보조 사이트 네비게이션"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "정보"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "자주 묻는 질문"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "개인정보 취급방침"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "소스 코드"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "연락하기"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "찔러 보기"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "라코니카 소프트웨어 라이선스"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4269,12 +4278,12 @@ msgstr ""
 "**%%site.name%%** 는 [%%site.broughtby%%](%%site.broughtbyurl%%)가 제공하는 "
 "마이크로블로깅서비스입니다."
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** 는 마이크로블로깅서비스입니다."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4285,32 +4294,32 @@ msgstr ""
 "을 사용합니다. StatusNet는 [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html) 라이선스에 따라 사용할 수 있습니다."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "라코니카 소프트웨어 라이선스"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "모든 것"
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "라이선스"
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "페이지수"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "뒷 페이지"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "앞 페이지"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "당신의 세션토큰관련 문제가 있습니다."
 
@@ -4370,6 +4379,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "비밀번호 변경"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "비밀번호 변경"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "실행결과"
@@ -5049,7 +5068,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr "다음에서:"
@@ -5114,72 +5133,76 @@ msgstr "직접 메시지 보내기"
 msgid "To"
 msgstr "에게"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "사용 가능한 글자"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "게시글 보내기"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "뭐하세요? %?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "아니오"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "내용이 없습니다!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "생성"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "이 게시글에 대해 답장하기"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "답장하기"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "게시글이 등록되었습니다."
index 96f199c79525b1f0fe31a579539e538bf095a3e6..bd346776c8bd00651d5430453d7fa84ba43857c3 100644 (file)
@@ -1,6 +1,7 @@
 # Translation of StatusNet to Macedonian
 #
 # Author@translatewiki.net: Bjankuloski06
+# Author@translatewiki.net: Brest
 # --
 # This file is distributed under the same license as the StatusNet package.
 #
@@ -8,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:48+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:11:58+0000\n"
 "Language-Team: Macedonian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: mk\n"
 "X-Message-Group: out-statusnet\n"
@@ -60,22 +61,22 @@ msgstr "%s и пријателите, страница %d"
 #: lib/personalgroupnav.php:100
 #, php-format
 msgid "%s and friends"
-msgstr "%s и пријателите"
+msgstr "%s и пријатели"
 
 #: actions/all.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for friends of %s (RSS 1.0)"
-msgstr "Канал со пријатели на %S"
+msgstr "Канал со пријатели на %s (RSS 1.0)"
 
 #: actions/all.php:107
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for friends of %s (RSS 2.0)"
-msgstr "Канал со пријатели на %S"
+msgstr "Канал со пријатели на %s (RSS 2.0)"
 
 #: actions/all.php:115
 #, php-format
 msgid "Feed for friends of %s (Atom)"
-msgstr "Ð\95миÑ\82Ñ\83ваÑ\9aе за пријатели на %S (Atom)"
+msgstr "Ð\9aанал за пријатели на %S (Atom)"
 
 #: actions/all.php:127
 #, php-format
@@ -106,7 +107,7 @@ msgstr ""
 
 #: actions/all.php:165
 msgid "You and friends"
-msgstr "Вие и пријателите"
+msgstr "Вие и пријатели"
 
 #: actions/allrss.php:119 actions/apitimelinefriends.php:122
 #: actions/apitimelinehome.php:122
@@ -119,9 +120,8 @@ msgstr ""
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#, fuzzy
 msgid "API method not found."
-msgstr "Кодот за потврда не е пронајден."
+msgstr "API методот не епронајден."
 
 #: actions/apiaccountupdatedeliverydevice.php:85
 #: actions/apiaccountupdateprofile.php:89
@@ -144,9 +144,8 @@ msgid ""
 msgstr ""
 
 #: actions/apiaccountupdatedeliverydevice.php:132
-#, fuzzy
 msgid "Could not update user."
-msgstr "Ð\9aоÑ\80иÑ\81никоÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\81вежи/"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð°Ð¶Ñ\83Ñ\80иÑ\80а ÐºÐ¾Ñ\80иÑ\81ник."
 
 #: actions/apiaccountupdateprofile.php:112
 #: actions/apiaccountupdateprofilebackgroundimage.php:194
@@ -158,9 +157,8 @@ msgid "User has no profile."
 msgstr "Корисникот нема профил."
 
 #: actions/apiaccountupdateprofile.php:147
-#, fuzzy
 msgid "Could not save profile."
-msgstr "Ð\9fÑ\80оÑ\84илоÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81ними."
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð°Ñ\87Ñ\83ва Ð¿Ñ\80оÑ\84ил."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:108
 #: actions/apiaccountupdateprofileimage.php:97
@@ -182,19 +180,18 @@ msgstr ""
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:187
 #: actions/apiaccountupdateprofilecolors.php:142
-#, fuzzy
 msgid "Could not update your design."
-msgstr "Ð\9aоÑ\80иÑ\81никоÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\81вежи/"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð°Ð¶Ñ\83Ñ\80иÑ\80а Ð²Ð°Ñ\88иоÑ\82 Ð´Ð¸Ð·Ð°Ñ\98н."
 
 #: actions/apiblockcreate.php:105
 msgid "You cannot block yourself!"
 msgstr "Не можете да се блокирате самите себеси!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -307,31 +304,31 @@ msgid "Could not find target user."
 msgstr "Не можев да го пронајдам целниот корисник."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Прекарот мора да има само мали букви и бројки и да нема празни места."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Тој прекар е во употреба. Одберете друг."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Неправилен прекар."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
-msgstr "Ð\94омаÑ\88наÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ðµ Ðµ Ð¿Ñ\80авилно URL."
+msgstr "Ð\93лавнаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ðµ Ðµ Ð²Ð°Ð»Ð¸Ð´ÐµÐ½ URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Целото име е предолго (максимум 255 знаци)"
@@ -342,7 +339,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Описот е предолг (дозволено е највеќе %d знаци)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Локацијата е предолга (максимумот е 255 знаци)."
@@ -385,43 +382,42 @@ msgid "You have been blocked from that group by the admin."
 msgstr ""
 
 #: actions/apigroupjoin.php:138
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s."
-msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ñ\80енаÑ\81оÑ\87и ÐºÐ¾Ð½ Ñ\81еÑ\80веÑ\80оÑ\82: %s"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ñ\80идÑ\80Ñ\83жи ÐºÐ¾Ñ\80иÑ\81ник %s Ð½Ð° Ð³Ñ\80Ñ\83па %s."
 
 #: actions/apigroupleave.php:114
-#, fuzzy
 msgid "You are not a member of this group."
-msgstr "Не ни го испративте тој профил."
+msgstr "Не сте член на оваа група"
 
 #: actions/apigroupleave.php:124
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s."
-msgstr "OpenID формуларот не може да се креира:%s"
+msgstr "Не може да се избрише корисник %s од група %s."
 
 #: actions/apigrouplist.php:95
-#, fuzzy, php-format
+#, php-format
 msgid "%s's groups"
-msgstr "Профил"
+msgstr "%s групи"
 
 #: actions/apigrouplist.php:103
-#, fuzzy, php-format
+#, php-format
 msgid "Groups %s is a member of on %s."
-msgstr "Ð\9dе Ð½Ð¸ Ð³Ð¾ Ð¸Ñ\81пÑ\80аÑ\82ивÑ\82е Ñ\82оÑ\98 Ð¿Ñ\80оÑ\84ил."
+msgstr "Ð\93Ñ\80Ñ\83пиÑ\82е %s Ñ\81е Ñ\87ленови Ð½Ð° %s."
 
 #: actions/apigrouplistall.php:90 actions/usergroups.php:62
 #, php-format
 msgid "%s groups"
-msgstr ""
+msgstr "%s групи"
 
 #: actions/apigrouplistall.php:94
 #, php-format
 msgid "groups on %s"
-msgstr ""
+msgstr "групи на %s"
 
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
-msgstr ""
+msgstr "Методот бара POST или DELETE."
 
 #: actions/apistatusesdestroy.php:130
 msgid "You may not delete another user's status."
@@ -433,9 +429,8 @@ msgid "No such notice."
 msgstr "Нема такво известување."
 
 #: actions/apistatusesretweet.php:83
-#, fuzzy
 msgid "Cannot repeat your own notice."
-msgstr "Не може да се регистрирате ако не ја прифаќате лиценцата."
+msgstr "Не можете да ја повторувате сопствената белешка."
 
 #: actions/apistatusesretweet.php:91
 #, fuzzy
@@ -443,9 +438,8 @@ msgid "Already repeated that notice."
 msgstr "Веќе сте пријавени!"
 
 #: actions/apistatusesshow.php:138
-#, fuzzy
 msgid "Status deleted."
-msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð°Ð¶Ñ\83Ñ\80иÑ\80ан."
+msgstr "СÑ\82аÑ\82Ñ\83Ñ\81оÑ\82 Ðµ Ð¸Ð·Ð±Ñ\80иÑ\88ан."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
@@ -453,23 +447,22 @@ msgstr ""
 
 #: actions/apistatusesupdate.php:157 actions/newnotice.php:155
 #: scripts/maildaemon.php:71
-#, fuzzy, php-format
+#, php-format
 msgid "That's too long. Max notice size is %d chars."
-msgstr "Ð\9eва Ðµ Ð¿Ñ\80едолго. Ð\9cакÑ\81ималнаÑ\82а Ð´Ð¾Ð»Ð¶Ð¸Ð½Ð° Ðµ 140 знаци."
+msgstr "Ð\9eва Ðµ Ð¿Ñ\80едолго. Ð\9cакÑ\81ималнаÑ\82а Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð° Ð´Ð¾Ð»Ð¶Ð¸Ð½Ð° Ð¸Ð·Ð½ÐµÑ\81Ñ\83ва %d знаци."
 
 #: actions/apistatusesupdate.php:198
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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
-#, fuzzy
 msgid "Unsupported format."
-msgstr "Неподдржан фомрат на слики."
+msgstr "Неподдржан формат."
 
 #: actions/apitimelinefavorites.php:108
 #, php-format
@@ -494,9 +487,9 @@ msgid "Updates from %1$s on %2$s!"
 msgstr ""
 
 #: actions/apitimelinementions.php:117
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Updates mentioning %2$s"
-msgstr "%1$s статус на %2$s"
+msgstr "%1$s / Подновувања кои споменуваат %2$s"
 
 #: actions/apitimelinementions.php:127
 #, php-format
@@ -534,19 +527,17 @@ msgid "Notices tagged with %s"
 msgstr ""
 
 #: actions/apitimelinetag.php:108 actions/tagrss.php:64
-#, fuzzy, php-format
+#, php-format
 msgid "Updates tagged with %1$s on %2$s!"
-msgstr "Ð\9cикÑ\80облог Ð½Ð° %s"
+msgstr "Ð\9fодновÑ\83ваÑ\9aаÑ\82а Ñ\81е Ð¾Ð·Ð½Ð°Ñ\87ени Ñ\81о %1$s Ð½Ð° %2$s!"
 
 #: actions/apiusershow.php:96
-#, fuzzy
 msgid "Not found."
-msgstr "Ð\9dе Ðµ Ð¿Ñ\80онаÑ\98едено Ð±Ð°Ñ\80аÑ\9aе."
+msgstr "Ð\9dе Ðµ Ð¿Ñ\80онаÑ\98дено."
 
 #: actions/attachment.php:73
-#, fuzzy
 msgid "No such attachment."
-msgstr "Ð\9dема Ñ\82аков Ð´Ð¾ÐºÑ\83менÑ\82."
+msgstr "Ð\9dема Ñ\82аков Ð¿Ñ\80илог."
 
 #: actions/avatarbynickname.php:59 actions/grouprss.php:91
 #: actions/leavegroup.php:76
@@ -579,9 +570,8 @@ msgstr ""
 
 #: actions/avatarsettings.php:119 actions/avatarsettings.php:197
 #: actions/grouplogo.php:251
-#, fuzzy
 msgid "Avatar settings"
-msgstr "Ð\9fоÑ\81Ñ\82авки"
+msgstr "Ð\9dагодÑ\83ваÑ\9aа Ð½Ð° Ð°Ð²Ð°Ñ\82аÑ\80оÑ\82"
 
 #: actions/avatarsettings.php:127 actions/avatarsettings.php:205
 #: actions/grouplogo.php:199 actions/grouplogo.php:259
@@ -591,12 +581,12 @@ msgstr ""
 #: actions/avatarsettings.php:142 actions/avatarsettings.php:217
 #: actions/grouplogo.php:210 actions/grouplogo.php:271
 msgid "Preview"
-msgstr ""
+msgstr "Преглед"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
-msgstr ""
+msgstr "Бриши"
 
 #: actions/avatarsettings.php:166 actions/grouplogo.php:233
 msgid "Upload"
@@ -604,16 +594,16 @@ msgstr "Товари"
 
 #: actions/avatarsettings.php:231 actions/grouplogo.php:286
 msgid "Crop"
-msgstr ""
+msgstr "Отсечи"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -627,7 +617,7 @@ msgstr ""
 #: actions/imsettings.php:220 actions/recoverpassword.php:44
 #: actions/smssettings.php:248 lib/designsettings.php:304
 msgid "Unexpected form submission."
-msgstr "Ð\9dеоÑ\87екÑ\83вано Ð¸Ñ\81пÑ\80аÑ\9cаÑ\9aе Ð½Ð° Ñ\84оÑ\80мÑ\83лаÑ\80."
+msgstr "Ð\9dеоÑ\87екÑ\83вано Ð¿Ð¾Ð´Ð½ÐµÑ\81Ñ\83ваÑ\9aе Ð½Ð° Ð¾Ð±Ñ\80азеÑ\86."
 
 #: actions/avatarsettings.php:328
 msgid "Pick a square area of the image to be your avatar"
@@ -646,14 +636,12 @@ msgid "Failed updating avatar."
 msgstr "Товарањето на аватарот не успеа."
 
 #: actions/avatarsettings.php:393
-#, fuzzy
 msgid "Avatar deleted."
-msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð°Ð¶Ñ\83Ñ\80иÑ\80ан."
+msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð¸Ð·Ð±Ñ\80иÑ\88ан."
 
 #: actions/block.php:69
-#, fuzzy
 msgid "You already blocked that user."
-msgstr "Веќе сте пријавени!"
+msgstr "Веќе го имате блокирано тој корисник."
 
 #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
 #, fuzzy
@@ -688,7 +676,7 @@ msgstr ""
 msgid "Block this user"
 msgstr "Нема таков корисник."
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -703,37 +691,34 @@ msgstr "Нема прекар"
 #: actions/groupbyid.php:83 actions/groupdesignsettings.php:97
 #: actions/grouplogo.php:99 actions/groupmembers.php:83
 #: actions/joingroup.php:83 actions/showgroup.php:137
-#, fuzzy
 msgid "No such group"
-msgstr "Ð\9dема Ñ\82акво Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе."
+msgstr "Ð\9dема Ñ\82акваа Ð³Ñ\80Ñ\83па"
 
 #: actions/blockedfromgroup.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked profiles"
-msgstr "Корисникот нема профил."
+msgstr "%s блокирани профили"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked profiles, page %d"
-msgstr "%s Ð¸ Ð¿Ñ\80иÑ\98аÑ\82елиÑ\82е"
+msgstr "%s Ð±Ð»Ð¾ÐºÐ¸Ñ\80ани Ð¿Ñ\80оÑ\84или, Ñ\81Ñ\82Ñ\80аниÑ\86а %d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
 msgstr ""
 
 #: actions/blockedfromgroup.php:281
-#, fuzzy
 msgid "Unblock user from group"
-msgstr "Ð\9dема Ñ\82аков ÐºÐ¾Ñ\80иÑ\81ник."
+msgstr "Ð\9eдблокиÑ\80аÑ\98 ÐºÐ¾Ñ\80иÑ\81ник Ð¾Ð´ Ð³Ñ\80Ñ\83па"
 
 #: actions/blockedfromgroup.php:313 lib/unblockform.php:69
 msgid "Unblock"
-msgstr ""
+msgstr "Одблокирај"
 
 #: actions/blockedfromgroup.php:313 lib/unblockform.php:80
-#, fuzzy
 msgid "Unblock this user"
-msgstr "Ð\9dема Ñ\82аков ÐºÐ¾Ñ\80иÑ\81ник."
+msgstr "Ð\9eдблокиÑ\80аÑ\98 Ð³Ð¾ Ð¾Ð²Ð¾Ñ\98 ÐºÐ¾Ñ\80Ñ\81ник"
 
 #: actions/bookmarklet.php:50
 msgid "Post to "
@@ -763,7 +748,7 @@ msgstr "Оваа адреса веќе е потврдена."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Корисникот не може да се освежи/"
@@ -771,7 +756,7 @@ msgstr "Корисникот не може да се освежи/"
 #: actions/confirmaddress.php:126 actions/emailsettings.php:391
 #: actions/imsettings.php:363 actions/smssettings.php:382
 msgid "Couldn't delete email confirmation."
-msgstr "Не може да се креира потврда за е-пошта."
+msgstr "Не можев да ја избришам потврдата по е-пошта."
 
 #: actions/confirmaddress.php:144
 msgid "Confirm Address"
@@ -783,9 +768,8 @@ msgid "The address \"%s\" has been confirmed for your account."
 msgstr "Адресата  \"%s\" е потврдена за Вашата сметка."
 
 #: actions/conversation.php:99
-#, fuzzy
 msgid "Conversation"
-msgstr "Ð\9bокација"
+msgstr "Ð\9aонвеÑ\80зација"
 
 #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87
 #: lib/profileaction.php:216 lib/searchgroupnav.php:82
@@ -804,7 +788,7 @@ msgstr "Не сте пријавени."
 
 #: actions/deletenotice.php:71
 msgid "Can't delete this notice."
-msgstr ""
+msgstr "Не може да се избрише оваа забелешка."
 
 #: actions/deletenotice.php:103
 msgid ""
@@ -814,38 +798,35 @@ msgstr ""
 
 #: actions/deletenotice.php:109 actions/deletenotice.php:141
 msgid "Delete notice"
-msgstr ""
+msgstr "Бриши забелешка"
 
 #: actions/deletenotice.php:144
 msgid "Are you sure you want to delete this notice?"
 msgstr ""
 
 #: actions/deletenotice.php:145
-#, fuzzy
 msgid "Do not delete this notice"
-msgstr "Нема такво известување."
+msgstr "Не ја бриши оваа забелешка"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
-msgstr ""
+msgstr "Бриши ја оваа забелешка"
 
 #: actions/deletenotice.php:157
 msgid "There was a problem with your session token.  Try again, please."
 msgstr ""
 
 #: actions/deleteuser.php:67
-#, fuzzy
 msgid "You cannot delete users."
-msgstr "Ð\9aоÑ\80иÑ\81никоÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\81вежи/"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð±Ñ\80иÑ\88еÑ\82е ÐºÐ¾Ñ\80иÑ\81ниÑ\86и."
 
 #: actions/deleteuser.php:74
-#, fuzzy
 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 ""
@@ -854,68 +835,64 @@ msgid ""
 msgstr ""
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
-#, fuzzy
 msgid "Delete this user"
-msgstr "Ð\9dема Ñ\82аков ÐºÐ¾Ñ\80иÑ\81ник."
+msgstr "Ð\98збÑ\80иÑ\88и Ð¾Ð²Ð¾Ñ\98 ÐºÐ¾Ñ\80иÑ\81ник"
 
 #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
 #: lib/adminpanelaction.php:302 lib/groupnav.php:119
 msgid "Design"
-msgstr ""
+msgstr "Дизајн"
 
 #: actions/designadminpanel.php:73
 msgid "Design settings for this StatusNet site."
-msgstr ""
+msgstr "Нагодувања на дизајн на ова StatusNet место."
 
 #: actions/designadminpanel.php:275
-#, fuzzy
 msgid "Invalid logo URL."
-msgstr "Ð\9fогÑ\80еÑ\88на Ð³Ð¾Ð»ÐµÐ¼Ð¸Ð½Ð°."
+msgstr "Ð\9fогÑ\80еÑ\88ен URL Ð½Ð° Ð»Ð¾Ð³Ð¾."
 
 #: actions/designadminpanel.php:279
-#, fuzzy, php-format
+#, php-format
 msgid "Theme not available: %s"
-msgstr "Ð\9eваа Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ðµ Ðµ Ð´Ð¾Ñ\81Ñ\82апна Ð²Ð¾ Ñ\84оÑ\80маÑ\82оÑ\82 ÐºÐ¾Ñ\98 Ð\92ие Ð³Ð¾ Ð¿Ñ\80иÑ\84аÑ\9cаÑ\82е."
+msgstr "Ð\9dепоÑ\81Ñ\82оÑ\87ка Ñ\82ема: %s"
 
 #: actions/designadminpanel.php:375
-#, fuzzy
 msgid "Change logo"
-msgstr "Промени ја лозинката"
+msgstr "Промени лого"
 
 #: actions/designadminpanel.php:380
-#, fuzzy
 msgid "Site logo"
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Ð\9bого Ð·Ð½Ð°Ðº Ð½Ð° Ñ\81аÑ\98Ñ\82"
 
 #: actions/designadminpanel.php:387
-#, fuzzy
 msgid "Change theme"
-msgstr "Промени"
+msgstr "Промени тема"
 
 #: actions/designadminpanel.php:404
-#, fuzzy
 msgid "Site theme"
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Тема Ð½Ð° Ñ\81аÑ\98Ñ\82"
 
 #: actions/designadminpanel.php:405
 msgid "Theme for the site."
-msgstr ""
+msgstr "Тема на сајтот."
 
 #: actions/designadminpanel.php:417 lib/designsettings.php:101
 msgid "Change background image"
-msgstr ""
+msgstr "Промена на слика на позадина"
 
 #: actions/designadminpanel.php:422 actions/designadminpanel.php:497
 #: lib/designsettings.php:178
 msgid "Background"
-msgstr ""
+msgstr "Позадина"
 
 #: 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 "Ова е предолго. Максималната должина е 140 знаци."
+msgstr ""
+"Може да подигнете слика за позадина за ова место. Максималната големина на "
+"податотеката е %1$s."
 
 #: actions/designadminpanel.php:457 lib/designsettings.php:139
 msgid "On"
@@ -934,28 +911,24 @@ msgid "Tile background image"
 msgstr ""
 
 #: actions/designadminpanel.php:488 lib/designsettings.php:170
-#, fuzzy
 msgid "Change colours"
-msgstr "Ð\9fÑ\80омени Ñ\98а Ð»Ð¾Ð·Ð¸Ð½ÐºÐ°Ñ\82а"
+msgstr "Ð\9fÑ\80омена Ð½Ð° Ð±Ð¾Ð¸"
 
 #: actions/designadminpanel.php:510 lib/designsettings.php:191
-#, fuzzy
 msgid "Content"
-msgstr "Ð\9fовÑ\80зи Ñ\81е"
+msgstr "СодÑ\80жина"
 
 #: actions/designadminpanel.php:523 lib/designsettings.php:204
-#, fuzzy
 msgid "Sidebar"
-msgstr "Ð\91аÑ\80аÑ\98"
+msgstr "СÑ\82Ñ\80аниÑ\87на Ð»ÐµÐ½Ñ\82а"
 
 #: actions/designadminpanel.php:536 lib/designsettings.php:217
 msgid "Text"
-msgstr ""
+msgstr "Текст"
 
 #: actions/designadminpanel.php:549 lib/designsettings.php:230
-#, fuzzy
 msgid "Links"
-msgstr "Ð\9fÑ\80иÑ\98ави Ñ\81е"
+msgstr "Ð\92Ñ\80Ñ\81ки"
 
 #: actions/designadminpanel.php:577 lib/designsettings.php:247
 msgid "Use defaults"
@@ -971,7 +944,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -981,7 +954,7 @@ msgstr "Сними"
 
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
-msgstr ""
+msgstr "Зачувај дизајн"
 
 #: actions/disfavor.php:81
 msgid "This notice is not a favorite!"
@@ -1024,14 +997,12 @@ msgid "Could not update group."
 msgstr "Корисникот не може да се освежи/"
 
 #: actions/editgroup.php:259 classes/User_group.php:390
-#, fuzzy
 msgid "Could not create aliases."
-msgstr "Ð\98нÑ\84оÑ\80маÑ\86ииÑ\82е Ð·Ð° Ð°Ð²Ð°Ñ\82аÑ\80оÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81нимаÑ\82"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶ÐµÑ\88е Ð´Ð° Ñ\81е Ñ\81оздадаÑ\82 Ð°Ð»Ð¸Ñ\98аÑ\81и."
 
 #: actions/editgroup.php:269
-#, fuzzy
 msgid "Options saved."
-msgstr "Ð\9fоÑ\81Ñ\82авкиÑ\82е Ñ\81е Ñ\81нимени."
+msgstr "Ð\9dагодÑ\83ваÑ\9aаÑ\82а Ñ\81е Ð·Ð°Ñ\87Ñ\83вани."
 
 #: actions/emailsettings.php:60
 msgid "Email Settings"
@@ -1216,9 +1187,8 @@ msgstr ""
 
 #: actions/favorited.php:65 lib/popularnoticesection.php:88
 #: lib/publicgroupnav.php:93
-#, fuzzy
 msgid "Popular notices"
-msgstr "Ð\9dема Ñ\82акво Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе."
+msgstr "Ð\9fопÑ\83лаÑ\80ни Ð·Ð°Ð±ÐµÐ»ÐµÑ\88ки"
 
 #: actions/favorited.php:67
 #, fuzzy, php-format
@@ -1278,19 +1248,16 @@ msgid "No notice ID."
 msgstr "Ново известување"
 
 #: actions/file.php:38
-#, fuzzy
 msgid "No notice."
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Ð\9dема Ð·Ð°Ð±ÐµÐ»ÐµÑ\88ка."
 
 #: actions/file.php:42
-#, fuzzy
 msgid "No attachments."
-msgstr "Нема таков документ."
+msgstr "Нема прикачувања."
 
 #: actions/file.php:51
-#, fuzzy
 msgid "No uploaded attachments."
-msgstr "Нема таков документ."
+msgstr "Нема подигнато прикачувања."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
@@ -1310,9 +1277,8 @@ msgid "That user has blocked you from subscribing."
 msgstr ""
 
 #: actions/finishremotesubscribe.php:110
-#, fuzzy
 msgid "You are not authorized."
-msgstr "Не е одобрено."
+msgstr "Не сте авторизирани."
 
 #: actions/finishremotesubscribe.php:113
 #, fuzzy
@@ -1435,9 +1401,8 @@ msgid "Unable to save your design settings!"
 msgstr ""
 
 #: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231
-#, fuzzy
 msgid "Design preferences saved."
-msgstr "Ð\9fÑ\80еÑ\84еÑ\80енÑ\86ииÑ\82е Ñ\81е Ñ\81нимени."
+msgstr "Ð\9dагодÑ\83ваÑ\9aаÑ\82а Ñ\81е Ð·Ð°Ñ\87Ñ\83вани."
 
 #: actions/grouplogo.php:139 actions/grouplogo.php:192
 msgid "Group logo"
@@ -1454,9 +1419,8 @@ msgid "Pick a square area of the image to be the logo."
 msgstr ""
 
 #: actions/grouplogo.php:396
-#, fuzzy
 msgid "Logo updated."
-msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð°Ð¶Ñ\83Ñ\80иÑ\80ан."
+msgstr "Ð\9bогоÑ\82о Ðµ Ð¿Ð¾Ð´Ð½Ð¾Ð²ÐµÐ½Ð¾."
 
 #: actions/grouplogo.php:398
 #, fuzzy
@@ -1477,7 +1441,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1498,9 +1462,9 @@ msgid "Make this user an admin"
 msgstr ""
 
 #: actions/grouprss.php:133
-#, fuzzy, php-format
+#, php-format
 msgid "Updates from members of %1$s on %2$s!"
-msgstr "Ð\9cикÑ\80облог Ð½Ð° %s"
+msgstr "Ð\9fодновÑ\83ваÑ\9aа Ð¾Ð´ Ñ\87ленови Ð½Ð° %1$s Ð½Ð° %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
@@ -1569,10 +1533,9 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Корисникот нема профил."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
-#, fuzzy
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
-msgstr "Ð\93Ñ\80еÑ\88ка Ð²Ð¾ Ñ\81нимаÑ\9aеÑ\82о Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никот."
+msgstr "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¾Ñ\82Ñ\81Ñ\82Ñ\80анÑ\83ваÑ\9aе Ð½Ð° Ð±Ð»Ð¾кот."
 
 #: actions/imsettings.php:59
 msgid "IM Settings"
@@ -1588,9 +1551,8 @@ msgstr ""
 "doc.im%%). Подолу "
 
 #: actions/imsettings.php:89
-#, fuzzy
 msgid "IM is not available."
-msgstr "Ð\9eваа Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ðµ Ðµ Ð´Ð¾Ñ\81Ñ\82апна Ð²Ð¾ Ñ\84оÑ\80маÑ\82оÑ\82 ÐºÐ¾Ñ\98 Ð\92ие Ð³Ð¾ Ð¿Ñ\80иÑ\84аÑ\9cаÑ\82е."
+msgstr "Ð\98Ð\9f Ð½Ðµ Ñ\81е Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¸."
 
 #: actions/imsettings.php:106
 msgid "Current confirmed Jabber/GTalk address."
@@ -1676,7 +1638,7 @@ msgstr ""
 #: actions/inbox.php:62
 #, php-format
 msgid "Inbox for %s"
-msgstr ""
+msgstr "Приемно сандаче за %s"
 
 #: actions/inbox.php:115
 msgid "This is your inbox, which lists your incoming private messages."
@@ -1749,7 +1711,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Испрати"
 
@@ -1822,9 +1784,9 @@ msgid "Could not find membership record."
 msgstr ""
 
 #: actions/leavegroup.php:127 lib/command.php:284
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "OpenID формуларот не може да се креира:%s"
+msgstr "Не можев да го отстранам корисникот %s од групата %s"
 
 #: actions/leavegroup.php:134 lib/command.php:289
 #, php-format
@@ -1849,7 +1811,7 @@ msgstr "Неточно корисничко име или лозинка"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Не е одобрено."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Пријави се"
@@ -1961,7 +1923,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1969,7 +1931,7 @@ msgstr ""
 msgid "New notice"
 msgstr "Ново известување"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "Известувања"
@@ -2061,9 +2023,8 @@ msgid "Notice Search"
 msgstr ""
 
 #: actions/othersettings.php:60
-#, fuzzy
 msgid "Other Settings"
-msgstr "Ð\9fоÑ\81Ñ\82авки"
+msgstr "Ð\94Ñ\80Ñ\83ги Ð½Ð°Ð³Ð¾Ð´Ñ\83ваÑ\9aа"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
@@ -2082,9 +2043,8 @@ msgid "Automatic shortening service to use."
 msgstr ""
 
 #: actions/othersettings.php:122
-#, fuzzy
 msgid "View profile designs"
-msgstr "Ð\9fоÑ\81Ñ\82авки на профилот"
+msgstr "Ð\92иди Ð¸Ð·Ð³Ð»ÐµÐ´и на профилот"
 
 #: actions/othersettings.php:123
 msgid "Show or hide profile designs."
@@ -2119,9 +2079,8 @@ msgid "Change your password."
 msgstr "Промени ја лозинката"
 
 #: actions/passwordsettings.php:96 actions/recoverpassword.php:231
-#, fuzzy
 msgid "Password change"
-msgstr "Ð\9bозинкаÑ\82а Ðµ Ñ\81нимена."
+msgstr "Ð\9fÑ\80омена Ð½Ð° Ð»Ð¾Ð·Ð¸Ð½ÐºÐ°"
 
 #: actions/passwordsettings.php:104
 msgid "Old password"
@@ -2248,19 +2207,16 @@ msgid "Avatars"
 msgstr "Аватар"
 
 #: actions/pathsadminpanel.php:257
-#, fuzzy
 msgid "Avatar server"
-msgstr "Ð\9fоÑ\81Ñ\82авки"
+msgstr "СеÑ\80веÑ\80 Ð½Ð° Ð°Ð²Ð°Ñ\82аÑ\80оÑ\82"
 
 #: actions/pathsadminpanel.php:261
-#, fuzzy
 msgid "Avatar path"
-msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð°Ð¶Ñ\83Ñ\80иÑ\80ан."
+msgstr "Ð\9fаÑ\82ека Ð½Ð° Ð°Ð²Ð°Ñ\82аÑ\80оÑ\82"
 
 #: actions/pathsadminpanel.php:265
-#, fuzzy
 msgid "Avatar directory"
-msgstr "Ð\90ваÑ\82аÑ\80оÑ\82 Ðµ Ð°Ð¶Ñ\83Ñ\80иÑ\80ан."
+msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\83м Ð½Ð° Ð°Ð²Ð°Ñ\82аÑ\80оÑ\82"
 
 #: actions/pathsadminpanel.php:274
 msgid "Backgrounds"
@@ -2361,9 +2317,8 @@ msgstr ""
 "повеќе за Вас."
 
 #: actions/profilesettings.php:99
-#, fuzzy
 msgid "Profile information"
-msgstr "Ð\9dепознаÑ\82 профил"
+msgstr "Ð\98нÑ\84оÑ\80маÑ\86ии Ð·Ð° профил"
 
 #: actions/profilesettings.php:108 lib/groupeditform.php:154
 msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
@@ -2409,70 +2364,77 @@ msgstr "Локација"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Каде се наоѓате, на пр. „Град, Држава“."
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
-msgstr ""
+msgstr "Ознаки"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
-msgstr ""
+msgstr "Јазик"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Биографијата е предолга (максимумот е 140 знаци)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
-msgstr ""
+msgstr "Не е избрана временска зона."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
-#, fuzzy, php-format
+#: actions/profilesettings.php:253 actions/tagother.php:178
+#, php-format
 msgid "Invalid tag: \"%s\""
-msgstr "Ð\9dевалидна Ð´Ð¾Ð¼Ð°Ñ\88на Ñ\81Ñ\82Ñ\80аниÑ\86а: '%s'"
+msgstr "Ð\9dевалидна Ð¾Ð·Ð½Ð°ÐºÐ°: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Не можев да ги зачувам нагодувањата за локација"
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Профилот не може да се сними."
 
-#: actions/profilesettings.php:336
-#, fuzzy
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
-msgstr "Ð\9fÑ\80оÑ\84илоÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81ними."
+msgstr "Ð\9dе Ð¼Ð¾Ð¶ÐµÐ² Ð´Ð° Ð³Ð¸ Ð·Ð°Ñ\87Ñ\83вам Ð¾Ð·Ð½Ð°ÐºÐ¸Ñ\82е."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Поставките се снимени."
 
@@ -2569,7 +2531,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2710,7 +2672,7 @@ msgstr "Грешка со кодот за потврдување."
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистрирај се"
@@ -2887,7 +2849,7 @@ msgstr "Не може да се регистрирате ако не ја при
 msgid "You already repeated that notice."
 msgstr "Веќе сте пријавени!"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -3017,9 +2979,8 @@ msgid "%s group, page %d"
 msgstr ""
 
 #: actions/showgroup.php:218
-#, fuzzy
 msgid "Group profile"
-msgstr "Ð\9dема Ñ\82акво Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе."
+msgstr "Ð\9fÑ\80оÑ\84ил Ð½Ð° Ð³Ñ\80Ñ\83па"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
 #: actions/userauthorization.php:167 lib/userprofile.php:177
@@ -3028,9 +2989,8 @@ msgstr ""
 
 #: actions/showgroup.php:274 actions/tagother.php:128
 #: actions/userauthorization.php:179 lib/userprofile.php:194
-#, fuzzy
 msgid "Note"
-msgstr "Ð\98звеÑ\81Ñ\82Ñ\83ваÑ\9aа"
+msgstr "Ð\97абелеÑ\88ка"
 
 #: actions/showgroup.php:284 lib/groupeditform.php:184
 msgid "Aliases"
@@ -3122,12 +3082,11 @@ msgstr ""
 #: actions/showmessage.php:113
 #, php-format
 msgid "Message from %1$s on %2$s"
-msgstr ""
+msgstr "Порака од %1$s на %2$s"
 
 #: actions/shownotice.php:90
-#, fuzzy
 msgid "Notice deleted."
-msgstr "Ð\98звеÑ\81Ñ\82Ñ\83ваÑ\9aа"
+msgstr "Ð\98збÑ\80иÑ\88ана Ð·Ð°Ð±ÐµÐ»ÐµÑ\88ка"
 
 #: actions/showstream.php:73
 #, php-format
@@ -3200,9 +3159,9 @@ msgid ""
 msgstr ""
 
 #: actions/showstream.php:313
-#, fuzzy, php-format
+#, php-format
 msgid "Repeat of %s"
-msgstr "Ð\9eдговоÑ\80и Ð¸Ñ\81пÑ\80аÑ\82ени Ð´Ð¾ %s"
+msgstr "Ð\9fовÑ\82оÑ\80Ñ\83ваÑ\9aа Ð½Ð° %s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
 msgid "You cannot silence users on this site."
@@ -3256,9 +3215,8 @@ msgid "General"
 msgstr ""
 
 #: actions/siteadminpanel.php:256
-#, fuzzy
 msgid "Site name"
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Ð\98ме Ð½Ð° Ñ\81аÑ\98Ñ\82"
 
 #: actions/siteadminpanel.php:257
 msgid "The name of your site, like \"Yourcompany Microblog\""
@@ -3286,13 +3244,12 @@ msgid "Contact email address for your site"
 msgstr "Нема регистрирана адреса за е-пошта за тој корисник."
 
 #: actions/siteadminpanel.php:277
-#, fuzzy
 msgid "Local"
-msgstr "Локација"
+msgstr "Локално"
 
 #: actions/siteadminpanel.php:288
 msgid "Default timezone"
-msgstr ""
+msgstr "Основна временска зона"
 
 #: actions/siteadminpanel.php:289
 msgid "Default timezone for the site; usually UTC."
@@ -3300,16 +3257,15 @@ msgstr ""
 
 #: actions/siteadminpanel.php:295
 msgid "Default site language"
-msgstr ""
+msgstr "Основен јазик"
 
 #: actions/siteadminpanel.php:303
 msgid "URLs"
 msgstr ""
 
 #: actions/siteadminpanel.php:306
-#, fuzzy
 msgid "Server"
-msgstr "Ð\9fÑ\80онаÑ\98ди"
+msgstr "Ð\9eпÑ\81лÑ\83жÑ\83ваÑ\87"
 
 #: actions/siteadminpanel.php:306
 msgid "Site's server hostname."
@@ -3411,9 +3367,8 @@ 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 "Ð\9fоÑ\81Ñ\82авки"
+msgstr "Ð\97аÑ\87Ñ\83ваÑ\98 Ð½Ð°Ð³Ð¾Ð´Ñ\83ваÑ\9aа Ð½Ð° Ð²ÐµÐ±-Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а"
 
 #: actions/smssettings.php:58
 msgid "SMS Settings"
@@ -3515,9 +3470,8 @@ msgid "You are not subscribed to that profile."
 msgstr "Не ни го испративте тој профил."
 
 #: actions/subedit.php:83
-#, fuzzy
 msgid "Could not save subscription."
-msgstr "Не може да се креира претплатата"
+msgstr "Не можев да ја зачувам претплатата."
 
 #: actions/subscribe.php:55
 #, fuzzy
@@ -3917,9 +3871,8 @@ msgid "No ID."
 msgstr "Нема id."
 
 #: actions/userdesignsettings.php:76 lib/designsettings.php:65
-#, fuzzy
 msgid "Profile design"
-msgstr "Ð\9fоÑ\81Ñ\82авки на профилот"
+msgstr "Ð\98зглед на профилот"
 
 #: actions/userdesignsettings.php:87 lib/designsettings.php:76
 msgid ""
@@ -4009,16 +3962,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Проблем во снимањето на известувањето."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Одговор од внесот во базата: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4034,9 +3987,8 @@ msgid "Could not create group."
 msgstr "Информациите за аватарот не може да се снимат"
 
 #: classes/User_group.php:409
-#, fuzzy
 msgid "Could not set group membership."
-msgstr "Не може да се креира претплатата"
+msgstr "Не можев да назначам членство во групата."
 
 #: lib/accountsettingsaction.php:108
 msgid "Change your profile settings"
@@ -4077,135 +4029,135 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Дома"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "За"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Поврзи се"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Не може да се пренасочи кон серверот: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Претплати"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Одјави се"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Создај сметка"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Помош"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Помош"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Барај"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Ново известување"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Ново известување"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Претплати"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "За"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "ЧПП"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Приватност"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Изворен код"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4214,12 +4166,12 @@ msgstr ""
 "**%%site.name%%** е сервис за микроблогирање што ви го овозможува [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** е сервис за микроблогирање."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4230,34 +4182,32 @@ msgstr ""
 "верзија %s, достапен пд [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Ново известување"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
-#, fuzzy
+#: lib/action.php:1108
 msgid "After"
-msgstr "« Следни"
+msgstr "После"
 
-#: lib/action.php:1115
-#, fuzzy
+#: lib/action.php:1116
 msgid "Before"
-msgstr "Предходни »"
+msgstr "Пред"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4278,9 +4228,8 @@ msgid "Unable to delete design setting."
 msgstr ""
 
 #: lib/adminpanelaction.php:300
-#, fuzzy
 msgid "Basic site configuration"
-msgstr "Ð\9fоÑ\82вÑ\80дÑ\83ваÑ\9aе Ð½Ð° Ð°Ð´Ñ\80еÑ\81аÑ\82а"
+msgstr "Ð\9eÑ\81новни Ð½Ð°Ð³Ð¾Ð´Ñ\83ваÑ\9aа Ð½Ð° Ñ\81аÑ\98Ñ\82оÑ\82"
 
 #: lib/adminpanelaction.php:303
 #, fuzzy
@@ -4298,12 +4247,11 @@ msgstr ""
 
 #: lib/attachmentlist.php:265
 msgid "Author"
-msgstr ""
+msgstr "Автор"
 
 #: lib/attachmentlist.php:278
-#, fuzzy
 msgid "Provider"
-msgstr "Ð\9fÑ\80оÑ\84ил"
+msgstr "Ð\9eбезбедÑ\83ваÑ\87"
 
 #: lib/attachmentnoticesection.php:67
 msgid "Notices where this attachment appears"
@@ -4313,6 +4261,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Промена на лозинка"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Промена на лозинка"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4474,9 +4432,9 @@ msgid "Login command is disabled"
 msgstr ""
 
 #: lib/command.php:664
-#, fuzzy, php-format
+#, php-format
 msgid "Could not create login token for %s"
-msgstr "OpenID формуларот не може да се креира:%s"
+msgstr "Не можам да создадам најавен жетон за"
 
 #: lib/command.php:669
 #, php-format
@@ -4998,7 +4956,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -5063,73 +5021,75 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 или повеќе знаци"
 
-#: lib/noticeform.php:158
-#, fuzzy
+#: lib/noticeform.php:160
 msgid "Send a notice"
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Ð\98Ñ\81пÑ\80аÑ\82и Ð·Ð°Ð±ÐµÐ»ÐµÑ\88ка"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Што има %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
-msgstr ""
+msgstr "Прикачи"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
+msgstr "Прикаќи податотека"
+
+#: lib/noticeform.php:212
+msgid "Share your location"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Нема содржина!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Повторено од"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
-#, fuzzy
+#: lib/noticelist.php:586
 msgid "Reply"
-msgstr "одговор"
+msgstr "Ð\9eдговор"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Известувања"
@@ -5216,9 +5176,8 @@ msgid "Subscribers"
 msgstr "Претплатници"
 
 #: lib/profileaction.php:157
-#, fuzzy
 msgid "All subscribers"
-msgstr "Ð\9fретплатници"
+msgstr "СиÑ\82е Ð¿ретплатници"
 
 #: lib/profileaction.php:178
 msgid "User ID"
@@ -5230,7 +5189,7 @@ msgstr "Член од"
 
 #: lib/profileaction.php:245
 msgid "All groups"
-msgstr ""
+msgstr "Сите групи"
 
 #: lib/profileformaction.php:123
 #, fuzzy
@@ -5288,7 +5247,7 @@ msgstr "Барај"
 
 #: lib/searchaction.php:126
 msgid "Keyword(s)"
-msgstr ""
+msgstr "Клучен збор"
 
 #: lib/searchaction.php:162
 #, fuzzy
@@ -5317,17 +5276,15 @@ msgstr ""
 
 #: lib/section.php:106
 msgid "More..."
-msgstr ""
+msgstr "Повеќе..."
 
 #: lib/silenceform.php:67
-#, fuzzy
 msgid "Silence"
-msgstr "Ð\9dово Ð¸Ð·Ð²ÐµÑ\81Ñ\82Ñ\83ваÑ\9aе"
+msgstr "Ð\9cолк"
 
 #: lib/silenceform.php:78
-#, fuzzy
 msgid "Silence this user"
-msgstr "Ð\9dема Ñ\82аков ÐºÐ¾Ñ\80иÑ\81ник."
+msgstr "Ð\97амолÑ\87и Ð³Ð¾ Ð¾Ð²Ð¾Ñ\98 ÐºÐ¾Ñ\80иÑ\81ник"
 
 #: lib/subgroupnav.php:83
 #, fuzzy, php-format
@@ -5433,13 +5390,12 @@ msgid "User actions"
 msgstr ""
 
 #: lib/userprofile.php:248
-#, fuzzy
 msgid "Edit profile settings"
-msgstr "Ð\9fоÑ\81Ñ\82авки на профилот"
+msgstr "УÑ\80еди Ð½Ð°Ð³Ð¾Ð´Ñ\83ваÑ\9aа на профилот"
 
 #: lib/userprofile.php:249
 msgid "Edit"
-msgstr ""
+msgstr "Уреди"
 
 #: lib/userprofile.php:272
 msgid "Send a direct message to this user"
@@ -5447,7 +5403,7 @@ msgstr ""
 
 #: lib/userprofile.php:273
 msgid "Message"
-msgstr ""
+msgstr "Порака"
 
 #: lib/userprofile.php:311
 msgid "Moderate"
index eadbb8fc26cad502f1e7693baba6d389416fbed5..efb2320b60bddf91eb455283aa12392350d186a1 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:52+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:02+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: no\n"
 "X-Message-Group: out-statusnet\n"
@@ -199,11 +199,11 @@ msgstr "Klarte ikke å oppdatere bruker."
 msgid "You cannot block yourself!"
 msgstr "Du kan ikke blokkere deg selv!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Blokkering av bruker mislyktes."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Oppheving av blokkering av bruker mislyktes."
 
@@ -317,31 +317,31 @@ msgid "Could not find target user."
 msgstr "Klarte ikke å oppdatere bruker."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Kallenavn kan kun ha små bokstaver og tall og ingen mellomrom."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Det nicket er allerede i bruk. Prøv et annet."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Ugyldig nick."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Hjemmesiden er ikke en gyldig URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Beklager, navnet er for langt (max 250 tegn)."
@@ -352,7 +352,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Beskrivelsen er for lang (maks %d tegn)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr ""
@@ -471,7 +471,7 @@ msgstr ""
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -602,7 +602,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Delete"
 msgstr "slett"
@@ -616,13 +616,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -695,7 +695,7 @@ msgstr "Ja"
 msgid "Block this user"
 msgstr ""
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -769,7 +769,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Klarte ikke å oppdatere bruker."
@@ -831,7 +831,7 @@ msgstr "Er du sikker på at du vil slette denne notisen?"
 msgid "Do not delete this notice"
 msgstr "Kan ikke slette notisen."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1472,7 +1472,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrator"
 
@@ -1561,7 +1561,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr ""
 
@@ -1734,7 +1734,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Send"
 
@@ -1853,7 +1853,7 @@ msgstr "Feil brukernavn eller passord"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ikke autorisert."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logg inn"
@@ -1961,7 +1961,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1969,7 +1969,7 @@ msgstr ""
 msgid "New notice"
 msgstr ""
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr ""
 
@@ -2396,71 +2396,80 @@ msgstr ""
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Tagger"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Språk"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Tidssone"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Abonner automatisk på de som abonnerer på meg (best for ikke-mennesker)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "«Om meg» er for lang (maks 140 tegn)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ugyldig hjemmeside '%s'"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Klarte ikke å lagre profil."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Klarte ikke å lagre profil."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr ""
 
@@ -2554,7 +2563,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2692,7 +2701,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2878,7 +2887,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "Du er allerede logget inn!"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Opprett"
@@ -3978,16 +3987,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4045,131 +4054,131 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Hjem"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "Om"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Koble til"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Logg ut"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "Opprett en ny konto"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hjelp"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Hjelp"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Søk"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "OSS/FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Kilde"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4178,12 +4187,12 @@ msgstr ""
 "**%%site.name%%** er en mikrobloggingtjeneste av [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er en mikrobloggingtjeneste. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4191,32 +4200,32 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "Tidligere »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4269,6 +4278,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Passordet ble lagret"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Passordet ble lagret"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4952,7 +4971,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr "fra"
@@ -5017,72 +5036,76 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 eller flere tegn"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr ""
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Opprett"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "svar"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Nytt nick"
index 0d7d9d58fc4eab376f3a4fb43acb237cc287e977..378b88a23ddc0eb813b421efcefa33c173c58db6 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:03+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:13+0000\n"
 "Language-Team: Dutch\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: nl\n"
 "X-Message-Group: out-statusnet\n"
@@ -200,11 +200,11 @@ msgstr "Het was niet mogelijk uw ontwerp bij te werken."
 msgid "You cannot block yourself!"
 msgstr "U kunt zichzelf niet blokkeren!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Het blokkeren van de gebruiker is mislukt."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Het deblokkeren van de gebruiker is mislukt."
 
@@ -321,7 +321,7 @@ msgid "Could not find target user."
 msgstr "Het was niet mogelijk de doelgebruiker te vinden."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -329,26 +329,26 @@ msgstr ""
 "geen spaties bevatten."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr ""
 "De opgegeven gebruikersnaam is al in gebruik. Kies een andere gebruikersnaam."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Geen geldige gebruikersnaam."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "De thuispagina is geen geldige URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "De volledige naam is te lang (maximaal 255 tekens)."
@@ -359,7 +359,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "De beschrijving is te lang. Gebruik maximaal %d tekens."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Locatie is te lang (maximaal 255 tekens)."
@@ -474,7 +474,7 @@ msgstr "Dat is te lang. De maximale mededelingslengte is 140 tekens."
 msgid "Not found"
 msgstr "Niet gevonden"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -606,7 +606,7 @@ msgid "Preview"
 msgstr "Voorvertoning"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Verwijderen"
 
@@ -619,13 +619,13 @@ msgid "Crop"
 msgstr "Uitsnijden"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -701,7 +701,7 @@ msgstr "Ja"
 msgid "Block this user"
 msgstr "Deze gebruiker blokkeren"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Het was niet mogelijk om de blokkadeinformatie op te slaan."
 
@@ -773,7 +773,7 @@ msgstr "Dit adres is al bevestigd."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Kon gebruiker niet actualiseren."
@@ -835,7 +835,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Deze mededeling verwijderen"
 
@@ -975,7 +975,7 @@ 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:167
+#: 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
@@ -1484,7 +1484,7 @@ msgstr "% groeps leden, pagina %d"
 msgid "A list of the users in this group."
 msgstr "Ledenlijst van deze groep"
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Beheerder"
 
@@ -1584,7 +1584,7 @@ msgstr "Alleen beheerders kunnen groepsleden deblokkeren."
 msgid "User is not blocked from group."
 msgstr "De gebruiker is niet de toegang tot de groep ontzegd."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Er is een fout opgetreden bij het verwijderen van de blokkade."
 
@@ -1772,7 +1772,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Verzenden"
 
@@ -1896,7 +1896,7 @@ msgstr ""
 "Er is een fout opgetreden bij het maken van de instellingen. U hebt "
 "waarschijnlijk niet de juiste rechten."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Aanmelden"
@@ -2007,7 +2007,7 @@ msgstr "Bericht verzonden."
 msgid "Direct message to %s sent"
 msgstr "Het directe bericht aan %s is verzonden"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Er is een Ajax-fout opgetreden"
 
@@ -2015,7 +2015,7 @@ msgstr "Er is een Ajax-fout opgetreden"
 msgid "New notice"
 msgstr "Nieuw bericht"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "De mededeling is verzonden"
 
@@ -2448,75 +2448,83 @@ msgstr "Locatie"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Waar u bent, bijvoorbeeld \"woonplaats, land\" of \"postcode, land\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Mijn huidige locatie weergeven bij het plaatsen van mededelingen"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Labels"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Eigen labels (letter, getallen, -, ., en _). Gescheiden door komma's of "
 "spaties"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Taal"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Voorkeurstaal"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Tijdzone"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "In welke tijdzone verblijft u meestal?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Automatisch abonneren bij abonnement op mij (beste voor automatische "
 "processen)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "De beschrijving is te lang (maximaal %d tekens)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Er is geen tijdzone geselecteerd."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Taal is te lang (max 50 tekens)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ongeldig label: '%s'"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 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:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Het was niet mogelijk de locatievoorkeuren op te slaan."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Het profiel kon niet opgeslagen worden."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Het was niet mogelijk de labels op te slaan."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "De instellingen zijn opgeslagen."
 
@@ -2623,7 +2631,7 @@ msgstr ""
 "U kunt een [gebruiker registeren](%%action.register%%) en dan de eerste zijn "
 "die er een plaatst!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Woordwolk"
 
@@ -2768,7 +2776,7 @@ msgstr "Sorry. De uitnodigingscode is ongeldig."
 msgid "Registration successful"
 msgstr "De registratie is voltooid"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registreren"
@@ -2959,7 +2967,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Herhaald"
 
@@ -3576,15 +3584,15 @@ msgstr "U hebt dit al ingesteld als uw telefoonnummer."
 
 #: actions/smssettings.php:321
 msgid "That phone number already belongs to another user."
-msgstr "Dit telefoonnummer is al in gebruik bij een andere gebruiker."
+msgstr "Dit telefoonnummer is al geregistrerd door een andere gebruiker."
 
 #: actions/smssettings.php:347
 msgid ""
 "A confirmation code was sent to the phone number you added. Check your phone "
 "for the code and instructions on how to use it."
 msgstr ""
-"Er is een bevestigingscode is verzonden naar het telefoonnummer dat u hebt "
-"toegevoegd. Controleer uw telefoon voor de code en instructies."
+"Er is een bevestigingscode verzonden naar het telefoonnummer dat u hebt "
+"toegevoegd. Op uw telefoon vindt u de code en de instructies."
 
 #: actions/smssettings.php:374
 msgid "That is the wrong confirmation number."
@@ -4126,17 +4134,17 @@ 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:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 "Er is een databasefout opgetreden bij het invoegen van het antwoord: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4191,128 +4199,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Naamloze pagina"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Primaire sitenavigatie"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Start"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Persoonlijk profiel en tijdlijn van vrienden"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Gebruiker"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Uw e-mailadres, avatar, wachtwoord of profiel wijzigen"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Koppelen"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Met diensten verbinden"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Websiteinstellingen wijzigen"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Uitnodigen"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Afmelden"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Van de site afmelden"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Gebruiker aanmaken"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Bij de site aanmelden"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Help"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Help me!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Zoeken"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Naar gebruikers of tekst zoeken"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Mededeling van de website"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Lokale weergaven"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Mededeling van de pagina"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Secundaire sitenavigatie"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Over"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Veel gestelde vragen"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "Gebruiksvoorwaarden"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacy"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Broncode"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contact"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Widget"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licentie van de StatusNet-software"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4321,12 +4329,12 @@ msgstr ""
 "**%%site.name%%** is een microblogdienst van [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** is een microblogdienst. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4337,31 +4345,31 @@ msgstr ""
 "versie %s, beschikbaar onder de [GNU Affero General Public License](http://"
 "www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licentie voor siteinhoud"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Alle "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licentie."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginering"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Later"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Eerder"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Er is een probleem met uw sessietoken."
 
@@ -4413,6 +4421,16 @@ msgstr "Mededelingen die deze bijlage bevatten"
 msgid "Tags for this attachment"
 msgstr "Labels voor deze bijlage"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Wachtwoord wijzigen"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Wachtwoord wijzigen"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Commandoresultaten"
@@ -5216,7 +5234,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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "van"
 
@@ -5286,69 +5304,73 @@ msgstr "Directe mededeling verzenden"
 msgid "To"
 msgstr "Aan"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Beschikbare tekens"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Mededeling verzenden"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Hallo, %s."
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Toevoegen"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Bestand toevoegen"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Uw locatie bekend maken"
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "Z"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "O"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "W"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "op"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "in context"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Herhaald door"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Op deze mededeling antwoorden"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Antwoorden"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Mededeling herhaald"
 
index e327c5aa0168a3ca5b2aefd8853354474afe5504..66a393e7b1f1dbc88e23b0cc78f8d46b33347a19 100644 (file)
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:10:58+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:07+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: nn\n"
 "X-Message-Group: out-statusnet\n"
@@ -193,11 +193,11 @@ msgstr "Kan ikkje oppdatera brukar."
 msgid "You cannot block yourself!"
 msgstr "Kan ikkje oppdatera brukar."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Blokkering av brukar feila."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "De-blokkering av brukar feila."
 
@@ -314,31 +314,31 @@ msgid "Could not find target user."
 msgstr "Kan ikkje finna einkvan status."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Kallenamn må berre ha små bokstavar og nummer, ingen mellomrom."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Kallenamnet er allereie i bruk. Prøv eit anna."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Ikkje eit gyldig brukarnamn."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Heimesida er ikkje ei gyldig internettadresse."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)."
@@ -349,7 +349,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "skildringa er for lang (maks 140 teikn)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Plassering er for lang (maksimalt 255 teikn)."
@@ -470,7 +470,7 @@ msgstr "Det er for langt! Ein notis kan berre innehalde 140 teikn."
 msgid "Not found"
 msgstr "Fann ikkje"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -601,7 +601,7 @@ msgid "Preview"
 msgstr "Forhandsvis"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Slett"
 
@@ -614,13 +614,13 @@ msgid "Crop"
 msgstr "Skaler"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -693,7 +693,7 @@ msgstr "Jau"
 msgid "Block this user"
 msgstr "Blokkér denne brukaren"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Lagring av informasjon feila."
 
@@ -768,7 +768,7 @@ msgstr "Den addressa har alt blitt bekrefta."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Kan ikkje oppdatera brukar."
@@ -833,7 +833,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Slett denne notisen"
 
@@ -982,7 +982,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1493,7 +1493,7 @@ 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrator"
 
@@ -1586,7 +1586,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Brukar har blokkert deg."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Feil ved fjerning av blokka."
 
@@ -1769,7 +1769,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Send"
 
@@ -1888,7 +1888,7 @@ msgstr "Feil brukarnamn eller passord"
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ikkje autorisert."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logg inn"
@@ -2003,7 +2003,7 @@ msgstr "Melding"
 msgid "Direct message to %s sent"
 msgstr "Direkte melding til %s sendt"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax feil"
 
@@ -2011,7 +2011,7 @@ msgstr "Ajax feil"
 msgid "New notice"
 msgstr "Ny notis"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Melding lagra"
 
@@ -2450,72 +2450,81 @@ msgstr "Plassering"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Kvar er du, t.d. «By, Fylke (eller Region), Land»"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Merkelappar"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "merkelappar for deg sjølv ( bokstavar, nummer, -, ., og _ ), komma eller "
 "mellomroms separert."
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Språk"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Foretrukke språk"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Tidssone"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Kva tidssone er du vanlegvis i?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Automatisk ting notisane til dei som tingar mine (best for ikkje-menneskje)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "«Om meg» er for lang (maks 140 "
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Tidssone er ikkje valt."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Språk er for langt (maksimalt 50 teikn)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ugyldig merkelapp: %s"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Kan ikkje oppdatera brukar for automatisk tinging."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Kan ikkje lagra merkelapp."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Kan ikkje lagra profil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Kan ikkje lagra merkelapp."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Lagra innstillingar."
 
@@ -2613,7 +2622,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Emne sky"
 
@@ -2752,7 +2761,7 @@ msgstr "Feil med stadfestingskode."
 msgid "Registration successful"
 msgstr "Registreringa gikk bra"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrér"
@@ -2949,7 +2958,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Lag"
@@ -4088,16 +4097,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Du kan ikkje lengre legge inn notisar på denne sida."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Eit problem oppstod ved lagring av notis."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Databasefeil, kan ikkje lagra svar: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4153,131 +4162,131 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Ingen tittel"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navigasjon for hovudsida"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Heim"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Personleg profil og oversyn over vener"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Konto"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Endra e-posten, avataren, passordet eller profilen"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Kopla til"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Klarte ikkje å omdirigera til tenaren: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Navigasjon for hovudsida"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Invitér"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Logg ut"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Logg ut or sida"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Opprett ny konto"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Logg inn or sida"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hjelp"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Hjelp meg!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Søk"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Søk etter folk eller innhald"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Statusmelding"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Lokale syningar"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Sidenotis"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Andrenivås side navigasjon"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "OSS"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Personvern"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Kjeldekode"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "Dult"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNets programvarelisens"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4286,12 +4295,12 @@ msgstr ""
 "**%%site.name%%** er ei mikrobloggingteneste av [%%site.broughtby%%](%%site."
 "broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** er ei mikrobloggingteneste. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4302,32 +4311,32 @@ msgstr ""
 "%s, tilgjengeleg under [GNU Affero General Public License](http://www.fsf."
 "org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNets programvarelisens"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Alle"
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "lisens."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginering"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "« Etter"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Før »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Det var eit problem med sesjons billetten din."
 
@@ -4387,6 +4396,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Endra passord"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Endra passord"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultat frå kommandoen"
@@ -5076,7 +5095,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " frå "
@@ -5141,72 +5160,76 @@ msgstr "Send ei direkte melding"
 msgid "To"
 msgstr "Til"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Tilgjenglege teikn"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Send ei melding"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Kva skjer, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "Nei"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Ingen innhald."
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Lag"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Svar på denne notisen"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Svar"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Melding lagra"
index f57cbd1004ea2e9b3c8185a80529220405884be2..63fb0d9d775031cce14ef797084a649ae3c888f5 100644 (file)
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:06+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:18+0000\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <pl@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pl\n"
 "X-Message-Group: out-statusnet\n"
@@ -203,11 +203,11 @@ msgstr "Nie można zaktualizować wyglądu."
 msgid "You cannot block yourself!"
 msgstr "Nie można zablokować siebie."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Zablokowanie użytkownika nie powiodło się."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Odblokowanie użytkownika nie powiodło się."
 
@@ -322,31 +322,31 @@ msgid "Could not find target user."
 msgstr "Nie można odnaleźć użytkownika docelowego."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Pseudonim może zawierać tylko małe litery i cyfry, bez spacji."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Pseudonim jest już używany. Spróbuj innego."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "To nie jest prawidłowy pseudonim."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Strona domowa nie jest prawidłowym adresem URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Imię i nazwisko jest za długie (maksymalnie 255 znaków)."
@@ -357,7 +357,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Opis jest za długi (maksymalnie %d znaków)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Położenie jest za długie (maksymalnie 255 znaków)."
@@ -472,7 +472,7 @@ msgstr "Wpis jest za długi. Maksymalna długość wynosi %d znaków."
 msgid "Not found"
 msgstr "Nie odnaleziono"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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."
@@ -601,7 +601,7 @@ msgid "Preview"
 msgstr "Podgląd"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Usuń"
 
@@ -614,13 +614,13 @@ msgid "Crop"
 msgstr "Przytnij"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -693,7 +693,7 @@ msgstr "Tak"
 msgid "Block this user"
 msgstr "Zablokuj tego użytkownika"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Zapisanie informacji o blokadzie nie powiodło się."
 
@@ -765,7 +765,7 @@ msgstr "Ten adres został już potwierdzony."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Nie można zaktualizować użytkownika."
@@ -827,7 +827,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Usuń ten wpis"
 
@@ -963,7 +963,7 @@ 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:167
+#: 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
@@ -1460,7 +1460,7 @@ msgstr "Członkowie grupy %s, strona %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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administrator"
 
@@ -1558,7 +1558,7 @@ msgstr "Tylko administrator może odblokowywać członków grupy."
 msgid "User is not blocked from group."
 msgstr "Użytkownik nie został zablokowany w grupie."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Błąd podczas usuwania blokady."
 
@@ -1744,7 +1744,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Wyślij"
 
@@ -1866,7 +1866,7 @@ 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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Zaloguj się"
@@ -1979,7 +1979,7 @@ msgstr "Wysłano wiadomość"
 msgid "Direct message to %s sent"
 msgstr "Wysłano bezpośrednią wiadomość do użytkownika %s"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Błąd AJAX"
 
@@ -1987,7 +1987,7 @@ msgstr "Błąd AJAX"
 msgid "New notice"
 msgstr "Nowy wpis"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Wysłano wpis"
 
@@ -2418,72 +2418,80 @@ msgstr "Położenie"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Gdzie jesteś, np. \"miasto, województwo (lub region), kraj\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Podziel się swoim obecnym położeniem podczas wysyłania wpisów"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Znaczniki"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Znaczniki dla siebie (litery, liczby, -, . i _), oddzielone przecinkami lub "
 "spacjami"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Język"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Preferowany język"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Strefa czasowa"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "W jakiej strefie czasowej zwykle się znajdujesz?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Automatycznie subskrybuj każdego, kto mnie subskrybuje (najlepsze dla botów)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Wpis \"O mnie\" jest za długi (maksymalnie %d znaków)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Nie wybrano strefy czasowej."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Język jest za długi (maksymalnie 50 znaków)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Nieprawidłowy znacznik: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Nie można zaktualizować użytkownika do automatycznej subskrypcji."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Nie można zapisać preferencji położenia."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Nie można zapisać profilu."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Nie można zapisać znaczników."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Zapisano ustawienia."
 
@@ -2589,7 +2597,7 @@ msgstr ""
 "Dlaczego nie [zarejestrujesz konta](%%action.register%%) i zostaniesz "
 "pierwszym, który go wyśle."
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Chmura znaczników"
 
@@ -2729,7 +2737,7 @@ msgstr "Nieprawidłowy kod zaproszenia."
 msgid "Registration successful"
 msgstr "Rejestracja powiodła się"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Zarejestruj się"
@@ -2921,7 +2929,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Powtórzono"
 
@@ -4073,16 +4081,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Zabroniono ci wysyłania wpisów na tej stronie."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problem podczas zapisywania wpisu."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Błąd bazy danych podczas wprowadzania odpowiedzi: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4137,128 +4145,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Strona bez nazwy"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Główna nawigacja strony"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Strona domowa"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Profil osobisty i oś czasu przyjaciół"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Konto"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Zmień adres e-mail, awatar, hasło, profil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Połącz"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Połącz z serwisami"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Zmień konfigurację strony"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Zaproś"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Wyloguj się"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Wyloguj się ze strony"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Utwórz konto"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Zaloguj się na stronę"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Pomoc"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Pomóż mi."
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Wyszukaj"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Wyszukaj osoby lub tekst"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Wpis strony"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Lokalne widoki"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Wpis strony"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Druga nawigacja strony"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "O usłudze"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Prywatność"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Kod źródłowy"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Odznaka"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licencja oprogramowania StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4267,12 +4275,12 @@ msgstr ""
 "**%%site.name%%** jest usługą mikroblogowania prowadzoną przez [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** jest usługą mikroblogowania. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4283,31 +4291,31 @@ 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:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licencja zawartości strony"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Wszystko "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licencja."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginacja"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Później"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Wcześniej"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Wystąpił problem z tokenem sesji."
 
@@ -4359,6 +4367,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Zmiana hasła"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Zmiana hasła"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Wyniki polecenia"
@@ -4566,7 +4584,6 @@ msgstr[1] "Jesteś członkiem tych grup:"
 msgstr[2] "Jesteś członkiem tych grup:"
 
 #: lib/command.php:745
-#, fuzzy
 msgid ""
 "Commands:\n"
 "on - turn on notifications\n"
@@ -4610,38 +4627,41 @@ msgstr ""
 "on - włącza powiadomienia\n"
 "off - wyłącza powiadomienia\n"
 "help - wyświetla tę pomoc\n"
-"follow <pseudonim> - subskrybuje użytkownika\n"
-"groups - wyświetla listę grup, do których dołączono\n"
+"follow <pseudonim> - włącza obserwowanie użytkownika\n"
+"groups - wyświetla listę grup, do których dołączyłeś\n"
 "subscriptions - wyświetla listę obserwowanych osób\n"
 "subscribers - wyświetla listę osób, które cię obserwują\n"
-"leave <pseudonim> - rezygnuje z subskrypcji użytkownika\n"
+"leave <pseudonim> - rezygnuje z obserwowania użytkownika\n"
 "d <pseudonim> <tekst> - bezpośrednia wiadomość do użytkownika\n"
-"get <pseudonim> - uzyskuje ostatni wpis użytkownika\n"
-"whois <pseudonim> - uzyskuje informacje o profilu użytkownika\n"
+"get <pseudonim> - zwraca ostatni wpis użytkownika\n"
+"whois <pseudonim> - zwraca informacje o profilu użytkownika\n"
 "fav <pseudonim> - dodaje ostatni wpis użytkownika jako \"ulubiony\"\n"
 "fav #<identyfikator_wpisu> - dodaje wpis z podanym identyfikatorem jako "
 "\"ulubiony\"\n"
+"repeat #<identyfikator_wpisu> - powtarza wiadomość z zadanym "
+"identyfikatorem\n"
+"repeat <pseudonim> - powtarza ostatnią wiadomość od użytkownika\n"
 "reply #<identyfikator_wpisu> - odpowiada na wpis z podanym identyfikatorem\n"
 "reply <pseudonim> - odpowiada na ostatni wpis użytkownika\n"
 "join <grupa> - dołącza do grupy\n"
-"login - uzyskuje odnośnik do logowania do interfejsu WWW\n"
+"login - pobiera odnośnik do zalogowania się do interfejsu WWW\n"
 "drop <grupa> - opuszcza grupę\n"
-"stats - uzyskuje statystyki\n"
+"stats - pobiera statystyki\n"
 "stop - to samo co \"off\"\n"
 "quit - to samo co \"off\"\n"
 "sub <pseudonim> - to samo co \"follow\"\n"
 "unsub <pseudonim> - to samo co \"leave\"\n"
 "last <pseudonim> - to samo co \"get\"\n"
-"on <pseudonim> - jeszcze nie zaimplementowano.\n"
-"off <pseudonim> - jeszcze nie zaimplementowano.\n"
-"nudge <pseudonim> - przypomina użytkownikowi o aktualizacji.\n"
-"invite <numer telefonu> - jeszcze nie zaimplementowano.\n"
-"track <wyraz> - jeszcze nie zaimplementowano.\n"
-"untrack <wyraz> - jeszcze nie zaimplementowano.\n"
-"track off - jeszcze nie zaimplementowano.\n"
-"untrack all - jeszcze nie zaimplementowano.\n"
-"tracks - jeszcze nie zaimplementowano.\n"
-"tracking - jeszcze nie zaimplementowano.\n"
+"on <pseudonim> - jeszcze nie zaimplementowano\n"
+"off <pseudonim> - jeszcze nie zaimplementowano\n"
+"nudge <pseudonim> - przypomina użytkownikowi o aktualizacji\n"
+"invite <numer telefonu> - jeszcze nie zaimplementowano\n"
+"track <wyraz> - jeszcze nie zaimplementowano\n"
+"untrack <wyraz> - jeszcze nie zaimplementowano\n"
+"track off - jeszcze nie zaimplementowano\n"
+"untrack all - jeszcze nie zaimplementowano\n"
+"tracks - jeszcze nie zaimplementowano\n"
+"tracking - jeszcze nie zaimplementowano\n"
 
 #: lib/common.php:199
 msgid "No configuration file found. "
@@ -5157,7 +5177,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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "z"
 
@@ -5222,69 +5242,73 @@ msgstr "Wyślij bezpośredni wpis"
 msgid "To"
 msgstr "Do"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Dostępne znaki"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Wyślij wpis"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Co słychać, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Załącz"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Załącz plik"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Podziel się swoim położeniem"
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "Północ"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "Południe"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "Wschód"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "Zachód"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "w"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "w rozmowie"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Powtórzone przez"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Odpowiedz na ten wpis"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Odpowiedz"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Powtórzono wpis"
 
index 92f7def374a78a1fe80b71dd3439c928254a7163..9e0172663652aeac1b3087b72e80a02d0b082b87 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:09+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:21+0000\n"
 "Language-Team: Portuguese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pt\n"
 "X-Message-Group: out-statusnet\n"
@@ -197,11 +197,11 @@ msgstr "Não foi possível actualizar o seu design."
 msgid "You cannot block yourself!"
 msgstr "Os utilizadores não podem bloquear-se a si próprios!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Bloqueio do utilizador falhou."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Desbloqueio do utilizador falhou."
 
@@ -315,31 +315,31 @@ msgid "Could not find target user."
 msgstr "Não foi possível encontrar o utilizador de destino."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Alcunha só deve conter letras minúsculas e números. Sem espaços."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Alcunha já é usada. Tente outra."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Alcunha não é válida."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Página de acolhimento não é uma URL válida."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Nome completo demasiado longo (máx. 255 caracteres)."
@@ -350,7 +350,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Descrição demasiado longa (máx. 140 caracteres)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Localidade demasiado longa (máx. 255 caracteres)."
@@ -465,7 +465,7 @@ msgstr "Demasiado longo. Tamanho máx. das notas é %d caracteres."
 msgid "Not found"
 msgstr "Não encontrado"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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."
@@ -594,7 +594,7 @@ msgid "Preview"
 msgstr "Antevisão"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Apagar"
 
@@ -607,13 +607,13 @@ msgid "Crop"
 msgstr "Cortar"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -687,7 +687,7 @@ msgstr "Sim"
 msgid "Block this user"
 msgstr "Bloquear este utilizador"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Não foi possível gravar informação do bloqueio."
 
@@ -759,7 +759,7 @@ msgstr "Esse endereço já tinha sido confirmado."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Não foi possível actualizar o utilizador."
@@ -821,7 +821,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Apagar esta nota"
 
@@ -960,7 +960,7 @@ 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:167
+#: 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
@@ -1208,7 +1208,7 @@ msgstr "Esta nota já é uma favorita!"
 
 #: actions/favor.php:92 lib/disfavorform.php:140
 msgid "Disfavor favorite"
-msgstr "Desfavorecer favorita"
+msgstr "Retirar das favoritas"
 
 #: actions/favorited.php:65 lib/popularnoticesection.php:88
 #: lib/publicgroupnav.php:93
@@ -1464,7 +1464,7 @@ msgstr "Membros do grupo %s, página %d"
 msgid "A list of the users in this group."
 msgstr "Uma lista dos utilizadores neste grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1562,7 +1562,7 @@ msgstr "Só um administrador pode desbloquear membros de um grupo."
 msgid "User is not blocked from group."
 msgstr "Acesso do utilizador ao grupo não foi bloqueado."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Erro ao remover o bloqueio."
 
@@ -1749,7 +1749,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Enviar"
 
@@ -1864,13 +1864,13 @@ msgstr "Chave inválida ou expirada."
 
 #: actions/login.php:147
 msgid "Incorrect username or password."
-msgstr "Nome de utilizador ou palavra-passe incorrectos."
+msgstr "Nome de utilizador ou palavra-chave incorrectos."
 
 #: actions/login.php:153
 msgid "Error setting user. You are probably not authorized."
 msgstr "Erro ao preparar o utilizador. Provavelmente não está autorizado."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Entrar"
@@ -1902,7 +1902,7 @@ msgstr ""
 
 #: actions/login.php:267
 msgid "Lost or forgotten password?"
-msgstr "Perdeu ou esqueceu-se da palavra-passe?"
+msgstr "Perdeu ou esqueceu-se da palavra-chave?"
 
 #: actions/login.php:286
 msgid ""
@@ -1910,7 +1910,7 @@ msgid ""
 "changing your settings."
 msgstr ""
 "Por razões de segurança, por favor reintroduza o seu nome de utilizador e "
-"palavra-passe antes de alterar as suas configurações."
+"palavra-chave antes de alterar as configurações."
 
 #: actions/login.php:290
 #, php-format
@@ -1983,7 +1983,7 @@ msgstr "Mensagem enviada"
 msgid "Direct message to %s sent"
 msgstr "Mensagem directa para %s enviada"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Erro do Ajax"
 
@@ -1991,7 +1991,7 @@ msgstr "Erro do Ajax"
 msgid "New notice"
 msgstr "Nota nova"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Nota publicada"
 
@@ -2220,7 +2220,7 @@ msgstr "Sem acesso de escrita no directório do fundo: %s"
 #: actions/pathsadminpanel.php:160
 #, php-format
 msgid "Locales directory not readable: %s"
-msgstr "Sem acesso de leitura do directório do locales: %s"
+msgstr "Sem acesso de leitura ao directório do locales: %s"
 
 #: actions/pathsadminpanel.php:166
 msgid "Invalid SSL server. The maximum length is 255 characters."
@@ -2423,72 +2423,80 @@ msgstr "Localidade"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Onde está, por ex. \"Cidade, Região, País\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Compartilhar a minha localização presente ao publicar notas"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Categorias"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Categorias para si (letras, números, -, ., _), separadas por vírgulas ou "
 "espaços"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Língua"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Língua preferida"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuso horário"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Em que fuso horário se encontra normalmente?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Subscrever automaticamente quem me subscreva (óptimo para seres não-humanos)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Biografia demasiado extensa (máx. %d caracteres)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Fuso horário não foi seleccionado."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Língua é demasiado extensa (máx. 50 caracteres)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Categoria inválida: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Não foi possível actualizar o utilizador para subscrição automática."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Não foi possível gravar as preferências de localização."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Não foi possível gravar o perfil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Não foi possível gravar as categorias."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Configurações gravadas."
 
@@ -2597,7 +2605,7 @@ msgstr ""
 "Podia [registar uma conta](%%action.register%%) e ser a primeira pessoa a "
 "publicar uma!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Nuvem de categorias"
 
@@ -2726,7 +2734,7 @@ msgstr "Erro ao configurar utilizador."
 
 #: actions/recoverpassword.php:382
 msgid "New password successfully saved. You are now logged in."
-msgstr "Nova palavra-passe foi guardada com sucesso. Está agora conectado."
+msgstr "A palavra-chave nova foi gravada com sucesso. Iniciou uma sessão."
 
 #: actions/register.php:85 actions/register.php:189 actions/register.php:404
 msgid "Sorry, only invited people can register."
@@ -2740,7 +2748,7 @@ msgstr "Desculpe, código de convite inválido."
 msgid "Registration successful"
 msgstr "Registo efectuado"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registar"
@@ -2932,7 +2940,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Repetida"
 
@@ -4081,16 +4089,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Está proibido de publicar notas neste site."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problema na gravação da nota."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Ocorreu um erro na base de dados ao inserir a resposta: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4118,7 +4126,7 @@ msgstr "Carregar um avatar"
 
 #: lib/accountsettingsaction.php:116
 msgid "Change your password"
-msgstr "Modificar a sua palavra-passe"
+msgstr "Modificar a sua palavra-chave"
 
 #: lib/accountsettingsaction.php:120
 msgid "Change email handling"
@@ -4145,128 +4153,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Página sem título"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navegação primária deste site"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Início"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Perfil pessoal e notas dos amigos"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Conta"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Altere o seu endereço electrónico, avatar, palavra-chave, perfil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Ligar"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Ligar aos serviços"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Alterar a configuração do site"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convidar"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Terminar esta sessão"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Criar uma conta"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Iniciar uma sessão"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Ajudem-me!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Pesquisa"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Procurar pessoas ou pesquisar texto"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Aviso do site"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Vistas locais"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Aviso da página"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Navegação secundária deste site"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "Condições do Serviço"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Código"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contacto"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Emblema"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Licença de software do StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4275,12 +4283,12 @@ msgstr ""
 "**%%site.name%%** é um serviço de microblogues disponibilizado por [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** é um serviço de microblogues. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4291,31 +4299,31 @@ msgstr ""
 "disponibilizado nos termos da [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licença de conteúdos do site"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Tudo "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licença."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginação"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
-msgstr "Depois"
+msgstr "Posteriores"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
-msgstr "Antes"
+msgstr "Anteriores"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Ocorreu um problema com a sua chave de sessão."
 
@@ -4367,6 +4375,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Mudança da palavra-chave"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Mudança da palavra-chave"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultados do comando"
@@ -4697,15 +4715,15 @@ msgstr "Predefinições do design repostas"
 
 #: lib/disfavorform.php:114 lib/disfavorform.php:140
 msgid "Disfavor this notice"
-msgstr "Desfavorecer esta nota"
+msgstr "Retirar esta nota das favoritas"
 
 #: lib/favorform.php:114 lib/favorform.php:140
 msgid "Favor this notice"
-msgstr "Favorecer esta nota"
+msgstr "Eleger esta nota como favorita"
 
 #: lib/favorform.php:140
 msgid "Favor"
-msgstr "Favorecer"
+msgstr "Eleger como favorita"
 
 #: lib/feed.php:85
 msgid "RSS 1.0"
@@ -5160,7 +5178,7 @@ msgstr ""
 "conversa com outros utilizadores. Outros podem enviar-lhe mensagens, a que "
 "só você terá acesso."
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "de"
 
@@ -5228,69 +5246,73 @@ msgstr "Enviar uma nota directa"
 msgid "To"
 msgstr "Para"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Caracteres disponíveis"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Enviar uma nota"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Novidades, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Anexar"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Anexar um ficheiro"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Compartilhe a sua localização"
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "E"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "O"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "coords."
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "em contexto"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Repetida por"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Responder a esta nota"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Nota repetida"
 
@@ -5420,9 +5442,8 @@ msgid "Popular"
 msgstr "Populares"
 
 #: lib/repeatform.php:107
-#, fuzzy
 msgid "Repeat this notice?"
-msgstr "Repetir esta nota"
+msgstr "Repetir esta nota?"
 
 #: lib/repeatform.php:132
 msgid "Repeat this notice"
index 69329e074c567d4239c01d6301b56b59ad582ce5..72f9897f2f6f42d74bae36e89f68af7cc968ac5a 100644 (file)
@@ -1,7 +1,7 @@
 # Translation of StatusNet to Brazilian Portuguese
 #
+# Author@translatewiki.net: Aracnus
 # Author@translatewiki.net: Ewout
-# Author@translatewiki.net: McDutchie
 # Author@translatewiki.net: Vuln
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:12+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:24+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pt-br\n"
 "X-Message-Group: out-statusnet\n"
@@ -24,7 +24,7 @@ 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"
-msgstr "Essa página não existe."
+msgstr "Esta página não existe."
 
 #: actions/all.php:74 actions/allrss.php:68
 #: actions/apiaccountupdatedeliverydevice.php:113
@@ -50,7 +50,7 @@ msgstr "Essa página não existe."
 #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
 #: lib/subs.php:34 lib/subs.php:116
 msgid "No such user."
-msgstr "Usuário não encontrado."
+msgstr "Este usuário não existe."
 
 #: actions/all.php:84
 #, php-format
@@ -65,25 +65,27 @@ msgid "%s and friends"
 msgstr "%s e amigos"
 
 #: actions/all.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for friends of %s (RSS 1.0)"
-msgstr "Feed para os amigos de %s"
+msgstr "Fonte de mensagens dos amigos de %s (RSS 1.0)"
 
 #: actions/all.php:107
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for friends of %s (RSS 2.0)"
-msgstr "Feed para os amigos de %s"
+msgstr "Fonte de mensagens dos amigos de %s (RSS 2.0)"
 
 #: actions/all.php:115
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for friends of %s (Atom)"
-msgstr "Feed para os amigos de %s"
+msgstr "Fonte de mensagens dos amigos de %s (Atom)"
 
 #: actions/all.php:127
 #, php-format
 msgid ""
 "This is the timeline for %s and friends but no one has posted anything yet."
 msgstr ""
+"Esse é o fluxo de mensagens de %s e seus amigos, mas ninguém publicou nada "
+"ainda."
 
 #: actions/all.php:132
 #, php-format
@@ -91,6 +93,8 @@ msgid ""
 "Try subscribing to more people, [join a group](%%action.groups%%) or post "
 "something yourself."
 msgstr ""
+"Tente assinar mais pessoas, [unir-ser a um grupo](%%action.groups%%) ou "
+"publicar algo."
 
 #: actions/all.php:134
 #, php-format
@@ -98,6 +102,9 @@ msgid ""
 "You can try to [nudge %s](../%s) from his profile or [post something to his "
 "or her attention](%%%%action.newnotice%%%%?status_textarea=%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)."
 
 #: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
 #, php-format
@@ -105,6 +112,8 @@ msgid ""
 "Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
 "post a notice to his or her attention."
 msgstr ""
+"Por que não [registrar uma conta](%%%%action.register%%%%) e então chamar a "
+"atenção de %s ou publicar uma mensagem para sua atenção."
 
 #: actions/all.php:165
 msgid "You and friends"
@@ -121,7 +130,6 @@ msgstr "Atualizações de %1$s e amigos no %2$s!"
 #: actions/apiaccountupdateprofile.php:97
 #: actions/apiaccountupdateprofilebackgroundimage.php:94
 #: actions/apiaccountupdateprofilecolors.php:118
-#, fuzzy
 msgid "API method not found."
 msgstr "O método da API não foi encontrado!"
 
@@ -144,9 +152,10 @@ msgid ""
 "You must specify a parameter named 'device' with a value of one of: sms, im, "
 "none"
 msgstr ""
+"Você pode especificar um parâmetro denominado 'device', com um dos valores: "
+"sms, im, none"
 
 #: actions/apiaccountupdatedeliverydevice.php:132
-#, fuzzy
 msgid "Could not update user."
 msgstr "Não foi possível atualizar o usuário."
 
@@ -160,7 +169,6 @@ msgid "User has no profile."
 msgstr "O usuário não tem perfil."
 
 #: actions/apiaccountupdateprofile.php:147
-#, fuzzy
 msgid "Could not save profile."
 msgstr "Não foi possível salvar o perfil."
 
@@ -174,31 +182,30 @@ msgid ""
 "The server was unable to handle that much POST data (%s bytes) due to its "
 "current configuration."
 msgstr ""
+"O servidor não conseguiu manipular a quantidade de dados do POST (%s bytes) "
+"devido à sua configuração atual."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:136
 #: actions/apiaccountupdateprofilebackgroundimage.php:146
 #: actions/apiaccountupdateprofilecolors.php:164
 #: actions/apiaccountupdateprofilecolors.php:174
-#, fuzzy
 msgid "Unable to save your design settings."
-msgstr "Não foi possível salvar suas configurações do Twitter!"
+msgstr "Não foi possível salvar suas configurações de aparência."
 
 #: actions/apiaccountupdateprofilebackgroundimage.php:187
 #: actions/apiaccountupdateprofilecolors.php:142
-#, fuzzy
 msgid "Could not update your design."
-msgstr "Não foi possível atualizar o usuário."
+msgstr "Não foi possível atualizar a sua aparência."
 
 #: actions/apiblockcreate.php:105
-#, fuzzy
 msgid "You cannot block yourself!"
-msgstr "Não foi possível atualizar o usuário."
+msgstr "Você não pode bloquear a si mesmo!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Não foi possível bloquear o usuário."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Não foi possível desbloquear o usuário."
 
@@ -215,7 +222,7 @@ msgstr "Todas as mensagens diretas enviadas por %s"
 #: actions/apidirectmessage.php:101
 #, php-format
 msgid "Direct messages to %s"
-msgstr "Mensagem direta para %s"
+msgstr "Mensagens diretas para %s"
 
 #: actions/apidirectmessage.php:105
 #, php-format
@@ -249,7 +256,7 @@ msgstr "Nenhuma mensagem de texto!"
 #: actions/apidirectmessagenew.php:135 actions/newmessage.php:150
 #, php-format
 msgid "That's too long. Max message size is %d chars."
-msgstr "Isso é muito extenso. O tamanho máximo das mensagens é 140 caracteres."
+msgstr "Isso é muito extenso. O tamanho máximo das mensagens é %d caracteres."
 
 #: actions/apidirectmessagenew.php:146
 msgid "Recipient user not found."
@@ -258,7 +265,7 @@ msgstr "O usuário destinatário não foi encontrado."
 #: actions/apidirectmessagenew.php:150
 msgid "Can't send direct messages to users who aren't your friend."
 msgstr ""
-"Não é possível enviar mensagens diretas para usuários que não são seus "
+"Não é possível enviar mensagens diretas para usuários que não sejam seus "
 "amigos."
 
 #: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109
@@ -276,7 +283,7 @@ msgstr "Não foi possível criar a favorita."
 
 #: actions/apifavoritedestroy.php:122
 msgid "That status is not a favorite!"
-msgstr "Essa mensagem não é uma favorita!"
+msgstr "Essa mensagem não é favorita!"
 
 #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
 msgid "Could not delete favorite."
@@ -292,98 +299,96 @@ msgid "Could not follow user: %s is already on your list."
 msgstr "Não é possível seguir o usuário: %s já está na sua lista."
 
 #: actions/apifriendshipsdestroy.php:109
-#, fuzzy
 msgid "Could not unfollow user: User not found."
-msgstr "Não é possível seguir o usuário: Usuário não encontrado."
+msgstr "Não é possível deixar de seguir o usuário: Usuário não encontrado."
 
 #: actions/apifriendshipsdestroy.php:120
 msgid "You cannot unfollow yourself!"
-msgstr ""
+msgstr "Você não pode deixar de seguir você mesmo!"
 
 #: actions/apifriendshipsexists.php:94
 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
-#, fuzzy
 msgid "Could not determine source user."
-msgstr "Não foi possível recuperar o fluxo público."
+msgstr "Não foi possível determinar o usuário de origem."
 
 #: actions/apifriendshipsshow.php:143
 msgid "Could not find target user."
-msgstr "Não foi possível encontrar usuário alvo."
+msgstr "Não foi possível encontrar usuário de destino."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
-"O apelido deve conter apenas letras minúsculas e/ou números e não pode ter "
-"acentuação e espaços."
+"A identificação deve conter apenas letras minúsculas e números e não pode "
+"ter e espaços."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
-msgstr "Este apelido já está em uso. Tente outro."
+msgstr "Esta identificação já está em uso. Tente outro."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
-msgstr "Não é um apelido válido."
+msgstr "Não é uma identificação válida."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
-msgstr "A URL do site informada não é válida."
+msgstr "A URL informada não é válida."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
-msgstr "O nome completo é muito extenso (máx. 255 caracteres)"
+msgstr "Nome completo muito extenso (máx. 255 caracteres)"
 
 #: actions/apigroupcreate.php:213
 #, php-format
 msgid "Description is too long (max %d chars)."
-msgstr "Descrição muito extensa (máximo 140 caracteres)."
+msgstr "Descrição muito extensa (máximo %d caracteres)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
-msgstr "A localização é muito extensa (máx. 255 caracteres)."
+msgstr "Localização muito extensa (máx. 255 caracteres)."
 
 #: actions/apigroupcreate.php:243 actions/editgroup.php:215
 #: actions/newgroup.php:159
 #, php-format
 msgid "Too many aliases! Maximum %d."
-msgstr ""
+msgstr "Muitos apelidos! O máximo são %d."
 
 #: actions/apigroupcreate.php:264 actions/editgroup.php:224
 #: actions/newgroup.php:168
 #, php-format
 msgid "Invalid alias: \"%s\""
-msgstr "Tag inválida: \"%s\""
+msgstr "Apelido 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 "Este apelido já está em uso. Tente outro."
+msgstr "O apelido \"%s\" já está em uso. Tente outro."
 
 #: actions/apigroupcreate.php:286 actions/editgroup.php:234
 #: actions/newgroup.php:178
 msgid "Alias can't be the same as nickname."
-msgstr ""
+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
 msgid "Group not found!"
-msgstr "Grupo não encontrado."
+msgstr "O grupo não foi encontrado!"
 
 #: actions/apigroupjoin.php:110
 msgid "You are already a member of that group."
@@ -391,12 +396,12 @@ msgstr "Você já é membro desse 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 "Você foi bloqueado desse grupo pelo administrador."
+msgstr "O administrador desse grupo bloqueou sua inscrição."
 
 #: actions/apigroupjoin.php:138
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s."
-msgstr "Não é possível acompanhar o usuário: Usuário não encontrado."
+msgstr "Não foi possível associar o usuário %s ao grupo %s."
 
 #: actions/apigroupleave.php:114
 msgid "You are not a member of this group."
@@ -405,17 +410,17 @@ msgstr "Você não é membro deste grupo."
 #: actions/apigroupleave.php:124
 #, php-format
 msgid "Could not remove user %s to group %s."
-msgstr "Não foi possível remover o usuário %s do grupo %."
+msgstr "Não foi possível remover o usuário %s do grupo %s."
 
 #: actions/apigrouplist.php:95
-#, fuzzy, php-format
+#, php-format
 msgid "%s's groups"
 msgstr "Grupos de %s"
 
 #: actions/apigrouplist.php:103
-#, fuzzy, php-format
+#, php-format
 msgid "Groups %s is a member of on %s."
-msgstr "O grupo %s é membro de"
+msgstr "Os grupos dos quais %s é membro no %s."
 
 #: actions/apigrouplistall.php:90 actions/usergroups.php:62
 #, php-format
@@ -423,17 +428,17 @@ msgid "%s groups"
 msgstr "Grupos de %s"
 
 #: actions/apigrouplistall.php:94
-#, fuzzy, php-format
+#, php-format
 msgid "groups on %s"
-msgstr "Outras opções"
+msgstr "grupos no %s"
 
 #: actions/apistatusesdestroy.php:107
 msgid "This method requires a POST or DELETE."
-msgstr "Este método requer POSTAGEM ou EXCLUSÃO."
+msgstr "Esse método requer um POST ou DELETE."
 
 #: actions/apistatusesdestroy.php:130
 msgid "You may not delete another user's status."
-msgstr "Você não pode apagar o status de outro usuário."
+msgstr "Você não pode excluir uma mensagem de outro usuário."
 
 #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
 #: actions/deletenotice.php:52 actions/shownotice.php:92
@@ -441,42 +446,39 @@ msgid "No such notice."
 msgstr "Essa mensagem não existe."
 
 #: actions/apistatusesretweet.php:83
-#, fuzzy
 msgid "Cannot repeat your own notice."
-msgstr "Não é possível ligar a notificação."
+msgstr "Você não pode repetria sua própria mensagem."
 
 #: actions/apistatusesretweet.php:91
-#, fuzzy
 msgid "Already repeated that notice."
-msgstr "Excluir esta mensagem"
+msgstr "Você já repetiu essa mensagem."
 
 #: actions/apistatusesshow.php:138
 msgid "Status deleted."
-msgstr ""
+msgstr "A mensagem foi excluída."
 
 #: actions/apistatusesshow.php:144
 msgid "No status with that ID found."
-msgstr "Não foi encontrado nenhum status com esse ID."
+msgstr "Não foi encontrada nenhuma mensagem com esse ID."
 
 #: actions/apistatusesupdate.php:157 actions/newnotice.php:155
 #: scripts/maildaemon.php:71
 #, php-format
 msgid "That's too long. Max notice size is %d chars."
-msgstr "Está muito extenso. O tamanho máximo é de 140 caracteres."
+msgstr "Está muito extenso. O tamanho máximo é de %s caracteres."
 
 #: actions/apistatusesupdate.php:198
 msgid "Not found"
 msgstr "Não encontrado"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
-msgstr ""
+msgstr "O tamanho máximo da mensagem é de %s caracteres"
 
 #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
-#, fuzzy
 msgid "Unsupported format."
-msgstr "Formato de imagem não suportado."
+msgstr "Formato não suportado."
 
 #: actions/apitimelinefavorites.php:108
 #, php-format
@@ -486,7 +488,7 @@ msgstr "%s / Favoritas de %s"
 #: actions/apitimelinefavorites.php:120
 #, php-format
 msgid "%s updates favorited by %s / %s."
-msgstr "%s atualizações de favoritas por %s / %s."
+msgstr "%s marcadas como favoritas por %s / %s."
 
 #: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
 #: actions/grouprss.php:131 actions/userrss.php:90
@@ -498,17 +500,17 @@ msgstr "Mensagens de %s"
 #: actions/userrss.php:92
 #, php-format
 msgid "Updates from %1$s on %2$s!"
-msgstr "Atualizações de %1$s no %2$s!"
+msgstr "Mensagens de %1$s no %2$s!"
 
 #: actions/apitimelinementions.php:117
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s / Updates mentioning %2$s"
-msgstr "%1$s / Atualizações respondendo à %2$s"
+msgstr "%1$s / Mensagens mencionando %2$s"
 
 #: actions/apitimelinementions.php:127
 #, php-format
 msgid "%1$s updates that reply to updates from %2$s / %3$s."
-msgstr "%1$s atualizações que respondem a mensagens de %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
 #, php-format
@@ -518,46 +520,45 @@ msgstr "Mensagens públicas de %s"
 #: actions/apitimelinepublic.php:111 actions/publicrss.php:105
 #, php-format
 msgid "%s updates from everyone!"
-msgstr "%s atualizações de todo mundo!"
+msgstr "%s mensagens de todo mundo!"
 
 #: actions/apitimelineretweetedbyme.php:112
 #, php-format
 msgid "Repeated by %s"
-msgstr ""
+msgstr "Repetida por %s"
 
 #: actions/apitimelineretweetedtome.php:111
-#, fuzzy, php-format
+#, php-format
 msgid "Repeated to %s"
-msgstr "Respostas para %s"
+msgstr "Repetida para %s"
 
 #: actions/apitimelineretweetsofme.php:112
-#, fuzzy, php-format
+#, php-format
 msgid "Repeats of %s"
-msgstr "Respostas para %s"
+msgstr "Repetições de %s"
 
 #: actions/apitimelinetag.php:102 actions/tag.php:66
 #, php-format
 msgid "Notices tagged with %s"
-msgstr "Mensagens etiquetadas com %s"
+msgstr "Mensagens etiquetadas como %s"
 
 #: actions/apitimelinetag.php:108 actions/tagrss.php:64
-#, fuzzy, php-format
+#, php-format
 msgid "Updates tagged with %1$s on %2$s!"
-msgstr "Atualizações de %1$s no %2$s!"
+msgstr "Mensagens etiquetadas como %1$s no %2$s!"
 
 #: actions/apiusershow.php:96
 msgid "Not found."
 msgstr "Não encontrado."
 
 #: actions/attachment.php:73
-#, fuzzy
 msgid "No such attachment."
-msgstr "Esse documento não existe."
+msgstr "Este anexo não existe."
 
 #: actions/avatarbynickname.php:59 actions/grouprss.php:91
 #: actions/leavegroup.php:76
 msgid "No nickname."
-msgstr "Nenhum apelido."
+msgstr "Nenhuma identificação."
 
 #: actions/avatarbynickname.php:64
 msgid "No size."
@@ -575,7 +576,8 @@ msgstr "Avatar"
 #: actions/avatarsettings.php:78
 #, php-format
 msgid "You can upload your personal avatar. The maximum file size is %s."
-msgstr "Você pode enviar seu avatar pessoal. O tamanho máximo do arquivo é %s"
+msgstr ""
+"Você pode enviar seu avatar pessoal. O tamanho máximo do arquivo é de %s."
 
 #: actions/avatarsettings.php:106 actions/avatarsettings.php:185
 #: actions/grouplogo.php:178 actions/remotesubscribe.php:191
@@ -599,7 +601,7 @@ msgid "Preview"
 msgstr "Visualização"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Excluir"
 
@@ -612,13 +614,13 @@ msgid "Crop"
 msgstr "Cortar"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -641,7 +643,7 @@ msgstr "Selecione uma área quadrada da imagem para ser seu avatar"
 
 #: actions/avatarsettings.php:343 actions/grouplogo.php:377
 msgid "Lost our file data."
-msgstr "Nossos dados do arquivo foi perdido."
+msgstr "Os dados do nosso arquivo foram perdidos."
 
 #: actions/avatarsettings.php:366
 msgid "Avatar updated."
@@ -652,9 +654,8 @@ msgid "Failed updating avatar."
 msgstr "Não foi possível atualizar o avatar."
 
 #: actions/avatarsettings.php:393
-#, fuzzy
 msgid "Avatar deleted."
-msgstr "O avatar foi atualizado."
+msgstr "O avatar foi excluído."
 
 #: actions/block.php:69
 msgid "You already blocked that user."
@@ -670,6 +671,10 @@ msgid ""
 "unsubscribed from you, unable to subscribe to you in the future, and you "
 "will not be notified of any @-replies from them."
 msgstr ""
+"Tem certeza que deseja bloquear este usuário? Se fizer isso, ele deixará de "
+"assiná-lo e será incapaz de fazê-lo no futuro. Além disso, você não receberá "
+"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
@@ -677,9 +682,8 @@ msgid "No"
 msgstr "Não"
 
 #: actions/block.php:143 actions/deleteuser.php:147
-#, fuzzy
 msgid "Do not block this user"
-msgstr "Desbloquear este usuário"
+msgstr "Não bloquear este usuário"
 
 #: actions/block.php:144 actions/deletenotice.php:146
 #: actions/deleteuser.php:148 actions/groupblock.php:179
@@ -689,9 +693,9 @@ msgstr "Sim"
 
 #: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
 msgid "Block this user"
-msgstr "Bloquear usuário"
+msgstr "Bloquear este usuário"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Não foi possível salvar a informação de bloqueio."
 
@@ -710,23 +714,22 @@ msgid "No such group"
 msgstr "Esse grupo não existe"
 
 #: actions/blockedfromgroup.php:90
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked profiles"
-msgstr "O usuário não tem perfil."
+msgstr "Perfis bloqueados no %s"
 
 #: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked profiles, page %d"
-msgstr "%s e amigos, página %d"
+msgstr "Perfis bloqueados no %s, página %d"
 
 #: actions/blockedfromgroup.php:108
 msgid "A list of the users blocked from joining this group."
-msgstr ""
+msgstr "Uma lista dos usuários proibidos de se associarem a este grupo."
 
 #: actions/blockedfromgroup.php:281
-#, fuzzy
 msgid "Unblock user from group"
-msgstr "Não foi possível desbloquear o usuário."
+msgstr "Desbloquear o usuário do grupo"
 
 #: actions/blockedfromgroup.php:313 lib/unblockform.php:69
 msgid "Unblock"
@@ -738,7 +741,7 @@ msgstr "Desbloquear este usuário"
 
 #: actions/bookmarklet.php:50
 msgid "Post to "
-msgstr ""
+msgstr "Enviar para "
 
 #: actions/confirmaddress.php:75
 msgid "No confirmation code."
@@ -750,12 +753,12 @@ msgstr "O código de confirmação não foi encontrado."
 
 #: actions/confirmaddress.php:85
 msgid "That confirmation code is not for you!"
-msgstr "Esse código de confirmação não é seu!"
+msgstr "Esse não é o seu código de confirmação!"
 
 #: actions/confirmaddress.php:90
 #, php-format
 msgid "Unrecognized address type %s"
-msgstr "Tipo de endereço %s desconhecido"
+msgstr "Tipo de endereço desconhecido %s"
 
 #: actions/confirmaddress.php:94
 msgid "That address has already been confirmed."
@@ -764,7 +767,7 @@ msgstr "Esse endereço já foi confirmado."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Não foi possível atualizar o usuário."
@@ -784,9 +787,8 @@ msgid "The address \"%s\" has been confirmed for your account."
 msgstr "O endereço \"%s\" foi confirmado para sua conta."
 
 #: actions/conversation.php:99
-#, fuzzy
 msgid "Conversation"
-msgstr "Código de confirmação"
+msgstr "Conversa"
 
 #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87
 #: lib/profileaction.php:216 lib/searchgroupnav.php:82
@@ -801,7 +803,7 @@ msgstr "Mensagens"
 #: lib/adminpanelaction.php:72 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
 msgid "Not logged in."
-msgstr "Você não está logado."
+msgstr "Você não está autenticado."
 
 #: actions/deletenotice.php:71
 msgid "Can't delete this notice."
@@ -812,8 +814,8 @@ msgid ""
 "You are about to permanently delete a notice. Once this is done, it cannot "
 "be undone."
 msgstr ""
-"Você está prestes a apagar permanentemente uma mensagem. Isso não poderá ser "
-"desfeito."
+"Você está prestes a excluir permanentemente uma mensagem. Isso não poderá "
+"ser desfeito."
 
 #: actions/deletenotice.php:109 actions/deletenotice.php:141
 msgid "Delete notice"
@@ -821,32 +823,28 @@ msgstr "Excluir a mensagem"
 
 #: actions/deletenotice.php:144
 msgid "Are you sure you want to delete this notice?"
-msgstr "Você tem certeza que deseja excluir esta mensagem?"
+msgstr "Tem certeza que deseja excluir esta mensagem?"
 
 #: actions/deletenotice.php:145
-#, fuzzy
 msgid "Do not delete this notice"
-msgstr "Não é possível excluir esta mensagem."
+msgstr "Não excluir esta mensagem."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Excluir esta mensagem"
 
 #: actions/deletenotice.php:157
-#, fuzzy
 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."
+"Ocorreu um problema com o seu token de sessão. Por favor, tente novamente."
 
 #: actions/deleteuser.php:67
-#, fuzzy
 msgid "You cannot delete users."
-msgstr "Não foi possível atualizar o usuário."
+msgstr "Você não pode excluir usuários."
 
 #: actions/deleteuser.php:74
-#, fuzzy
 msgid "You can only delete local users."
-msgstr "Você não pode apagar o status de outro usuário."
+msgstr "Você só pode excluir usuários locais."
 
 #: actions/deleteuser.php:110 actions/deleteuser.php:133
 msgid "Delete user"
@@ -857,66 +855,59 @@ 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 ""
-"Você tem certeza que quer remover este usuário? Isso irá limpar todos os "
-"dados sobre o usuário do banco de dados, sem backup."
+"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."
 
 #: actions/deleteuser.php:148 lib/deleteuserform.php:77
-#, fuzzy
 msgid "Delete this user"
-msgstr "Excluir esta mensagem"
+msgstr "Excluir este usuário"
 
 #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
 #: lib/adminpanelaction.php:302 lib/groupnav.php:119
 msgid "Design"
-msgstr ""
+msgstr "Aparência"
 
 #: actions/designadminpanel.php:73
 msgid "Design settings for this StatusNet site."
-msgstr ""
+msgstr "Configurações da aparência deste site StatusNet."
 
 #: actions/designadminpanel.php:275
-#, fuzzy
 msgid "Invalid logo URL."
-msgstr "Tamanho inválido."
+msgstr "A URL da logo é inválida."
 
 #: actions/designadminpanel.php:279
-#, fuzzy, php-format
+#, php-format
 msgid "Theme not available: %s"
-msgstr "Esta página não está disponível em um "
+msgstr "Tema não disponível: %s"
 
 #: actions/designadminpanel.php:375
-#, fuzzy
 msgid "Change logo"
-msgstr "Altere a sua senha"
+msgstr "Alterar a logo"
 
 #: actions/designadminpanel.php:380
-#, fuzzy
 msgid "Site logo"
-msgstr "Convidar"
+msgstr "Logo do site"
 
 #: actions/designadminpanel.php:387
-#, fuzzy
 msgid "Change theme"
-msgstr "Alterar"
+msgstr "Alterar o tema"
 
 #: actions/designadminpanel.php:404
-#, fuzzy
 msgid "Site theme"
-msgstr "Nova mensagem"
+msgstr "Tema do site"
 
 #: actions/designadminpanel.php:405
-#, fuzzy
 msgid "Theme for the site."
-msgstr "Sair deste site"
+msgstr "Tema para o site."
 
 #: actions/designadminpanel.php:417 lib/designsettings.php:101
 msgid "Change background image"
-msgstr "Alterar imagem de plano de fundo."
+msgstr "Alterar imagem do fundo"
 
 #: actions/designadminpanel.php:422 actions/designadminpanel.php:497
 #: lib/designsettings.php:178
 msgid "Background"
-msgstr ""
+msgstr "Fundo"
 
 #: actions/designadminpanel.php:427
 #, php-format
@@ -924,63 +915,60 @@ msgid ""
 "You can upload a background image for the site. The maximum file size is %1"
 "$s."
 msgstr ""
-"Você pode enviar uma imagem de plano de fundo para o site. O tamanho máximo "
-"do arquivo é %l$s"
+"Você pode enviar uma imagem de fundo para o site. O tamanho máximo do "
+"arquivo é de %1 $s."
 
 #: actions/designadminpanel.php:457 lib/designsettings.php:139
 msgid "On"
-msgstr "Ligado"
+msgstr "Ativado"
 
 #: actions/designadminpanel.php:473 lib/designsettings.php:155
 msgid "Off"
-msgstr ""
+msgstr "Desativado"
 
 #: actions/designadminpanel.php:474 lib/designsettings.php:156
 msgid "Turn background image on or off."
-msgstr ""
+msgstr "Ativar/desativar a imagem de fundo."
 
 #: actions/designadminpanel.php:479 lib/designsettings.php:161
 msgid "Tile background image"
-msgstr ""
+msgstr "Ladrilhar a imagem de fundo"
 
 #: actions/designadminpanel.php:488 lib/designsettings.php:170
-#, fuzzy
 msgid "Change colours"
-msgstr "Altere a sua senha"
+msgstr "Alterar a cor"
 
 #: actions/designadminpanel.php:510 lib/designsettings.php:191
 msgid "Content"
 msgstr "Conteúdo"
 
 #: actions/designadminpanel.php:523 lib/designsettings.php:204
-#, fuzzy
 msgid "Sidebar"
-msgstr "Procurar"
+msgstr "Barra lateral"
 
 #: actions/designadminpanel.php:536 lib/designsettings.php:217
 msgid "Text"
 msgstr "Texto"
 
 #: actions/designadminpanel.php:549 lib/designsettings.php:230
-#, fuzzy
 msgid "Links"
-msgstr "Lista"
+msgstr "Links"
 
 #: actions/designadminpanel.php:577 lib/designsettings.php:247
 msgid "Use defaults"
-msgstr "Usar o padrão."
+msgstr "Usar o padrão|"
 
 #: actions/designadminpanel.php:578 lib/designsettings.php:248
 msgid "Restore default designs"
-msgstr ""
+msgstr "Restaura a aparência padrão"
 
 #: actions/designadminpanel.php:584 lib/designsettings.php:254
 msgid "Reset back to default"
-msgstr ""
+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:167
+#: 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
@@ -990,15 +978,15 @@ msgstr "Salvar"
 
 #: actions/designadminpanel.php:587 lib/designsettings.php:257
 msgid "Save design"
-msgstr ""
+msgstr "Salvar a aparência"
 
 #: actions/disfavor.php:81
 msgid "This notice is not a favorite!"
-msgstr "Essa mensagem não é uma favorita!"
+msgstr "Esta mensagem não é uma favorita!"
 
 #: actions/disfavor.php:94
 msgid "Add to favorites"
-msgstr "Adicionar aos favoritos"
+msgstr "Adicionar às favoritas"
 
 #: actions/doc.php:69
 msgid "No such document."
@@ -1011,7 +999,7 @@ msgstr "Editar o grupo %s"
 
 #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65
 msgid "You must be logged in to create a group."
-msgstr "Você deve estar logado para criar um grupo."
+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
@@ -1025,16 +1013,15 @@ msgstr "Use esse formulário para editar o grupo."
 #: actions/editgroup.php:201 actions/newgroup.php:145
 #, php-format
 msgid "description is too long (max %d chars)."
-msgstr "descrição muito extensa (máximo 140 caracteres)."
+msgstr "descrição muito extensa (máximo %d caracteres)."
 
 #: actions/editgroup.php:253
 msgid "Could not update group."
 msgstr "Não foi possível atualizar o grupo."
 
 #: actions/editgroup.php:259 classes/User_group.php:390
-#, fuzzy
 msgid "Could not create aliases."
-msgstr "Não foi possível criar a favorita."
+msgstr "Não foi possível criar os apelidos."
 
 #: actions/editgroup.php:269
 msgid "Options saved."
@@ -1047,7 +1034,7 @@ msgstr "Configurações do e-mail"
 #: actions/emailsettings.php:71
 #, php-format
 msgid "Manage how you get email from %%site.name%%."
-msgstr "Configure o recebimento de e-mails do %%site.name%%."
+msgstr "Configure o recebimento de e-mails de %%site.name%%."
 
 #: actions/emailsettings.php:100 actions/imsettings.php:100
 #: actions/smssettings.php:104
@@ -1083,7 +1070,7 @@ msgstr "Endereço de e-mail"
 
 #: actions/emailsettings.php:123
 msgid "Email address, like \"UserName@example.org\""
-msgstr "Endereço de e-mail, ex: \"usuario@example.org\""
+msgstr "Endereço de e-mail, ex: \"usuario@exemplo.org\""
 
 #: actions/emailsettings.php:126 actions/imsettings.php:133
 #: actions/smssettings.php:145
@@ -1123,16 +1110,17 @@ msgstr ""
 
 #: actions/emailsettings.php:169
 msgid "Send me email when someone sends me a private message."
-msgstr "Envie-me um e-mail quando alguém enviar-me uma mensagem particular."
+msgstr "Envie-me um e-mail quando alguém me mandar uma mensagem particular."
 
 #: actions/emailsettings.php:174
-#, fuzzy
 msgid "Send me email when someone sends me an \"@-reply\"."
-msgstr "Envie-me um e-mail quando alguém enviar-me uma mensagem particular."
+msgstr ""
+"Envie-me um e-mail quando alguém mandar uma mensagem citando meu nome "
+"(\"@nome\")."
 
 #: actions/emailsettings.php:179
 msgid "Allow friends to nudge me and send me an email."
-msgstr "Permitir que meus amigos chamem minha atenção e enviem-me um e-mail."
+msgstr "Permita que meus amigos chamem minha atenção e enviem-me e-mails."
 
 #: actions/emailsettings.php:185
 msgid "I want to post notices by email."
@@ -1188,12 +1176,12 @@ msgstr "Nenhuma confirmação pendente para cancelar."
 
 #: actions/emailsettings.php:383 actions/imsettings.php:355
 msgid "That is the wrong IM address."
-msgstr "Isso é um endereço de IM errado."
+msgstr "Isso é um endereço de MI errado."
 
 #: actions/emailsettings.php:395 actions/imsettings.php:367
 #: actions/smssettings.php:386
 msgid "Confirmation cancelled."
-msgstr "Confirmação cancelada."
+msgstr "A confirmação foi cancelada."
 
 #: actions/emailsettings.php:413
 msgid "That is not your email address."
@@ -1228,7 +1216,7 @@ msgstr "Essa mensagem já é uma favorita!"
 
 #: actions/favor.php:92 lib/disfavorform.php:140
 msgid "Disfavor favorite"
-msgstr "Excluir a favorita"
+msgstr "Desmarcar a favorita"
 
 #: actions/favorited.php:65 lib/popularnoticesection.php:88
 #: lib/publicgroupnav.php:93
@@ -1247,12 +1235,16 @@ msgstr "As etiquetas mais populares no site agora."
 #: actions/favorited.php:150
 msgid "Favorite notices appear on this page but no one has favorited one yet."
 msgstr ""
+"As mensagens favoritas aparecem nesta página, mas ninguém ainda marcou "
+"nenhuma como favorita."
 
 #: 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 ""
+"Seja o primeiro a marcar uma mensagem como favorita, clicando no botão "
+"próximo a qualquer uma que você goste."
 
 #: actions/favorited.php:156
 #, php-format
@@ -1260,6 +1252,8 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to add a "
 "notice to your favorites!"
 msgstr ""
+"Por que você não [registra uma conta](%%action.register%%) pra ser o "
+"primeiro a adicionar uma mensagem aos favoritos?"
 
 #: actions/favoritesrss.php:111 actions/showfavorites.php:77
 #: lib/personalgroupnav.php:115
@@ -1268,51 +1262,46 @@ msgid "%s's favorite notices"
 msgstr "Mensagens favoritas de %s"
 
 #: actions/favoritesrss.php:115
-#, fuzzy, php-format
+#, php-format
 msgid "Updates favored by %1$s on %2$s!"
-msgstr "Atualizações de %1$s no %2$s!"
+msgstr "Mensagens favoritas de %1$s no %2$s!"
 
 #: actions/featured.php:69 lib/featureduserssection.php:87
 #: lib/publicgroupnav.php:89
 msgid "Featured users"
-msgstr "Usuários de destaque"
+msgstr "Usuários em destaque"
 
 #: actions/featured.php:71
 #, php-format
 msgid "Featured users, page %d"
-msgstr "Usuários de destaque, pág. %d"
+msgstr "Usuários em destaque, pág. %d"
 
 #: actions/featured.php:99
 #, php-format
 msgid "A selection of some great users on %s"
-msgstr ""
+msgstr "Uma seleção de alguns grandes usuários no%s"
 
 #: actions/file.php:34
-#, fuzzy
 msgid "No notice ID."
-msgstr "Nova mensagem"
+msgstr "Sem ID da mensagem."
 
 #: actions/file.php:38
-#, fuzzy
 msgid "No notice."
-msgstr "Nova mensagem"
+msgstr "Nenhuma mensagem."
 
 #: actions/file.php:42
-#, fuzzy
 msgid "No attachments."
-msgstr "Esse documento não existe."
+msgstr "Nenhum anexo."
 
 #: actions/file.php:51
-#, fuzzy
 msgid "No uploaded attachments."
-msgstr "Esse documento não existe."
+msgstr "Nenhum anexo enviado."
 
 #: actions/finishremotesubscribe.php:69
 msgid "Not expecting this response!"
 msgstr "Não esperava por esta resposta!"
 
 #: actions/finishremotesubscribe.php:80
-#, fuzzy
 msgid "User being listened to does not exist."
 msgstr "O usuário que está está sendo acompanhado não existe."
 
@@ -1326,40 +1315,34 @@ msgstr "Esse usuário bloqueou o seu pedido de assinatura."
 
 #: actions/finishremotesubscribe.php:110
 msgid "You are not authorized."
-msgstr "Não autorizado."
+msgstr "Você não está autorizado."
 
 #: actions/finishremotesubscribe.php:113
-#, fuzzy
 msgid "Could not convert request token to access token."
-msgstr ""
-"Não foi possível converter os tokens de requisição para tokens de acesso."
+msgstr "Não foi possível converter o token de requisição para token de acesso."
 
 #: actions/finishremotesubscribe.php:118
-#, fuzzy
 msgid "Remote service uses unknown version of OMB protocol."
-msgstr "Versão desconhecida do protocolo OMB."
+msgstr "O serviço remoto usa uma versão desconhecida do protocolo OMB."
 
 #: actions/finishremotesubscribe.php:138 lib/oauthstore.php:306
 msgid "Error updating remote profile"
-msgstr "Erro na atualização do perfil remoto"
+msgstr "Ocorreu um erro na atualização do perfil remoto"
 
 #: actions/foafgroup.php:44 actions/foafgroup.php:62 actions/groupblock.php:86
 #: actions/grouprss.php:98 actions/groupunblock.php:86
 #: actions/leavegroup.php:83 actions/makeadmin.php:86 lib/command.php:212
 #: lib/command.php:263
-#, fuzzy
 msgid "No such group."
-msgstr "Essa etiqueta não existe."
+msgstr "Esse grupo não existe."
 
 #: actions/getfile.php:75
-#, fuzzy
 msgid "No such file."
-msgstr "Essa mensagem não existe."
+msgstr "Esse arquivo não existe."
 
 #: actions/getfile.php:79
-#, fuzzy
 msgid "Cannot read file."
-msgstr "Nosso arquivo foi perdido."
+msgstr "Não foi possível ler o arquivo."
 
 #: actions/groupblock.php:71 actions/groupunblock.php:71
 #: actions/makeadmin.php:71 actions/subedit.php:46
@@ -1375,28 +1358,24 @@ msgstr "Não foi encontrado nenhum perfil com esse ID."
 
 #: actions/groupblock.php:81 actions/groupunblock.php:81
 #: actions/makeadmin.php:81
-#, fuzzy
 msgid "No group specified."
-msgstr "Não foi especificado nenhum perfil."
+msgstr "Não foi especificado nenhum grupo."
 
 #: actions/groupblock.php:91
 msgid "Only an admin can block group members."
-msgstr "Apenas o administrador pode bloquear usuários do grupo."
+msgstr "Somente um administrador pode bloquear usuários no grupo."
 
 #: actions/groupblock.php:95
-#, fuzzy
 msgid "User is already blocked from group."
-msgstr "O usuário bloqueou você."
+msgstr "O usuário já está bloqueado no grupo."
 
 #: actions/groupblock.php:100
-#, fuzzy
 msgid "User is not a member of group."
-msgstr "Você não está assinando esse perfil."
+msgstr "O usuário não é um membro do grupo"
 
 #: actions/groupblock.php:136 actions/groupmembers.php:314
-#, fuzzy
 msgid "Block user from group"
-msgstr "Bloquear usuário"
+msgstr "Bloquear o usuário no grupo"
 
 #: actions/groupblock.php:162
 #, php-format
@@ -1405,57 +1384,57 @@ msgid ""
 "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 "
+"futuramente."
 
 #: actions/groupblock.php:178
-#, fuzzy
 msgid "Do not block this user from this group"
-msgstr "Não é possível acompanhar o usuário: Usuário não encontrado."
+msgstr "Não bloquear este usuário neste grupo"
 
 #: actions/groupblock.php:179
-#, fuzzy
 msgid "Block this user from this group"
-msgstr "Bloquear usuário"
+msgstr "Bloquear este usuário neste grupo"
 
 #: actions/groupblock.php:196
 msgid "Database error blocking user from group."
 msgstr ""
+"Ocorreu um erro no banco de dados ao tentar bloquear o usuário no grupo."
 
 #: actions/groupbyid.php:74
 msgid "No ID"
-msgstr ""
+msgstr "Sem ID"
 
 #: actions/groupdesignsettings.php:68
 msgid "You must be logged in to edit a group."
-msgstr "Você deve estar logado para editar um grupo."
+msgstr "Você precisa estar autenticado para editar um grupo."
 
 #: actions/groupdesignsettings.php:141
-#, fuzzy
 msgid "Group design"
-msgstr "Outras opções"
+msgstr "Aparência do grupo"
 
 #: actions/groupdesignsettings.php:152
 msgid ""
 "Customize the way your group looks with a background image and a colour "
 "palette of your choice."
 msgstr ""
+"Personalize a aparência do grupo com uma imagem de fundo e uma paleta de "
+"cores à sua escolha."
 
 #: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186
 #: lib/designsettings.php:391 lib/designsettings.php:413
-#, fuzzy
 msgid "Couldn't update your design."
-msgstr "Não foi possível atualizar o usuário."
+msgstr "Não foi possível atualizar a aparência."
 
 #: 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 "Não foi possível salvar suas configurações do Twitter!"
+msgstr "Não foi possível salvar suas configurações da aparência!"
 
 #: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231
-#, fuzzy
 msgid "Design preferences saved."
-msgstr "As preferências de sincronização foram salvas."
+msgstr "As configurações da aparência foram salvas."
 
 #: actions/grouplogo.php:139 actions/grouplogo.php:192
 msgid "Group logo"
@@ -1466,35 +1445,36 @@ msgstr "Logo do grupo"
 msgid ""
 "You can upload a logo image for your group. The maximum file size is %s."
 msgstr ""
+"Você pode enviar uma imagem de logo para o seu grupo. O tamanho máximo do "
+"arquivo é %s."
 
 #: actions/grouplogo.php:362
-#, fuzzy
 msgid "Pick a square area of the image to be the logo."
-msgstr "Selecione uma área quadrada da imagem para ser seu avatar"
+msgstr "Selecione uma área quadrada da imagem para definir a logo"
 
 #: actions/grouplogo.php:396
 msgid "Logo updated."
-msgstr "O avatar foi atualizado."
+msgstr "A logo foi atualizada."
 
 #: actions/grouplogo.php:398
 msgid "Failed updating logo."
-msgstr "Não foi possível atualizar o avatar."
+msgstr "Não foi possível atualizar a logo."
 
 #: actions/groupmembers.php:93 lib/groupnav.php:92
 #, php-format
 msgid "%s group members"
-msgstr ""
+msgstr "Membros do grupo %s"
 
 #: actions/groupmembers.php:96
 #, php-format
 msgid "%s group members, page %d"
-msgstr ""
+msgstr "Membros do grupo %s, pág. %d"
 
 #: actions/groupmembers.php:111
 msgid "A list of the users in this group."
-msgstr ""
+msgstr "Uma lista dos usuários deste grupo."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Admin"
 
@@ -1503,33 +1483,31 @@ msgid "Block"
 msgstr "Bloquear"
 
 #: actions/groupmembers.php:441
-#, fuzzy
 msgid "Make user an admin of the group"
-msgstr "Você deve ser o administrador do grupo para editá-lo"
+msgstr "Tornar o usuário um administrador do grupo"
 
 #: actions/groupmembers.php:473
-#, fuzzy
 msgid "Make Admin"
-msgstr "Admin"
+msgstr "Tornar administrador"
 
 #: actions/groupmembers.php:473
 msgid "Make this user an admin"
-msgstr ""
+msgstr "Torna este usuário um administrador"
 
 #: actions/grouprss.php:133
-#, fuzzy, php-format
+#, php-format
 msgid "Updates from members of %1$s on %2$s!"
-msgstr "Atualizações de %1$s no %2$s!"
+msgstr "Atualizações dos membros de %1$s no %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
 msgid "Groups"
-msgstr ""
+msgstr "Grupos"
 
 #: actions/groups.php:64
 #, php-format
 msgid "Groups, page %d"
-msgstr ""
+msgstr "Groupos, pág. %d"
 
 #: actions/groups.php:90
 #, php-format
@@ -1540,32 +1518,33 @@ msgid ""
 "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
 "%%%%)"
 msgstr ""
+"Os grupos de %%%%site.name%%%% lhe permite encontrar e conversar com pessoas "
+"que tenham interesses similares. Após  associar-se a um grupo, você pode "
+"enviar mensagens para todos os seus membros usando a sintaxe \"!nomedogrupo"
+"\". Não encontrou um grupo que lhe agrade? Experimente [procurar por um](%%%%"
+"action.groupsearch%%%%) ou [criar o seu próprio!](%%%%action.newgroup%%%%)"
 
 #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
-#, fuzzy
 msgid "Create a new group"
-msgstr "Criar uma nova conta"
+msgstr "Criar um novo 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 ""
-"Procurar por pessoas em %%site.name%% por seus nomes, localidade ou "
-"interesses. Separe os termos da busca com espaços; eles devem ter 3 "
-"caracteres ou mais."
+"Procurar grupos no %%site.name%% por seus nomes, localização ou descrição. "
+"Separe os termos com espaços; eles devem ter 3 ou mais caracteres."
 
 #: actions/groupsearch.php:58
-#, fuzzy
 msgid "Group search"
-msgstr "Procurar pessoas"
+msgstr "Procurar grupos"
 
 #: actions/groupsearch.php:79 actions/noticesearch.php:117
 #: actions/peoplesearch.php:83
-#, fuzzy
 msgid "No results."
-msgstr "Nenhum resultado"
+msgstr "Nenhum resultado."
 
 #: actions/groupsearch.php:82
 #, php-format
@@ -1573,6 +1552,8 @@ msgid ""
 "If you can't find the group you're looking for, you can [create it](%%action."
 "newgroup%%) yourself."
 msgstr ""
+"Caso não encontre o grupo que está procurando, você pode [criá-lo](%%action."
+"newgroup%%)."
 
 #: actions/groupsearch.php:85
 #, php-format
@@ -1580,23 +1561,24 @@ msgid ""
 "Why not [register an account](%%action.register%%) and [create the group](%%"
 "action.newgroup%%) yourself!"
 msgstr ""
+"Por que você não [se cadastra](%%action.register%%) e [cria o grupo](%%"
+"action.newgroup%%) você mesmo?"
 
 #: actions/groupunblock.php:91
 msgid "Only an admin can unblock group members."
-msgstr ""
+msgstr "Somente um administrador pode desbloquear membros do grupo."
 
 #: actions/groupunblock.php:95
-#, fuzzy
 msgid "User is not blocked from group."
-msgstr "O usuário bloqueou você."
+msgstr "O usuário não está bloqueado no grupo."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Erro na remoção do bloqueio."
 
 #: actions/imsettings.php:59
 msgid "IM Settings"
-msgstr "Configurações do IM"
+msgstr "Configurações do MI"
 
 #: actions/imsettings.php:70
 #, php-format
@@ -1604,13 +1586,12 @@ msgid ""
 "You can send and receive notices through Jabber/GTalk [instant messages](%%"
 "doc.im%%). Configure your address and settings below."
 msgstr ""
-"Você pode enviar e receber mensagens através dos [instant messages](%%doc.im%"
-"%) Jabber/GTalk. Configure seu endereço e opções abaixo."
+"Você pode enviar e receber mensagens através dos [mensageiros instantâneos](%"
+"%doc.im%%) Jabber/GTalk. Configure seu endereço e opções abaixo."
 
 #: actions/imsettings.php:89
-#, fuzzy
 msgid "IM is not available."
-msgstr "Esta página não está disponível em um "
+msgstr "MI não está disponível"
 
 #: actions/imsettings.php:106
 msgid "Current confirmed Jabber/GTalk address."
@@ -1628,7 +1609,7 @@ msgstr ""
 
 #: actions/imsettings.php:124
 msgid "IM Address"
-msgstr "Endereço do IM"
+msgstr "Endereço do MI"
 
 #: actions/imsettings.php:126
 #, php-format
@@ -1636,13 +1617,13 @@ 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 ""
-"Endereço de Jabber ou GTalk, ex: \"usuario@example.org\". Primeiro, "
-"certifique-se de adicionar %s à sua lista de contatos no seu cliente de IM "
+"Endereço de Jabber ou GTalk, ex: \"usuario@exemplo.org\". Primeiro, "
+"certifique-se de adicionar %s à sua lista de contatos em seu cliente de MI "
 "ou no GTalk."
 
 #: actions/imsettings.php:143
 msgid "Send me notices through Jabber/GTalk."
-msgstr "Envie-me as mensagens via Jabber/GTalk."
+msgstr "Envie-me mensagens via Jabber/GTalk."
 
 #: actions/imsettings.php:148
 msgid "Post a notice when my Jabber/GTalk status changes."
@@ -1651,7 +1632,7 @@ msgstr "Publicar uma mensagem quando eu mudar de status no Jabber/GTalk."
 #: actions/imsettings.php:153
 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to."
 msgstr ""
-"Envie-me respostas de pessoas que eu não estou seguindo através do Jabber/"
+"Envie-me respostas de pessoas que eu não estou assinando através do Jabber/"
 "GTalk."
 
 #: actions/imsettings.php:159
@@ -1709,17 +1690,18 @@ msgstr ""
 
 #: actions/invite.php:39
 msgid "Invites have been disabled."
-msgstr ""
+msgstr "Os convites foram desabilitados."
 
 #: actions/invite.php:41
 #, php-format
 msgid "You must be logged in to invite other users to use %s"
-msgstr "Você deve estar logado para convidar outros usuários para usar o %s"
+msgstr ""
+"Você deve estar autenticado para convidar outros usuários para usar o %s"
 
 #: actions/invite.php:72
 #, php-format
 msgid "Invalid email address: %s"
-msgstr "Não é um endereço de e-mail válido: %s"
+msgstr "Endereço de e-mail inválido: %s"
 
 #: actions/invite.php:110
 msgid "Invitation(s) sent"
@@ -1741,7 +1723,7 @@ msgstr "%s (%s)"
 #: actions/invite.php:136
 msgid ""
 "These people are already users and you were automatically subscribed to them:"
-msgstr "Estas pessoas já são usuárias e você as acompanha automaticamente:"
+msgstr "Estas pessoas já são usuárias e você as assinou automaticamente:"
 
 #: actions/invite.php:144
 msgid "Invitation(s) sent to the following people:"
@@ -1778,14 +1760,14 @@ 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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Enviar"
 
 #: actions/invite.php:226
 #, php-format
 msgid "%1$s has invited you to join them on %2$s"
-msgstr "%1$s convidou você para se juntar ao %2$s"
+msgstr "%1$s convidou você para se juntar a %2$s"
 
 #: actions/invite.php:228
 #, php-format
@@ -1817,13 +1799,13 @@ msgid ""
 "\n"
 "Sincerely, %2$s\n"
 msgstr ""
-"%1$s convidou você para se juntar ao %2$s (%3$s).\n"
+"%1$s convidou você para se juntar a %2$s (%3$s).\n"
 "\n"
-"%2$s é um serviço de microblogagem que lhe permite manter-se atualizado com "
-"as pessoas que você conhece e com as que lhe interessam.\n"
+"%2$s é um serviço de microblog que lhe permite manter-se atualizado com as "
+"pessoas que você conhece e com as que lhe interessam.\n"
 "\n"
-"Você também pode compartilhar notícias sobre você mesmo, seus pensamentos, "
-"ou sua vida on-line com as pessoas que lhe conhecem. Também é ótimo para "
+"Você também pode compartilhar notícias sobre você mesmo, seus pensamentos ou "
+"sua vida on-line com as pessoas que lhe conhecem. Também é ótimo para "
 "encontrar novas pessoas que compartilham os mesmos interesses que você.\n"
 "\n"
 "%1$s disse:\n"
@@ -1845,84 +1827,76 @@ msgstr ""
 "Cordialmente, %2$s\n"
 
 #: actions/joingroup.php:60
-#, fuzzy
 msgid "You must be logged in to join a group."
-msgstr ""
-"Você deve estar autenticado para convidar outros usuários para usar o %s"
+msgstr "Você deve estar autenticado para se associar a um grupo."
 
 #: actions/joingroup.php:90 lib/command.php:217
-#, fuzzy
 msgid "You are already a member of that group"
-msgstr "Você já está assinando esses usuários:"
+msgstr "Você já é um membro desse grupo."
 
 #: actions/joingroup.php:128 lib/command.php:234
-#, fuzzy, php-format
+#, php-format
 msgid "Could not join user %s to group %s"
-msgstr "Não é possível acompanhar o usuário: Usuário não encontrado."
+msgstr "Não foi possível associar o usuário %s ao grupo %s"
 
 #: actions/joingroup.php:135 lib/command.php:239
-#, fuzzy, php-format
+#, php-format
 msgid "%s joined group %s"
-msgstr "%s / Favoritas de %s"
+msgstr "%s associou-se ao grupo %s"
 
 #: actions/leavegroup.php:60
-#, fuzzy
 msgid "You must be logged in to leave a group."
-msgstr ""
-"Você deve estar autenticado para convidar outros usuários para usar o %s"
+msgstr "Você deve estar autenticado para sair de um grupo."
 
 #: actions/leavegroup.php:90 lib/command.php:268
-#, fuzzy
 msgid "You are not a member of that group."
-msgstr "Você não está assinando esse perfil."
+msgstr "Você não é um membro desse grupo."
 
 #: actions/leavegroup.php:119 lib/command.php:278
-#, fuzzy
 msgid "Could not find membership record."
-msgstr "Não foi possível atualizar o registro do usuário."
+msgstr "Não foi possível encontrar o registro do membro."
 
 #: actions/leavegroup.php:127 lib/command.php:284
-#, fuzzy, php-format
+#, php-format
 msgid "Could not remove user %s to group %s"
-msgstr "Não é possível acompanhar o usuário: Usuário não encontrado."
+msgstr "Não foi possível remover o usuário %s do grupo %s"
 
 #: actions/leavegroup.php:134 lib/command.php:289
 #, php-format
 msgid "%s left group %s"
-msgstr ""
+msgstr "%s deixou o grupo %s"
 
 #: actions/login.php:83 actions/register.php:137
 msgid "Already logged in."
-msgstr "Já está logado."
+msgstr "Já está autenticado."
 
 #: actions/login.php:114 actions/login.php:124
-#, fuzzy
 msgid "Invalid or expired token."
-msgstr "O conteúdo da mensagem é inválido"
+msgstr "Token inválido ou expirado."
 
 #: actions/login.php:147
 msgid "Incorrect username or password."
 msgstr "Nome de usuário e/ou senha incorreto(s)."
 
 #: actions/login.php:153
-#, fuzzy
 msgid "Error setting user. You are probably not authorized."
-msgstr "Não autorizado."
+msgstr ""
+"Erro na configuração do usuário. Você provavelmente não tem autorização."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
-msgstr "Logar"
+msgstr "Entrar"
 
 #: actions/login.php:247
 msgid "Login to site"
-msgstr ""
+msgstr "Autenticar-se no site"
 
 #: actions/login.php:250 actions/profilesettings.php:106
 #: actions/register.php:423 actions/showgroup.php:236 actions/tagother.php:94
 #: lib/groupeditform.php:152 lib/userprofile.php:131
 msgid "Nickname"
-msgstr "Apelido"
+msgstr "Usuário"
 
 #: actions/login.php:253 actions/register.php:428
 #: lib/accountsettingsaction.php:116
@@ -1936,8 +1910,8 @@ msgstr "Lembrar neste computador"
 #: actions/login.php:257 actions/register.php:479
 msgid "Automatically login in the future; not for shared computers!"
 msgstr ""
-"Entrar automaticamente sem pedir a senha. Não use em computadores "
-"compartilhados!"
+"Entra automaticamente da próxima vez, sem pedir a senha. Não use em "
+"computadores compartilhados!"
 
 #: actions/login.php:267
 msgid "Lost or forgotten password?"
@@ -1952,46 +1926,46 @@ msgstr ""
 "senha antes de alterar suas configurações."
 
 #: actions/login.php:290
-#, 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 ""
-"Logar-se com seu nome de usuário e senha. Não tem um nome de usuário ainda? "
-"[Registre](%%action.register%%) uma nova conta, ou use uma [OpenID](%%action."
-"openidlogin%%)."
+"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
 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
 #, php-format
 msgid "%s is already an admin for group \"%s\"."
-msgstr ""
+msgstr "%s já é um administrador do grupo \"%s\"."
 
 #: actions/makeadmin.php:132
 #, php-format
 msgid "Can't get membership record for %s in group %s"
-msgstr ""
+msgstr "Não foi possível obter o registro de membro de %s no grupo %s"
 
 #: actions/makeadmin.php:145
 #, php-format
 msgid "Can't make %s an admin for group %s"
-msgstr ""
+msgstr "Não foi possível tornar %s um administrador do grupo %s"
 
 #: actions/microsummary.php:69
 msgid "No current status"
-msgstr "Nenhum status atual"
+msgstr "Nenhuma mensagem atual"
 
 #: actions/newgroup.php:53
 msgid "New group"
-msgstr ""
+msgstr "Novo grupo"
 
 #: actions/newgroup.php:110
-#, fuzzy
 msgid "Use this form to create a new group."
-msgstr "Você pode criar uma nova conta usando esse formulário. "
+msgstr "Utilize este formulário para criar um novo grupo."
 
 #: actions/newmessage.php:71 actions/newmessage.php:231
 msgid "New message"
@@ -1999,7 +1973,7 @@ msgstr "Nova mensagem"
 
 #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:367
 msgid "You can't send a message to this user."
-msgstr "Você não pode enviar uma mensagem para esse usuário."
+msgstr "Você não pode enviar mensagens para este usuário."
 
 #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:351
 #: lib/command.php:484
@@ -2008,26 +1982,25 @@ msgstr "Nenhum conteúdo!"
 
 #: actions/newmessage.php:158
 msgid "No recipient specified."
-msgstr "Nenhum destinatário especificado."
+msgstr "Não foi especificado nenhum destinatário."
 
 #: actions/newmessage.php:164 lib/command.php:370
 msgid ""
 "Don't send a message to yourself; just say it to yourself quietly instead."
 msgstr ""
-"Não envie uma mensagem para você mesmo(a); ao invés disso, apenas diga-a "
-"para si."
+"Não envie mensagens para você mesmo(a); ao invés disso, apenas diga-a para "
+"si, discretamente."
 
 #: actions/newmessage.php:181
-#, fuzzy
 msgid "Message sent"
-msgstr "Nova mensagem"
+msgstr "A mensagem foi enviada"
 
 #: actions/newmessage.php:185 lib/command.php:376
 #, php-format
 msgid "Direct message to %s sent"
 msgstr "A mensagem direta para %s foi enviada"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Erro no Ajax"
 
@@ -2035,9 +2008,9 @@ msgstr "Erro no Ajax"
 msgid "New notice"
 msgstr "Nova mensagem"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
-msgstr "Mensagem publicada"
+msgstr "A mensagem foi publicada"
 
 #: actions/noticesearch.php:68
 #, php-format
@@ -2045,17 +2018,17 @@ msgid ""
 "Search for notices on %%site.name%% by their contents. Separate search terms "
 "by spaces; they must be 3 characters or more."
 msgstr ""
-"Procurar mensagens em %%site.name%% por seu conteúdo. Separe os termos da "
-"busca com espaços; eles devem ter 3 caracteres ou mais."
+"Procurar mensagens no %%site.name%% por seu conteúdo. Separe os termos da "
+"busca com espaços; eles devem ter 3 ou mais caracteres."
 
 #: actions/noticesearch.php:78
 msgid "Text search"
 msgstr "Procurar por texto"
 
 #: actions/noticesearch.php:91
-#, fuzzy, php-format
+#, php-format
 msgid "Search results for \"%s\" on %s"
-msgstr " Procurar por \"%s\" no fluxo de mensagens"
+msgstr "Resultados da procura por \"%s\" no %s"
 
 #: actions/noticesearch.php:121
 #, php-format
@@ -2063,6 +2036,8 @@ msgid ""
 "Be the first to [post on this topic](%%%%action.newnotice%%%%?"
 "status_textarea=%s)!"
 msgstr ""
+"Seja o primeiro a [publicar sobre este tópico](%%%%action.newnotice%%%%?"
+"status_textarea=%s)!"
 
 #: actions/noticesearch.php:124
 #, php-format
@@ -2070,16 +2045,19 @@ msgid ""
 "Why not [register an account](%%%%action.register%%%%) and be the first to "
 "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
 msgstr ""
+"Por que você não [registra uma conta](%%%%action.register%%%%) pra ser o "
+"primeiro a [publicar sobre este tópico](%%%%action.newnotice%%%%?"
+"status_textarea=%s)?"
 
 #: actions/noticesearchrss.php:96
 #, php-format
 msgid "Updates with \"%s\""
-msgstr ""
+msgstr "Mensagens com \"%s\""
 
 #: actions/noticesearchrss.php:98
-#, fuzzy, php-format
+#, php-format
 msgid "Updates matching search term \"%1$s\" on %2$s!"
-msgstr "Todas as atualizações correspondentes ao termo \"%s\""
+msgstr "Mensagens correspondentes aos termos \"%1$s\" no %2$s!"
 
 #: actions/nudge.php:85
 msgid ""
@@ -2090,11 +2068,11 @@ msgstr ""
 
 #: actions/nudge.php:94
 msgid "Nudge sent"
-msgstr "Chamada de atenção enviada"
+msgstr "A chamada de atenção foi enviada"
 
 #: actions/nudge.php:97
 msgid "Nudge sent!"
-msgstr "Chamada de atenção enviada!"
+msgstr "A chamada de atenção foi enviada!"
 
 #: actions/oembed.php:79 actions/shownotice.php:100
 msgid "Notice has no profile"
@@ -2103,28 +2081,28 @@ msgstr "A mensagem não está associada a nenhum perfil"
 #: actions/oembed.php:86 actions/shownotice.php:180
 #, php-format
 msgid "%1$s's status on %2$s"
-msgstr "Mensagem de %1$s em %2$s"
+msgstr "Mensagem de %1$s no %2$s"
 
 #: actions/oembed.php:157
 msgid "content type "
-msgstr ""
+msgstr "tipo de conteúdo "
 
 #: actions/oembed.php:160
 msgid "Only "
-msgstr ""
+msgstr "Apenas "
 
 #: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1031
 #: lib/api.php:1059 lib/api.php:1169
 msgid "Not a supported data format."
-msgstr "Formato de dados não suportado."
+msgstr "Não é um formato de dados suportado."
 
 #: actions/opensearch.php:64
 msgid "People Search"
-msgstr "Procurar Pessoas"
+msgstr "Procurar pessoas"
 
 #: actions/opensearch.php:67
 msgid "Notice Search"
-msgstr "Procurar mensagem"
+msgstr "Procurar mensagens"
 
 #: actions/othersettings.php:60
 msgid "Other Settings"
@@ -2132,28 +2110,27 @@ msgstr "Outras configurações"
 
 #: actions/othersettings.php:71
 msgid "Manage various other options."
-msgstr "Gerenciar várias outras opções."
+msgstr "Gerencia várias outras opções."
 
 #: actions/othersettings.php:108
 msgid " (free service)"
-msgstr ""
+msgstr " (serviço livre)"
 
 #: actions/othersettings.php:116
 msgid "Shorten URLs with"
-msgstr ""
+msgstr "Encolher URLs com"
 
 #: actions/othersettings.php:117
 msgid "Automatic shortening service to use."
 msgstr "Serviço de encolhimento automático a ser utilizado."
 
 #: actions/othersettings.php:122
-#, fuzzy
 msgid "View profile designs"
-msgstr "Configurações do perfil"
+msgstr "Visualizar aparências do perfil"
 
 #: actions/othersettings.php:123
 msgid "Show or hide profile designs."
-msgstr ""
+msgstr "Exibir ou esconder as aparências do perfil."
 
 #: actions/othersettings.php:153
 msgid "URL shortening service is too long (max 50 chars)."
@@ -2162,12 +2139,12 @@ msgstr "O serviço de encolhimento de URL é muito extenso (máx. 50 caracteres)
 #: actions/outbox.php:58
 #, php-format
 msgid "Outbox for %s - page %d"
-msgstr "Enviadas para %s - pág. %d"
+msgstr "Enviadas de %s - pág. %d"
 
 #: actions/outbox.php:61
 #, php-format
 msgid "Outbox for %s"
-msgstr "Envidas para %s"
+msgstr "Enviadas de %s"
 
 #: actions/outbox.php:116
 msgid "This is your outbox, which lists private messages you have sent."
@@ -2180,22 +2157,20 @@ msgid "Change password"
 msgstr "Alterar a senha"
 
 #: actions/passwordsettings.php:69
-#, fuzzy
 msgid "Change your password."
-msgstr "Altera a sua senha"
+msgstr "Altere a sua senha"
 
 #: actions/passwordsettings.php:96 actions/recoverpassword.php:231
-#, fuzzy
 msgid "Password change"
-msgstr "A senha foi salva."
+msgstr "Alterar a senha"
 
 #: actions/passwordsettings.php:104
 msgid "Old password"
-msgstr "Senha antiga"
+msgstr "Senha anterior"
 
 #: actions/passwordsettings.php:108 actions/recoverpassword.php:235
 msgid "New password"
-msgstr "Nova senha"
+msgstr "Senha nova"
 
 #: actions/passwordsettings.php:109
 msgid "6 or more characters"
@@ -2216,7 +2191,7 @@ msgstr "Alterar"
 
 #: actions/passwordsettings.php:154 actions/register.php:230
 msgid "Password must be 6 or more characters."
-msgstr "A senha deve ter 6 ou mais caracteres."
+msgstr "A senha deve ter, no mínimo, 6 caracteres."
 
 #: actions/passwordsettings.php:157 actions/register.php:233
 msgid "Passwords don't match."
@@ -2224,7 +2199,7 @@ msgstr "As senhas não coincidem."
 
 #: actions/passwordsettings.php:165
 msgid "Incorrect old password"
-msgstr "A senha antiga está incorreta"
+msgstr "A senha anterior está errada"
 
 #: actions/passwordsettings.php:181
 msgid "Error saving user; invalid."
@@ -2240,150 +2215,141 @@ msgstr "A senha foi salva."
 
 #: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:308
 msgid "Paths"
-msgstr ""
+msgstr "Caminhos"
 
 #: actions/pathsadminpanel.php:70
 msgid "Path and server settings for this StatusNet site."
-msgstr ""
+msgstr "Configurações dos caminhos e do servidor para este site StatusNet."
 
 #: actions/pathsadminpanel.php:140
-#, fuzzy, php-format
+#, php-format
 msgid "Theme directory not readable: %s"
-msgstr "Esta página não está disponível em um "
+msgstr "Sem permissão de leitura no diretório de temas: %s"
 
 #: actions/pathsadminpanel.php:146
 #, php-format
 msgid "Avatar directory not writable: %s"
-msgstr ""
+msgstr "Sem permissão de escrita no diretório de avatares: %s"
 
 #: actions/pathsadminpanel.php:152
 #, php-format
 msgid "Background directory not writable: %s"
-msgstr ""
+msgstr "Sem permissão de escrita no diretório de imagens de fundo: %s"
 
 #: actions/pathsadminpanel.php:160
 #, php-format
 msgid "Locales directory not readable: %s"
-msgstr ""
+msgstr "Sem permissão de leitura no diretório de locales: %s"
 
 #: actions/pathsadminpanel.php:166
 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
 #: lib/adminpanelaction.php:299
-#, fuzzy
 msgid "Site"
-msgstr "Convidar"
+msgstr "Site"
 
 #: actions/pathsadminpanel.php:221
 msgid "Path"
-msgstr ""
+msgstr "Caminho"
 
 #: actions/pathsadminpanel.php:221
-#, fuzzy
 msgid "Site path"
-msgstr "Nova mensagem"
+msgstr "Caminho do site"
 
 #: actions/pathsadminpanel.php:225
 msgid "Path to locales"
-msgstr ""
+msgstr "Caminho para os locales"
 
 #: actions/pathsadminpanel.php:225
 msgid "Directory path to locales"
-msgstr ""
+msgstr "Caminho do diretório de locales"
 
 #: actions/pathsadminpanel.php:232
 msgid "Theme"
-msgstr ""
+msgstr "Tema"
 
 #: actions/pathsadminpanel.php:237
 msgid "Theme server"
-msgstr ""
+msgstr "Servidor de temas"
 
 #: actions/pathsadminpanel.php:241
 msgid "Theme path"
-msgstr ""
+msgstr "Caminho dos temas"
 
 #: actions/pathsadminpanel.php:245
 msgid "Theme directory"
-msgstr ""
+msgstr "Diretório dos temas"
 
 #: actions/pathsadminpanel.php:252
-#, fuzzy
 msgid "Avatars"
-msgstr "Avatar"
+msgstr "Avatares"
 
 #: actions/pathsadminpanel.php:257
-#, fuzzy
 msgid "Avatar server"
-msgstr "Configurações do avatar"
+msgstr "Servidor de avatares"
 
 #: actions/pathsadminpanel.php:261
-#, fuzzy
 msgid "Avatar path"
-msgstr "O avatar foi atualizado."
+msgstr "Caminho dos avatares"
 
 #: actions/pathsadminpanel.php:265
-#, fuzzy
 msgid "Avatar directory"
-msgstr "O avatar foi atualizado."
+msgstr "Diretório dos avatares"
 
 #: actions/pathsadminpanel.php:274
 msgid "Backgrounds"
-msgstr ""
+msgstr "Imagens de fundo"
 
 #: actions/pathsadminpanel.php:278
 msgid "Background server"
-msgstr ""
+msgstr "Servidor de imagens de fundo"
 
 #: actions/pathsadminpanel.php:282
 msgid "Background path"
-msgstr ""
+msgstr "Caminho das imagens de fundo"
 
 #: actions/pathsadminpanel.php:286
 msgid "Background directory"
-msgstr ""
+msgstr "Diretório das imagens de fundo"
 
 #: actions/pathsadminpanel.php:293
-#, fuzzy
 msgid "SSL"
-msgstr "SMS"
+msgstr "SSL"
 
 #: actions/pathsadminpanel.php:296 actions/siteadminpanel.php:346
-#, fuzzy
 msgid "Never"
-msgstr "Recuperar"
+msgstr "Nunca"
 
 #: actions/pathsadminpanel.php:297
-#, fuzzy
 msgid "Sometimes"
-msgstr "Mensagens"
+msgstr "Algumas vezes"
 
 #: actions/pathsadminpanel.php:298
 msgid "Always"
-msgstr ""
+msgstr "Sempre"
 
 #: actions/pathsadminpanel.php:302
 msgid "Use SSL"
-msgstr ""
+msgstr "Usar SSL"
 
 #: actions/pathsadminpanel.php:303
 msgid "When to use SSL"
-msgstr ""
+msgstr "Quando usar SSL"
 
 #: actions/pathsadminpanel.php:308
 msgid "SSL Server"
-msgstr ""
+msgstr "Servidor SSL"
 
 #: actions/pathsadminpanel.php:309
 msgid "Server to direct SSL requests to"
-msgstr ""
+msgstr "Servidor para onde devem ser direcionadas as requisições SSL"
 
 #: actions/pathsadminpanel.php:325
-#, fuzzy
 msgid "Save paths"
-msgstr "Nova mensagem"
+msgstr "Salvar caminhos"
 
 #: actions/peoplesearch.php:52
 #, php-format
@@ -2391,9 +2357,8 @@ msgid ""
 "Search for people on %%site.name%% by their name, location, or interests. "
 "Separate the terms by spaces; they must be 3 characters or more."
 msgstr ""
-"Procurar por pessoas em %%site.name%% por seus nomes, localidade ou "
-"interesses. Separe os termos da busca com espaços; eles devem ter 3 "
-"caracteres ou mais."
+"Procurar pessoas no %%site.name%% por seus nomes, localidade ou interesses. "
+"Separe os termos da busca com espaços; eles devem ter 3 ou mais caracteres."
 
 #: actions/peoplesearch.php:58
 msgid "People search"
@@ -2417,6 +2382,7 @@ msgstr "O conteúdo da mensagem é inválido"
 #, php-format
 msgid "Notice license ‘%s’ is not compatible with site license ‘%s’."
 msgstr ""
+"A licença ‘%s’ da mensagem não é compatível com a licença ‘%s’ do site."
 
 #: actions/profilesettings.php:60
 msgid "Profile settings"
@@ -2430,9 +2396,8 @@ msgstr ""
 "saibam mais sobre você."
 
 #: actions/profilesettings.php:99
-#, fuzzy
 msgid "Profile information"
-msgstr "Perfil desconhecido"
+msgstr "Informações do perfil"
 
 #: actions/profilesettings.php:108 lib/groupeditform.php:154
 msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
@@ -2454,14 +2419,13 @@ msgid "URL of your homepage, blog, or profile on another site"
 msgstr "URL do seu site, blog ou perfil em outro site"
 
 #: actions/profilesettings.php:122 actions/register.php:460
-#, fuzzy, php-format
+#, php-format
 msgid "Describe yourself and your interests in %d chars"
-msgstr "Descreva a si mesmo e seus interesses em 140 caracteres."
+msgstr "Descreva a si mesmo e os seus interesses em %d caracteres"
 
 #: actions/profilesettings.php:125 actions/register.php:463
-#, fuzzy
 msgid "Describe yourself and your interests"
-msgstr "Descreva a si mesmo e seus interesses em 140 caracteres."
+msgstr "Descreva a si mesmo e os seus interesses"
 
 #: actions/profilesettings.php:127 actions/register.php:465
 msgid "Bio"
@@ -2478,106 +2442,112 @@ msgstr "Localização"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Onde você está, ex: \"cidade, estado (ou região), país\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Compartilhe minha localização atual ao publicar mensagens"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
-msgstr "Tags"
+msgstr "Etiquetas"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Suas etiquetas (letras, números, -, ., e _), separadas por vírgulas ou "
 "espaços"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Idioma"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Idioma preferencial"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Fuso horário"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Em que fuso horário você normalmente está?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
-msgstr "Assinar automaticamente à quem me assinar"
+msgstr ""
+"Assinar automaticamente à quem me assinar (melhor para perfis não humanos)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
-#, fuzzy, php-format
+#: actions/profilesettings.php:228 actions/register.php:223
+#, php-format
 msgid "Bio is too long (max %d chars)."
-msgstr "Descrição muito extensa (máximo 140 caracteres)."
+msgstr "A descrição é muito extensa (máximo %d caracteres)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "O fuso horário não foi selecionado."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "O nome do idioma é muito extenso (máx. 50 caracteres)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Etiqueta inválida: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Não foi possível atualizar o usuário para assinar automaticamente."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Não foi possível salvar as preferências de localização."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Não foi possível salvar o perfil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Não foi possível salvar as etiquetas."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "As configurações foram salvas."
 
 #: actions/public.php:83
 #, php-format
 msgid "Beyond the page limit (%s)"
-msgstr ""
+msgstr "Além do limite da página (%s)"
 
 #: actions/public.php:92
 msgid "Could not retrieve public stream."
 msgstr "Não foi possível recuperar o fluxo público."
 
 #: actions/public.php:129
-#, fuzzy, php-format
+#, php-format
 msgid "Public timeline, page %d"
-msgstr "Mensagens públicas"
+msgstr "Mensagens públicas, pág. %d"
 
 #: actions/public.php:131 lib/publicgroupnav.php:79
 msgid "Public timeline"
 msgstr "Mensagens públicas"
 
 #: actions/public.php:151
-#, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
-msgstr "Feed de mensagens públicas"
+msgstr "Fonte de mensagens públicas (RSS 1.0)"
 
 #: actions/public.php:155
-#, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
-msgstr "Feed de mensagens públicas"
+msgstr "Fonte de mensagens públicas (RSS 2.0)"
 
 #: actions/public.php:159
-#, fuzzy
 msgid "Public Stream Feed (Atom)"
-msgstr "Feed de mensagens públicas"
+msgstr "Fonte de mensagens públicas (Atom)"
 
 #: actions/public.php:179
 #, php-format
@@ -2585,16 +2555,20 @@ msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
+"Esse é o fluxo de mensagens públicas de %%site.name%%, mas ninguém publicou "
+"nada ainda."
 
 #: actions/public.php:182
 msgid "Be the first to post!"
-msgstr ""
+msgstr "Seja o primeiro a publicar!"
 
 #: actions/public.php:186
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
+"Por que você não [registra uma conta](%%action.register%%) pra ser o "
+"primeiro a publicar?"
 
 #: actions/public.php:233
 #, php-format
@@ -2604,35 +2578,39 @@ msgid ""
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
+"Este é %%site.name%%, um serviço de [microblog](http://pt.wikipedia.org/wiki/"
+"Microblogging) baseado no software livre [StatusNet](http://status.net/). "
+"[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
-#, fuzzy, php-format
+#, 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 ""
-"Este é %%site.name%%, um serviço de [micro-blogging](http://pt.wikipedia.org/"
-"wiki/Microblogging)"
+"Este é %%site.name%%, um serviço de [microblog](http://pt.wikipedia.org/wiki/"
+"Microblogging) baseado no software livre [StatusNet](http://status.net/)."
 
 #: actions/publictagcloud.php:57
-#, fuzzy
 msgid "Public tag cloud"
-msgstr "Fluxo de mensagens públicas"
+msgstr "Nuvem de etiquetas públicas"
 
 #: actions/publictagcloud.php:63
 #, php-format
 msgid "These are most popular recent tags on %s "
-msgstr ""
+msgstr "Estas são as etiquetas recentes mais populares no %s "
 
 #: actions/publictagcloud.php:69
 #, php-format
 msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet."
 msgstr ""
+"Ninguém publicou nenhuma mensagem com a [etiqueta](%%doc.tags%%) ainda."
 
 #: actions/publictagcloud.php:72
 msgid "Be the first to post one!"
-msgstr ""
+msgstr "Seja o primeiro a publicar uma!"
 
 #: actions/publictagcloud.php:75
 #, php-format
@@ -2640,14 +2618,16 @@ msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post "
 "one!"
 msgstr ""
+"Por que você não [registra uma conta](%%action.register%%) pra ser o "
+"primeiro a publicar?"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
-msgstr ""
+msgstr "Nuvem de etiquetas"
 
 #: actions/recoverpassword.php:36
 msgid "You are already logged in!"
-msgstr "Você já está logado!"
+msgstr "Você já está autenticado!"
 
 #: actions/recoverpassword.php:62
 msgid "No such recovery code."
@@ -2679,22 +2659,24 @@ 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 ""
+"Se você esqueceu ou perdeu a sua senha, você pode receber uma nova no "
+"endereço de e-mail que cadastrou na sua conta."
 
 #: actions/recoverpassword.php:158
 msgid "You have been identified. Enter a new password below. "
-msgstr ""
+msgstr "Você foi identificado. Digite uma nova senha abaixo. "
 
 #: actions/recoverpassword.php:188
 msgid "Password recovery"
-msgstr ""
+msgstr "Recuperação de senha"
 
 #: actions/recoverpassword.php:191
 msgid "Nickname or email address"
-msgstr ""
+msgstr "Identificação ou endereço de e-mail"
 
 #: actions/recoverpassword.php:193
 msgid "Your nickname on this server, or your registered email address."
-msgstr "Seu apelido neste servidor, ou seu e-mail registrado."
+msgstr "Sua identificação neste servidor, ou seu e-mail cadastrado."
 
 #: actions/recoverpassword.php:199 actions/recoverpassword.php:200
 msgid "Recover"
@@ -2726,7 +2708,7 @@ msgstr "Restaurar"
 
 #: actions/recoverpassword.php:252
 msgid "Enter a nickname or email address."
-msgstr "Entre com o apelido ou endereço de e-mail."
+msgstr "Digite a identificação ou endereço de e-mail."
 
 #: actions/recoverpassword.php:272
 msgid "No user with that email address or username."
@@ -2740,7 +2722,7 @@ msgstr "Nenhum endereço de e-mail registrado para esse usuário."
 
 #: actions/recoverpassword.php:301
 msgid "Error saving address confirmation."
-msgstr "Erro ao salvar o endereço de confirmação"
+msgstr "Erro ao salvar o endereço de confirmação."
 
 #: actions/recoverpassword.php:325
 msgid ""
@@ -2756,7 +2738,7 @@ msgstr "Restauração inesperada da senha."
 
 #: actions/recoverpassword.php:352
 msgid "Password must be 6 chars or more."
-msgstr "A senha deve ter 6 caracteres ou mais."
+msgstr "A senha deve ter 6 ou mais caracteres."
 
 #: actions/recoverpassword.php:356
 msgid "Password and confirmation do not match."
@@ -2769,25 +2751,25 @@ msgstr "Erro na configuração do usuário."
 #: actions/recoverpassword.php:382
 msgid "New password successfully saved. You are now logged in."
 msgstr ""
-"A nova senha foi salva com sucesso. A partir de agora você já está logado."
+"A nova senha foi salva com sucesso. A partir de agora você já está "
+"autenticado."
 
 #: actions/register.php:85 actions/register.php:189 actions/register.php:404
 msgid "Sorry, only invited people can register."
-msgstr "Desculpe, somente convidados podem se registrar."
+msgstr "Desculpe, mas somente convidados podem se registrar."
 
 #: actions/register.php:92
-#, fuzzy
 msgid "Sorry, invalid invitation code."
-msgstr "Erro com o código de confirmação."
+msgstr "Desculpe, mas o código do convite é inválido."
 
 #: actions/register.php:112
 msgid "Registration successful"
 msgstr "Registro realizado com sucesso"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
-msgstr "Registrar"
+msgstr "Registrar-se"
 
 #: actions/register.php:135
 msgid "Registration not allowed."
@@ -2814,6 +2796,8 @@ msgid ""
 "With this form you can create  a new account. You can then post notices and "
 "link up to friends and colleagues. "
 msgstr ""
+"Através deste formulário você pode criar uma nova conta. A partir daí você "
+"pode publicar mensagens e se conectar a amigos e colegas. "
 
 #: actions/register.php:424
 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
@@ -2839,7 +2823,7 @@ msgstr "Usado apenas para atualizações, anúncios e recuperações de senha"
 
 #: actions/register.php:449
 msgid "Longer name, preferably your \"real\" name"
-msgstr "Nome completo (nome e sobrenome), de preferência seu nome \"real\""
+msgstr "Nome completo, de preferência seu nome \"real\""
 
 #: actions/register.php:493
 msgid "My text and files are available under "
@@ -2847,16 +2831,15 @@ msgstr "Meus textos e arquivos estão disponíveis sob "
 
 #: actions/register.php:495
 msgid "Creative Commons Attribution 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution 3.0"
 
 #: actions/register.php:496
-#, fuzzy
 msgid ""
 " except this private data: password, email address, IM address, and phone "
 "number."
 msgstr ""
-" exceto estes dados privados: senha, endereço de e-mail, endereço de IM, "
-"número de telefone."
+" exceto estes dados particulares: senha, endereço de e-mail, endereço de MI "
+"número de telefone."
 
 #: actions/register.php:537
 #, php-format
@@ -2876,14 +2859,14 @@ msgid ""
 "\n"
 "Thanks for signing up and we hope you enjoy using this service."
 msgstr ""
-"Parabéns, %s! E bem-vindo(a) ao %%%%site.name%%%%. A partir daqui, você pode "
-"querer...\n"
+"Parabéns, %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"
 "* Adicionar um [endereço de Jabber/GTalk](%%%%action.imsettings%%%%) para "
 "que você possa publicar via mensagens instantâneas.\n"
-"* [Procurar por pessoas](%%%%action.peoplesearch%%%%) que você conheça ou "
-"que tenham os mesmos interesses que você. \n"
+"* [Procurar pessoas](%%%%action.peoplesearch%%%%) que você conheça ou que "
+"tenham os mesmos interesses que você. \n"
 "* Atualizar suas [configurações de perfil](%%%%action.profilesettings%%%%) "
 "para que outras pessoas saibam mais sobre você. \n"
 "* Ler a [documentação on-line](%%%%doc.help%%%%) para conhecer os recursos "
@@ -2908,7 +2891,7 @@ msgid ""
 msgstr ""
 "Para assinar, você pode [autenticar-se](%%action.login%%), ou [registrar](%%"
 "action.register%%) uma nova conta. Se você já tem uma conta em um [site de "
-"microblogagem compatível](%%doc.openmublog%%), informe a URL do seu perfil "
+"microblog compatível](%%doc.openmublog%%), informe a URL do seu perfil "
 "abaixo."
 
 #: actions/remotesubscribe.php:112
@@ -2916,25 +2899,24 @@ msgid "Remote subscribe"
 msgstr "Assinatura remota"
 
 #: actions/remotesubscribe.php:124
-#, fuzzy
 msgid "Subscribe to a remote user"
-msgstr "Assinar este usuário"
+msgstr "Assinar um usuário remoto"
 
 #: actions/remotesubscribe.php:129
 msgid "User nickname"
-msgstr "Apelido do usuário"
+msgstr "Identificação do usuário"
 
 #: actions/remotesubscribe.php:130
 msgid "Nickname of the user you want to follow"
-msgstr "Apelido do usuário que você quer seguir"
+msgstr "Identificação do usuário que você quer seguir"
 
 #: actions/remotesubscribe.php:133
 msgid "Profile URL"
-msgstr "URL do Perfil"
+msgstr "URL do perfil"
 
 #: actions/remotesubscribe.php:134
 msgid "URL of your profile on another compatible microblogging service"
-msgstr "URL do seu perfil em outro serviço de microblogagem compatível"
+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
@@ -2946,49 +2928,41 @@ msgid "Invalid profile URL (bad format)"
 msgstr "A URL do perfil é inválida (formato inválido)"
 
 #: actions/remotesubscribe.php:168
-#, fuzzy
 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)."
-msgstr "Não é uma URL de perfil válida (nenhum documento YADIS)."
+msgstr ""
+"Não é uma URL de perfil válida (nenhum documento YADIS ou XRDS inválido)."
 
 #: actions/remotesubscribe.php:176
-#, fuzzy
 msgid "That’s a local profile! Login to subscribe."
 msgstr "Esse é um perfil local! Autentique-se para assinar."
 
 #: actions/remotesubscribe.php:183
-#, fuzzy
 msgid "Couldn’t get a request token."
 msgstr "Não foi possível obter um token de requisição."
 
 #: actions/repeat.php:57
-#, fuzzy
 msgid "Only logged-in users can repeat notices."
-msgstr "As caixas postais são legíveis somente pelo seu próprio usuário."
+msgstr "Apenas usuários autenticados podem repetir mensagens."
 
 #: actions/repeat.php:64 actions/repeat.php:71
-#, fuzzy
 msgid "No notice specified."
-msgstr "Não foi especificado nenhum perfil."
+msgstr "Não foi especificada nenhuma mensagem."
 
 #: actions/repeat.php:76
-#, fuzzy
 msgid "You can't repeat your own notice."
-msgstr "Você não pode se registrar se não aceitar a licença."
+msgstr "Você não pode repetir sua própria mensagem."
 
 #: actions/repeat.php:90
-#, fuzzy
 msgid "You already repeated that notice."
-msgstr "Você já bloqueou esse usuário."
+msgstr "Você já repetiu essa mensagem."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
-#, fuzzy
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
-msgstr "Criar"
+msgstr "Repetida"
 
 #: actions/repeat.php:119
-#, fuzzy
 msgid "Repeated!"
-msgstr "Criar"
+msgstr "Repetida!"
 
 #: actions/replies.php:125 actions/repliesrss.php:68
 #: lib/personalgroupnav.php:105
@@ -2997,24 +2971,24 @@ msgid "Replies to %s"
 msgstr "Respostas para %s"
 
 #: actions/replies.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "Replies to %s, page %d"
-msgstr "Respostas para %s"
+msgstr "Respostas para %s, pag. %d"
 
 #: actions/replies.php:144
 #, php-format
 msgid "Replies feed for %s (RSS 1.0)"
-msgstr ""
+msgstr "Fonte de respostas para %s (RSS 1.0)"
 
 #: actions/replies.php:151
 #, php-format
 msgid "Replies feed for %s (RSS 2.0)"
-msgstr ""
+msgstr "Fonte de respostas para %s (RSS 2.0)"
 
 #: actions/replies.php:158
-#, fuzzy, php-format
+#, php-format
 msgid "Replies feed for %s (Atom)"
-msgstr "Mensagens de %s"
+msgstr "Fonte de respostas para %s (Atom)"
 
 #: actions/replies.php:198
 #, php-format
@@ -3022,6 +2996,8 @@ msgid ""
 "This is the timeline showing replies to %s but %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)."
 
 #: actions/replies.php:203
 #, php-format
@@ -3029,6 +3005,8 @@ msgid ""
 "You can engage other users in a conversation, subscribe to more people or "
 "[join groups](%%action.groups%%)."
 msgstr ""
+"Você pode envolver outros usuários na conversa. Pra isso, assine mais "
+"pessoas ou [associe-se a grupos](%%action.groups%%)."
 
 #: actions/replies.php:205
 #, php-format
@@ -3036,51 +3014,54 @@ msgid ""
 "You can try to [nudge %s](../%s) or [post something to his or her attention]"
 "(%%%%action.newnotice%%%%?status_textarea=%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)."
 
 #: actions/repliesrss.php:72
-#, fuzzy, php-format
+#, php-format
 msgid "Replies to %1$s on %2$s!"
-msgstr "Mensagem para %1$s no %2$s"
+msgstr "Respostas para %1$s no %2$s"
 
 #: actions/sandbox.php:65 actions/unsandbox.php:65
-#, fuzzy
 msgid "You cannot sandbox users on this site."
-msgstr "Você não pode enviar uma mensagem para esse usuário."
+msgstr "Você não pode colocar usuários deste site em isolamento."
 
 #: actions/sandbox.php:72
-#, fuzzy
 msgid "User is already sandboxed."
-msgstr "O usuário bloqueou você."
+msgstr "O usuário já está em isolamento."
 
 #: actions/showfavorites.php:79
-#, fuzzy, php-format
+#, php-format
 msgid "%s's favorite notices, page %d"
-msgstr "Mensagens favoritas de %s"
+msgstr "Mensagens favoritas de %s, pág. %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
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (RSS 1.0)"
-msgstr "Feed para favoritas de %s"
+msgstr "Fonte para favoritas de %s (RSS 1.0)"
 
 #: actions/showfavorites.php:177
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (RSS 2.0)"
-msgstr "Feed para favoritas de %s"
+msgstr "Fonte para favoritas de %s (RSS 2.0)"
 
 #: actions/showfavorites.php:184
-#, fuzzy, php-format
+#, php-format
 msgid "Feed for favorites of %s (Atom)"
-msgstr "Feed para favoritas de %s"
+msgstr "Fonte para favoritas de %s (Atom)"
 
 #: 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 ""
+"Você ainda não marcou nenhuma mensagem como favorita. Clique no botão "
+"\"Favorita\" nas mensagens que você quer guardar para referência futura ou "
+"para destacar."
 
 #: actions/showfavorites.php:207
 #, php-format
@@ -3088,6 +3069,8 @@ msgid ""
 "%s hasn't added any notices to his favorites yet. Post something interesting "
 "they would add to their favorites :)"
 msgstr ""
+"%s não adicionou nenhuma mensagem às suas favoritas. Publique alguma coisa "
+"interessante para para as pessoas marcarem como favorita. :)"
 
 #: actions/showfavorites.php:211
 #, php-format
@@ -3096,90 +3079,87 @@ msgid ""
 "account](%%%%action.register%%%%) and then post something interesting they "
 "would add to their favorites :)"
 msgstr ""
+"%s não adicionou nenhuma mensagem às suas favoritas. Por que você não "
+"[registra uma conta](%%%%action.register%%%%) e publica alguma coisa "
+"interessante para as pessoas marcarem como favorita?  :)"
 
 #: actions/showfavorites.php:242
 msgid "This is a way to share what you like."
-msgstr ""
+msgstr "Esta é uma forma de compartilhar o que você gosta."
 
 #: actions/showgroup.php:82 lib/groupnav.php:86
 #, php-format
 msgid "%s group"
-msgstr ""
+msgstr "Grupo %s"
 
 #: actions/showgroup.php:84
 #, php-format
 msgid "%s group, page %d"
-msgstr ""
+msgstr "Grupo %s, pág. %d"
 
 #: actions/showgroup.php:218
-#, fuzzy
 msgid "Group profile"
-msgstr "Esse perfil não existe."
+msgstr "Perfil do grupo"
 
 #: actions/showgroup.php:263 actions/tagother.php:118
 #: actions/userauthorization.php:167 lib/userprofile.php:177
 msgid "URL"
-msgstr ""
+msgstr "Site"
 
 #: actions/showgroup.php:274 actions/tagother.php:128
 #: actions/userauthorization.php:179 lib/userprofile.php:194
-#, fuzzy
 msgid "Note"
-msgstr "Mensagens"
+msgstr "Mensagem"
 
 #: actions/showgroup.php:284 lib/groupeditform.php:184
 msgid "Aliases"
-msgstr ""
+msgstr "Apelidos"
 
 #: actions/showgroup.php:293
-#, fuzzy
 msgid "Group actions"
-msgstr "Outras opções"
+msgstr "Ações do grupo"
 
 #: actions/showgroup.php:328
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (RSS 1.0)"
-msgstr "Mensagens de %s"
+msgstr "Fonte de mensagens do grupo %s (RSS 1.0)"
 
 #: actions/showgroup.php:334
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (RSS 2.0)"
-msgstr "Mensagens de %s"
+msgstr "Fonte de mensagens do grupo %s (RSS 2.0)"
 
 #: actions/showgroup.php:340
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s group (Atom)"
-msgstr "Mensagens de %s"
+msgstr "Fonte de mensagens do grupo %s (Atom)"
 
 #: actions/showgroup.php:345
-#, fuzzy, php-format
+#, php-format
 msgid "FOAF for %s group"
-msgstr "Mensagens de %s"
+msgstr "FOAF para o grupo %s"
 
 #: actions/showgroup.php:381 actions/showgroup.php:438 lib/groupnav.php:91
-#, fuzzy
 msgid "Members"
-msgstr "Membro desde"
+msgstr "Membros"
 
 #: actions/showgroup.php:386 lib/profileaction.php:117
 #: lib/profileaction.php:148 lib/profileaction.php:236 lib/section.php:95
 #: lib/tagcloudsection.php:71
-#, fuzzy
 msgid "(None)"
-msgstr "(nenhum)"
+msgstr "(Nenhum)"
 
 #: actions/showgroup.php:392
 msgid "All members"
-msgstr ""
+msgstr "Todos os membros"
 
 #: actions/showgroup.php:429 lib/profileaction.php:174
 msgid "Statistics"
 msgstr "Estatísticas"
 
 #: actions/showgroup.php:432
-#, fuzzy
 msgid "Created"
-msgstr "Criar"
+msgstr "Criado"
 
 #: actions/showgroup.php:448
 #, php-format
@@ -3190,22 +3170,29 @@ msgid ""
 "their life and interests. [Join now](%%%%action.register%%%%) to become part "
 "of this group and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
+"**%s** é usuário de um grupo no %%%%site.name%%%%, um serviço de [microblog]"
+"(http://pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre "
+"[StatusNet](http://status.net/). Seus membros compartilham mensagens curtas "
+"sobre suas vidas e interesses. [Associe-se agora](%%%%action.register%%%%) "
+"para se tornar parte deste grupo e muito mais! ([Saiba mais](%%%%doc.help%%%"
+"%))"
 
 #: actions/showgroup.php:454
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
 "wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
 "[StatusNet](http://status.net/) tool. Its members share short messages about "
 "their life and interests. "
 msgstr ""
-"Este é %%site.name%%, um serviço de [micro-blogging](http://pt.wikipedia.org/"
-"wiki/Microblogging)"
+"**%s** é usuário de um grupo no %%%%site.name%%%%, um serviço de [microblog]"
+"(http://pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre "
+"[StatusNet](http://status.net/). Seus membros compartilham mensagens curtas "
+"sobre suas vidas e interesses. "
 
 #: actions/showgroup.php:482
-#, fuzzy
 msgid "Admins"
-msgstr "Admin"
+msgstr "Administradores"
 
 #: actions/showmessage.php:81
 msgid "No such message."
@@ -3213,7 +3200,7 @@ msgstr "Essa mensagem não existe."
 
 #: actions/showmessage.php:98
 msgid "Only the sender and recipient may read this message."
-msgstr "Apenas o remetente e o destinatário podem ler essa mensagem."
+msgstr "Apenas o remetente e o destinatário podem ler esta mensagem."
 
 #: actions/showmessage.php:108
 #, php-format
@@ -3226,55 +3213,57 @@ msgid "Message from %1$s on %2$s"
 msgstr "Mensagem de %1$s no %2$s"
 
 #: actions/shownotice.php:90
-#, fuzzy
 msgid "Notice deleted."
-msgstr "Mensagem publicada"
+msgstr "A mensagem excluída."
 
 #: actions/showstream.php:73
-#, fuzzy, php-format
+#, php-format
 msgid " tagged %s"
-msgstr "Mensagens etiquetadas com %s"
+msgstr " etiquetada %s"
 
 #: actions/showstream.php:79
-#, fuzzy, php-format
+#, php-format
 msgid "%s, page %d"
-msgstr "Recebidas por %s - pág. %d"
+msgstr "%s, pág. %d"
 
 #: actions/showstream.php:122
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s tagged %s (RSS 1.0)"
-msgstr "Mensagens de %s"
+msgstr "Fonte de mensagens de %s etiquetada %s (RSS 1.0)"
 
 #: actions/showstream.php:129
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s (RSS 1.0)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (RSS 1.0)"
 
 #: actions/showstream.php:136
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s (RSS 2.0)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (RSS 2.0)"
 
 #: actions/showstream.php:143
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for %s (Atom)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (Atom)"
 
 #: actions/showstream.php:148
-#, fuzzy, php-format
+#, php-format
 msgid "FOAF for %s"
-msgstr "Envidas para %s"
+msgstr "FOAF de %s"
 
 #: actions/showstream.php:191
 #, php-format
 msgid "This is the timeline for %s but %s hasn't posted anything yet."
 msgstr ""
+"Este é o fluxo público de mensagens de %s, mas %s não publicou nada ainda."
 
 #: actions/showstream.php:196
 msgid ""
 "Seen anything interesting recently? You haven't posted any notices yet, now "
 "would be a good time to start :)"
 msgstr ""
+"Viu alguma coisa interessante recentemente? Você ainda não publicou nenhuma "
+"mensagem. Que tal começar agora? :)"
 
 #: actions/showstream.php:198
 #, php-format
@@ -3282,6 +3271,8 @@ msgid ""
 "You can try to nudge %s or [post something to his or her attention](%%%%"
 "action.newnotice%%%%?status_textarea=%s)."
 msgstr ""
+"Você pode tentar chamar a atenção de %s ou [publicar alguma coisa que "
+"desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%s)."
 
 #: actions/showstream.php:234
 #, php-format
@@ -3291,235 +3282,230 @@ msgid ""
 "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
 "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
 msgstr ""
+"**%s** tem uma conta no %%%%site.name%%%%, um serviço de [microblog](http://"
+"pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre [StatusNet]"
+"(http://status.net/). [Cadastre-se agora](%%%%action.register%%%%) para "
+"acompanhar as mensagens de **%s** e muito mais! ([Saiba mais](%%%%doc.help%%%"
+"%))"
 
 #: actions/showstream.php:239
-#, fuzzy, php-format
+#, 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 ""
-"Este é %%site.name%%, um serviço de [micro-blogging](http://pt.wikipedia.org/"
-"wiki/Microblogging)"
+"**%s** tem uma conta no %%%%site.name%%%%, um serviço de [microblog](http://"
+"pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre [StatusNet]"
+"(http://status.net/). "
 
 #: actions/showstream.php:313
-#, fuzzy, php-format
+#, php-format
 msgid "Repeat of %s"
-msgstr "Respostas para %s"
+msgstr "Repetição de %s"
 
 #: actions/silence.php:65 actions/unsilence.php:65
-#, fuzzy
 msgid "You cannot silence users on this site."
-msgstr "Você não pode enviar uma mensagem para esse usuário."
+msgstr "Você não pode silenciar os usuários neste site."
 
 #: actions/silence.php:72
-#, fuzzy
 msgid "User is already silenced."
-msgstr "O usuário bloqueou você."
+msgstr "O usuário já está silenciado."
 
 #: actions/siteadminpanel.php:69
 msgid "Basic settings for this StatusNet site."
-msgstr ""
+msgstr "Configurações básicas para esta instância do StatusNet."
 
 #: actions/siteadminpanel.php:146
 msgid "Site name must have non-zero length."
-msgstr ""
+msgstr "Você deve digitar alguma coisa para o nome do site."
 
 #: actions/siteadminpanel.php:154
-#, fuzzy
 msgid "You must have a valid contact email address"
-msgstr "Não é um endereço de e-mail válido"
+msgstr "Você deve ter um endereço de e-mail para contato válido."
 
 #: actions/siteadminpanel.php:172
 #, php-format
 msgid "Unknown language \"%s\""
-msgstr ""
+msgstr "Idioma desconhecido \"%s\""
 
 #: actions/siteadminpanel.php:179
 msgid "Invalid snapshot report URL."
-msgstr ""
+msgstr "A URL para o envio das estatísticas é inválida."
 
 #: actions/siteadminpanel.php:185
 msgid "Invalid snapshot run value."
-msgstr ""
+msgstr "O valor de execução da obtenção das estatísticas é inválido."
 
 #: actions/siteadminpanel.php:191
 msgid "Snapshot frequency must be a number."
-msgstr ""
+msgstr "A frequência de geração de estatísticas deve ser um número."
 
 #: actions/siteadminpanel.php:197
 msgid "Minimum text limit is 140 characters."
-msgstr ""
+msgstr "O comprimento máximo do texto é de 140 caracteres."
 
 #: actions/siteadminpanel.php:203
 msgid "Dupe limit must 1 or more seconds."
-msgstr ""
+msgstr "O limite de duplicatas deve ser de um ou mais segundos."
 
 #: actions/siteadminpanel.php:253
 msgid "General"
-msgstr ""
+msgstr "Geral"
 
 #: actions/siteadminpanel.php:256
-#, fuzzy
 msgid "Site name"
-msgstr "Nova mensagem"
+msgstr "Nome do site"
 
 #: actions/siteadminpanel.php:257
 msgid "The name of your site, like \"Yourcompany Microblog\""
-msgstr ""
+msgstr "O nome do seu site, por exemplo \"Microblog da Sua Empresa\""
 
 #: actions/siteadminpanel.php:261
 msgid "Brought by"
-msgstr ""
+msgstr "Disponibilizado por"
 
 #: actions/siteadminpanel.php:262
 msgid "Text used for credits link in footer of each page"
-msgstr ""
+msgstr "Texto utilizado para o link de créditos no rodapé de cada página"
 
 #: actions/siteadminpanel.php:266
 msgid "Brought by URL"
-msgstr ""
+msgstr "URL do disponibilizado por"
 
 #: actions/siteadminpanel.php:267
 msgid "URL used for credits link in footer of each page"
-msgstr ""
+msgstr "URL utilizada para o link de créditos no rodapé de cada página"
 
 #: actions/siteadminpanel.php:271
-#, fuzzy
 msgid "Contact email address for your site"
-msgstr "Novo endereço de e-mail para postar para %s"
+msgstr "Endereço de e-mail para contatos do seu site"
 
 #: actions/siteadminpanel.php:277
-#, fuzzy
 msgid "Local"
-msgstr "Localização"
+msgstr "Local"
 
 #: actions/siteadminpanel.php:288
 msgid "Default timezone"
-msgstr ""
+msgstr "Fuso horário padrão"
 
 #: actions/siteadminpanel.php:289
 msgid "Default timezone for the site; usually UTC."
-msgstr ""
+msgstr "Fuso horário padrão para o seu site; geralmente UTC."
 
 #: actions/siteadminpanel.php:295
-#, fuzzy
 msgid "Default site language"
-msgstr "Idioma preferencial"
+msgstr "Idioma padrão do site"
 
 #: actions/siteadminpanel.php:303
 msgid "URLs"
-msgstr ""
+msgstr "URLs"
 
 #: actions/siteadminpanel.php:306
-#, fuzzy
 msgid "Server"
-msgstr "Recuperar"
+msgstr "Servidor"
 
 #: actions/siteadminpanel.php:306
 msgid "Site's server hostname."
-msgstr ""
+msgstr "Nome de host do servidor do site."
 
 #: actions/siteadminpanel.php:310
 msgid "Fancy URLs"
-msgstr ""
+msgstr "URLs limpas"
 
 #: actions/siteadminpanel.php:312
 msgid "Use fancy (more readable and memorable) URLs?"
-msgstr ""
+msgstr "Utilizar URLs limpas (mais legíveis e memorizáveis)?"
 
 #: actions/siteadminpanel.php:318
-#, fuzzy
 msgid "Access"
-msgstr "Aceitar"
+msgstr "Acesso"
 
 #: actions/siteadminpanel.php:321
-#, fuzzy
 msgid "Private"
-msgstr "Privacidade"
+msgstr "Particular"
 
 #: actions/siteadminpanel.php:323
 msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "Impedir usuários anônimos (não autenticados) de visualizar o site?"
 
 #: actions/siteadminpanel.php:327
-#, fuzzy
 msgid "Invite only"
-msgstr "Convidar"
+msgstr "Somente convidados"
 
 #: actions/siteadminpanel.php:329
 msgid "Make registration invitation only."
-msgstr ""
+msgstr "Cadastro liberado somente para convidados."
 
 #: actions/siteadminpanel.php:333
-#, fuzzy
 msgid "Closed"
-msgstr "Bloquear"
+msgstr "Fechado"
 
 #: actions/siteadminpanel.php:335
 msgid "Disable new registrations."
-msgstr ""
+msgstr "Desabilita novos registros."
 
 #: actions/siteadminpanel.php:341
 msgid "Snapshots"
-msgstr ""
+msgstr "Estatísticas"
 
 #: actions/siteadminpanel.php:344
 msgid "Randomly during Web hit"
-msgstr ""
+msgstr "Aleatoriamente durante o funcionamento"
 
 #: actions/siteadminpanel.php:345
 msgid "In a scheduled job"
-msgstr ""
+msgstr "Em horários pré-definidos"
 
 #: actions/siteadminpanel.php:347
 msgid "Data snapshots"
-msgstr ""
+msgstr "Estatísticas dos dados"
 
 #: actions/siteadminpanel.php:348
 msgid "When to send statistical data to status.net servers"
-msgstr ""
+msgstr "Quando enviar dados estatísticos para os servidores status.net"
 
 #: actions/siteadminpanel.php:353
 msgid "Frequency"
-msgstr ""
+msgstr "Frequentemente"
 
 #: actions/siteadminpanel.php:354
 msgid "Snapshots will be sent once every N web hits"
-msgstr ""
+msgstr "As estatísticas serão enviadas uma vez a cada N usos da web"
 
 #: actions/siteadminpanel.php:359
 msgid "Report URL"
-msgstr ""
+msgstr "URL para envio"
 
 #: actions/siteadminpanel.php:360
 msgid "Snapshots will be sent to this URL"
-msgstr ""
+msgstr "As estatísticas serão enviadas para esta URL"
 
 #: actions/siteadminpanel.php:367
 msgid "Limits"
-msgstr ""
+msgstr "Limites"
 
 #: actions/siteadminpanel.php:370
 msgid "Text limit"
-msgstr ""
+msgstr "Limite do texto"
 
 #: actions/siteadminpanel.php:370
 msgid "Maximum number of characters for notices."
-msgstr ""
+msgstr "Número máximo de caracteres para as mensagens."
 
 #: actions/siteadminpanel.php:374
 msgid "Dupe limit"
-msgstr ""
+msgstr "Limite de duplicatas"
 
 #: actions/siteadminpanel.php:374
 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
-#, fuzzy
 msgid "Save site settings"
-msgstr "Configurações do avatar"
+msgstr "Salvar as configurações do site"
 
 #: actions/smssettings.php:58
 msgid "SMS Settings"
@@ -3528,12 +3514,11 @@ msgstr "Configuração de SMS"
 #: actions/smssettings.php:69
 #, php-format
 msgid "You can receive SMS messages through email from %%site.name%%."
-msgstr "Você pode receber mensagens SMS do %%site.name%% através do e-mail."
+msgstr "Você pode receber mensagens SMS de %%site.name%% através do e-mail."
 
 #: actions/smssettings.php:91
-#, fuzzy
 msgid "SMS is not available."
-msgstr "Esta página não está disponível em um "
+msgstr "SMS não está disponível."
 
 #: actions/smssettings.php:112
 msgid "Current confirmed SMS-enabled phone number."
@@ -3584,14 +3569,12 @@ msgid "That phone number already belongs to another user."
 msgstr "Esse número de telefone já pertence à outro usuário."
 
 #: actions/smssettings.php:347
-#, fuzzy
 msgid ""
 "A confirmation code was sent to the phone number you added. Check your phone "
 "for the code and instructions on how to use it."
 msgstr ""
 "Um código de confirmação foi enviado para o número de telefone que você "
-"informou. Verifique sua caixa de entrada (e de spam!) para o código e "
-"instruções sobre como usá-lo."
+"informou. Verifique no seu telefone o código e instruções sobre como usá-lo."
 
 #: actions/smssettings.php:374
 msgid "That is the wrong confirmation number."
@@ -3602,9 +3585,8 @@ msgid "That is not your phone number."
 msgstr "Esse não é seu número de telefone."
 
 #: actions/smssettings.php:465
-#, fuzzy
 msgid "Mobile carrier"
-msgstr "Selecione uma operadora"
+msgstr "Operadora de celular"
 
 #: actions/smssettings.php:469
 msgid "Select a carrier"
@@ -3616,9 +3598,8 @@ msgid ""
 "Mobile carrier for your phone. If you know a carrier that accepts SMS over "
 "email but isn't listed here, send email to let us know at %s."
 msgstr ""
-"A operadora móvel do seu celular. Se você conhece uma operadora que aceita "
-"SMS via e-mail que não está listada aqui, informe-nos enviando uma mensagem "
-"para %s."
+"A operadora do seu celular. Se você conhece uma operadora que aceita SMS via "
+"e-mail que não está listada aqui, informe-nos enviando uma mensagem para %s."
 
 #: actions/smssettings.php:498
 msgid "No code entered"
@@ -3641,14 +3622,14 @@ msgid "Subscribed"
 msgstr "Assinado"
 
 #: actions/subscribers.php:50
-#, fuzzy, php-format
+#, php-format
 msgid "%s subscribers"
-msgstr "Assinantes"
+msgstr "Assinantes de %s"
 
 #: actions/subscribers.php:52
 #, php-format
 msgid "%s subscribers, page %d"
-msgstr ""
+msgstr "Assinantes de %s, pág. %d"
 
 #: actions/subscribers.php:63
 msgid "These are the people who listen to your notices."
@@ -3664,11 +3645,13 @@ msgid ""
 "You have no subscribers. Try subscribing to people you know and they might "
 "return the favor"
 msgstr ""
+"Você não tem nenhum assinante. Experimente assinar pessoas que você conhece "
+"e eles podem devolver o favor"
 
 #: actions/subscribers.php:110
 #, php-format
 msgid "%s has no subscribers. Want to be the first?"
-msgstr ""
+msgstr "%s não possui nenhum assinante. Quer ser o(a) primeiro(a)?"
 
 #: actions/subscribers.php:114
 #, php-format
@@ -3676,16 +3659,18 @@ msgid ""
 "%s has no subscribers. Why not [register an account](%%%%action.register%%%"
 "%) and be the first?"
 msgstr ""
+"%s não possui nenhum assinante. Por que você não [registra uma conta](%%%%"
+"action.register%%%%) e se torna o(a) primeiro(a)?"
 
 #: actions/subscriptions.php:52
 #, php-format
 msgid "%s subscriptions"
-msgstr "%s assinaturas"
+msgstr "Assinaturas de %s"
 
 #: actions/subscriptions.php:54
 #, php-format
 msgid "%s subscriptions, page %d"
-msgstr "%s assinaturas, página %d"
+msgstr "Assinaturas de %s, pág. %d"
 
 #: actions/subscriptions.php:65
 msgid "These are the people whose notices you listen to."
@@ -3705,11 +3690,17 @@ msgid ""
 "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
 "automatically subscribe to people you already follow there."
 msgstr ""
+"Você não está acompanhando as mensagens de ninguém. Experimente assinar "
+"algumas pessoas que você conhece. Você pode [procurar por pessoas](%%action."
+"peoplesearch%%) e verificar os membros nos grupos que você está interessado "
+"e nossos [usuários de destaque](%%action.featured%%). Se você for um "
+"[usuário do Twitter](%%action.twittersettings%%), você pode assinar "
+"automaticamente as pessoas que já segue lá."
 
 #: actions/subscriptions.php:123 actions/subscriptions.php:127
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not listening to anyone."
-msgstr "%1$s agora está acompanhando "
+msgstr "%s não está acompanhando ninguém."
 
 #: actions/subscriptions.php:194
 msgid "Jabber"
@@ -3720,56 +3711,53 @@ msgid "SMS"
 msgstr "SMS"
 
 #: actions/tag.php:68
-#, fuzzy, php-format
+#, php-format
 msgid "Notices tagged with %s, page %d"
-msgstr "Mensagens etiquetadas com %s"
+msgstr "Mensagens etiquetadas com %s, pág. %d"
 
 #: actions/tag.php:86
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 1.0)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (RSS 1.0)"
 
 #: actions/tag.php:92
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (RSS 2.0)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (RSS 2.0)"
 
 #: actions/tag.php:98
-#, fuzzy, php-format
+#, php-format
 msgid "Notice feed for tag %s (Atom)"
-msgstr "Feed de mensagens de %s"
+msgstr "Fonte de mensagens de %s (Atom)"
 
 #: actions/tagother.php:39
-#, fuzzy
 msgid "No ID argument."
 msgstr "Nenhum argumento de ID."
 
 #: actions/tagother.php:65
 #, php-format
 msgid "Tag %s"
-msgstr "Tag %s"
+msgstr "Etiqueta %s"
 
 #: actions/tagother.php:77 lib/userprofile.php:75
-#, fuzzy
 msgid "User profile"
-msgstr "O usuário não tem perfil."
+msgstr "Perfil do usuário"
 
 #: actions/tagother.php:81 lib/userprofile.php:102
 msgid "Photo"
-msgstr ""
+msgstr "Imagem"
 
 #: actions/tagother.php:141
-#, fuzzy
 msgid "Tag user"
-msgstr "Etiquetas"
+msgstr "Etiquetar o usuário"
 
 #: actions/tagother.php:151
 msgid ""
 "Tags for this user (letters, numbers, -, ., and _), comma- or space- "
 "separated"
 msgstr ""
-"Etiquetas desse usuário (letras, números, -, ., e _), separadas por vírgulas "
-"ou espaços"
+"Etiquetas para este usuário (letras, números, -, ., e _), separadas por "
+"vírgulas ou espaços"
 
 #: actions/tagother.php:193
 msgid ""
@@ -3788,26 +3776,23 @@ msgstr ""
 
 #: actions/tagrss.php:35
 msgid "No such tag."
-msgstr "Essa etiqueta não existe."
+msgstr "Esta etiqueta não existe."
 
 #: actions/twitapitrends.php:87
 msgid "API method under construction."
 msgstr "O método da API está em construção."
 
 #: actions/unblock.php:59
-#, fuzzy
 msgid "You haven't blocked that user."
-msgstr "Você  bloqueou esse usuário."
+msgstr "Você não bloqueou esse usuário."
 
 #: actions/unsandbox.php:72
-#, fuzzy
 msgid "User is not sandboxed."
-msgstr "O usuário bloqueou você."
+msgstr "O usuário não está em isolamento."
 
 #: actions/unsilence.php:72
-#, fuzzy
 msgid "User is not silenced."
-msgstr "O usuário não tem perfil."
+msgstr "O usuário não está silenciado."
 
 #: actions/unsubscribe.php:77
 msgid "No profile id in request."
@@ -3825,6 +3810,8 @@ msgstr "Cancelado"
 #, php-format
 msgid "Listenee stream license ‘%s’ is not compatible with site license ‘%s’."
 msgstr ""
+"A licença '%s' do fluxo do usuário não é compatível com a licença '%s' do "
+"site."
 
 #: actions/useradminpanel.php:58 lib/adminpanelaction.php:305
 #: lib/personalgroupnav.php:115
@@ -3833,20 +3820,21 @@ msgstr "Usuário"
 
 #: actions/useradminpanel.php:69
 msgid "User settings for this StatusNet site."
-msgstr ""
+msgstr "Configurações de usuário para este site StatusNet."
 
 #: actions/useradminpanel.php:149
 msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "Limite da descrição inválido. Seu valor deve ser numérico."
 
 #: actions/useradminpanel.php:155
 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
 #, php-format
 msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr ""
+msgstr "Assinatura padrão inválida: '%1$s' não é um usuário."
 
 #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108
 #: lib/personalgroupnav.php:109
@@ -3855,87 +3843,81 @@ msgstr "Perfil"
 
 #: actions/useradminpanel.php:222
 msgid "Bio Limit"
-msgstr ""
+msgstr "Limite da descrição"
 
 #: actions/useradminpanel.php:223
 msgid "Maximum length of a profile bio in characters."
-msgstr ""
+msgstr "Comprimento máximo da descrição do perfil, em caracteres."
 
 #: actions/useradminpanel.php:231
-#, fuzzy
 msgid "New users"
-msgstr "Convidar novos usuários"
+msgstr "Novos usuários"
 
 #: actions/useradminpanel.php:235
 msgid "New user welcome"
-msgstr ""
+msgstr "Boas vindas aos novos usuários"
 
 #: actions/useradminpanel.php:236
 msgid "Welcome text for new users (Max 255 chars)."
-msgstr ""
+msgstr "Texto de boas vindas para os novos usuários (máx. 255 caracteres)."
 
 #: actions/useradminpanel.php:241
-#, fuzzy
 msgid "Default subscription"
-msgstr "Todas as assinaturas"
+msgstr "Assinatura padrão"
 
 #: actions/useradminpanel.php:242
-#, fuzzy
 msgid "Automatically subscribe new users to this user."
-msgstr "Assinar automaticamente à quem me assinar"
+msgstr "Os novos usuários assinam esse usuário automaticamente."
 
 #: actions/useradminpanel.php:251
-#, fuzzy
 msgid "Invitations"
-msgstr "Convite(s) enviado(s)"
+msgstr "Convites"
 
 #: actions/useradminpanel.php:256
-#, fuzzy
 msgid "Invitations enabled"
-msgstr "Convite(s) enviado(s)"
+msgstr "Convites habilitados"
 
 #: actions/useradminpanel.php:258
 msgid "Whether to allow users to invite new users."
-msgstr ""
+msgstr "Define se os usuários podem ou não convidar novos usuários."
 
 #: actions/useradminpanel.php:265
 msgid "Sessions"
-msgstr ""
+msgstr "Sessões"
 
 #: actions/useradminpanel.php:270
 msgid "Handle sessions"
-msgstr ""
+msgstr "Gerenciar sessões"
 
 #: actions/useradminpanel.php:272
 msgid "Whether to handle sessions ourselves."
-msgstr ""
+msgstr "Define se nós cuidamos do gerenciamento das sessões."
 
 #: actions/useradminpanel.php:276
 msgid "Session debugging"
-msgstr ""
+msgstr "Depuração da sessão"
 
 #: actions/useradminpanel.php:278
 msgid "Turn on debugging output for sessions."
-msgstr ""
+msgstr "Ativa a saída de depuração para as sessões."
 
 #: actions/userauthorization.php:105
 msgid "Authorize subscription"
 msgstr "Autorizar a assinatura"
 
 #: actions/userauthorization.php:110
-#, fuzzy
 msgid ""
 "Please check these details to make sure that you want to subscribe to this "
 "user’s notices. If you didn’t just ask to subscribe to someone’s notices, "
 "click “Reject”."
 msgstr ""
-"Por favor, verifique estes detalhes para ter certeza que você quer seguir as "
-"mensagens deste usuário. Se você não solicitou seguir as mensagens de "
-"alguém, clique em \"Cancelar\"."
+"Por favor, verifique estes detalhes para ter certeza que você quer assinar "
+"as mensagens deste usuário. Se você não solicitou assinar as mensagens de "
+"alguém, clique em \"Recusar\"."
 
 #: actions/userauthorization.php:188
 msgid "License"
-msgstr ""
+msgstr "Licença"
 
 #: actions/userauthorization.php:209
 msgid "Accept"
@@ -3951,9 +3933,8 @@ msgid "Reject"
 msgstr "Recusar"
 
 #: actions/userauthorization.php:212
-#, fuzzy
 msgid "Reject this subscription"
-msgstr "%s assinaturas"
+msgstr "Recusar esta assinatura"
 
 #: actions/userauthorization.php:225
 msgid "No authorization request!"
@@ -3964,7 +3945,6 @@ msgid "Subscription authorized"
 msgstr "A assinatura foi autorizada"
 
 #: actions/userauthorization.php:249
-#, fuzzy
 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 "
@@ -3979,90 +3959,90 @@ msgid "Subscription rejected"
 msgstr "A assinatura foi recusada"
 
 #: actions/userauthorization.php:261
-#, fuzzy
 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 ""
 "A assinatura foi rejeitada, mas não foi informada nenhuma URL de retorno. "
-"Verifique as instruções do site para maiores detalhes em como rejeitar "
+"Verifique as instruções do site para detalhes sobre como rejeitar "
 "completamente a assinatura."
 
 #: actions/userauthorization.php:296
 #, php-format
 msgid "Listener URI ‘%s’ not found here"
-msgstr ""
+msgstr "A URI ‘%s’ do usuário não foi encontrada aqui"
 
 #: actions/userauthorization.php:301
 #, php-format
 msgid "Listenee URI ‘%s’ is too long."
-msgstr ""
+msgstr "A URI ‘%s’ do usuário é muito extensa."
 
 #: actions/userauthorization.php:307
 #, php-format
 msgid "Listenee URI ‘%s’ is a local user."
-msgstr ""
+msgstr "A URI ‘%s’ é de um usuário local."
 
 #: actions/userauthorization.php:322
 #, php-format
 msgid "Profile URL ‘%s’ is for a local user."
-msgstr ""
+msgstr "A URL ‘%s’ do perfil é de um usuário local."
 
 #: actions/userauthorization.php:338
 #, php-format
 msgid "Avatar URL ‘%s’ is not valid."
-msgstr ""
+msgstr "A URL ‘%s’ do avatar não é válida."
 
 #: actions/userauthorization.php:343
-#, fuzzy, php-format
+#, php-format
 msgid "Can’t read avatar URL ‘%s’."
-msgstr "Não é possível ler a URL '%s' do avatar"
+msgstr "Não é possível ler a URL '%s' do avatar."
 
 #: actions/userauthorization.php:348
-#, fuzzy, php-format
+#, php-format
 msgid "Wrong image type for avatar URL ‘%s’."
-msgstr "Tipo de imagem errado para '%s'"
+msgstr "Tipo de imagem errado para a URL '%s' do avatar."
 
 #: actions/userbyid.php:70
-#, fuzzy
 msgid "No ID."
 msgstr "Nenhuma ID."
 
 #: actions/userdesignsettings.php:76 lib/designsettings.php:65
-#, fuzzy
 msgid "Profile design"
-msgstr "Configurações do perfil"
+msgstr "Aparência do perfil"
 
 #: 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 ""
+"Personalize a aparência do seu perfil, com uma imagem de fundo e uma paleta "
+"de cores da sua preferência."
 
 #: actions/userdesignsettings.php:282
 msgid "Enjoy your hotdog!"
-msgstr ""
+msgstr "Aproveite o seu cachorro-quente!"
 
 #: actions/usergroups.php:64
 #, php-format
 msgid "%s groups, page %d"
-msgstr "Grupos de %s, página %d"
+msgstr "Grupos de %s, pág. %d"
 
 #: actions/usergroups.php:130
-#, fuzzy
 msgid "Search for more groups"
-msgstr "Pesquisar por pessoa ou texto"
+msgstr "Procurar por outros grupos"
 
 #: actions/usergroups.php:153
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a member of any group."
-msgstr "Você não está assinando esse perfil."
+msgstr "%s não é membro de nenhum grupo."
 
 #: actions/usergroups.php:158
 #, php-format
 msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
 msgstr ""
+"Experimente [procurar por grupos](%%action.groupsearch%%) e associar-se à "
+"eles."
 
 #: classes/File.php:137
 #, php-format
@@ -4070,21 +4050,22 @@ msgid ""
 "No file may be larger than %d bytes and the file you sent was %d bytes. Try "
 "to upload a smaller version."
 msgstr ""
+"Nenhum arquivo pode ser maior que %d bytes e o arquivo que você enviou "
+"possui %d bytes. Experimente enviar uma versão menor."
 
 #: classes/File.php:147
 #, php-format
 msgid "A file this large would exceed your user quota of %d bytes."
-msgstr ""
+msgstr "Um arquivo deste tamanho excederá a sua conta de %d bytes."
 
 #: classes/File.php:154
 #, php-format
 msgid "A file this large would exceed your monthly quota of %d bytes."
-msgstr ""
+msgstr "Um arquivo deste tamanho excederá a sua conta mensal de %d bytes."
 
 #: classes/Message.php:45
-#, fuzzy
 msgid "You are banned from sending direct messages."
-msgstr "Ocorreu um erro durante o envio da mensagem direta."
+msgstr "Você está proibido de enviar mensagens diretas."
 
 #: classes/Message.php:61
 msgid "Could not insert message."
@@ -4097,12 +4078,11 @@ msgstr "Não foi possível atualizar a mensagem com a nova URI."
 #: classes/Notice.php:172
 #, php-format
 msgid "DB error inserting hashtag: %s"
-msgstr "Erro no banco de dados durante a inserção de hashtag: %s"
+msgstr "Erro no banco de dados durante a inserção da hashtag: %s"
 
 #: classes/Notice.php:226
-#, fuzzy
 msgid "Problem saving notice. Too long."
-msgstr "Problema ao salvar a mensagem."
+msgstr "Problema no salvamento da mensagem. Ela é muito extensa."
 
 #: classes/Notice.php:230
 msgid "Problem saving notice. Unknown user."
@@ -4116,45 +4096,43 @@ msgstr ""
 "novamente daqui a alguns minutos."
 
 #: classes/Notice.php:241
-#, fuzzy
 msgid ""
 "Too many duplicate messages too quickly; 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."
+"Muitas mensagens duplicadas em um período curto de tempo; dê uma respirada e "
+"publique novamente daqui a alguns minutos."
 
 #: classes/Notice.php:247
 msgid "You are banned from posting notices on this site."
-msgstr "Você foi banido de publicar mensagens nesse site."
+msgstr "Você está proibido de publicar mensagens neste site."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
-msgstr "Problema ao salvar a mensagem."
+msgstr "Problema no salvamento da mensagem."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Erro no banco de dados na inserção da reposta: %s"
 
-#: classes/Notice.php:1371
-#, fuzzy, php-format
+#: classes/Notice.php:1361
+#, php-format
 msgid "RT @%1$s %2$s"
-msgstr "%1$s (%2$s)"
+msgstr "RT @%1$s %2$s"
 
 #: classes/User.php:368
-#, fuzzy, php-format
+#, php-format
 msgid "Welcome to %1$s, @%2$s!"
-msgstr "Mensagem para %1$s no %2$s"
+msgstr "Bem vindo(a) a %1$s, @%2$s!"
 
 #: classes/User_group.php:380
 msgid "Could not create group."
 msgstr "Não foi possível criar o grupo."
 
 #: classes/User_group.php:409
-#, fuzzy
 msgid "Could not set group membership."
-msgstr "Não foi possível salvar a assinatura."
+msgstr "Não foi possível configurar a associação ao grupo."
 
 #: lib/accountsettingsaction.php:108
 msgid "Change your profile settings"
@@ -4166,16 +4144,15 @@ msgstr "Enviar um avatar"
 
 #: lib/accountsettingsaction.php:116
 msgid "Change your password"
-msgstr "Altere a sua senha"
+msgstr "Alterar a sua senha"
 
 #: lib/accountsettingsaction.php:120
 msgid "Change email handling"
 msgstr "Configurações de uso do e-mail"
 
 #: lib/accountsettingsaction.php:124
-#, fuzzy
 msgid "Design your profile"
-msgstr "O usuário não tem perfil."
+msgstr "Mude a aparência do seu perfil"
 
 #: lib/accountsettingsaction.php:128
 msgid "Other"
@@ -4194,244 +4171,237 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Página sem título"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Navegação primária no site"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Início"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
-msgstr "Perfil pessoal e mensagens dos amigos"
+msgstr "Perfil pessoal e fluxo de mensagens dos amigos"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Conta"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
-msgstr "Alterar email, avatar, senha, perfil"
+msgstr "Mude seu e-mail, avatar, senha, perfil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Conectar"
 
-#: lib/action.php:436
-#, fuzzy
+#: lib/action.php:437
 msgid "Connect to services"
-msgstr "Não foi possível redirecionar para o servidor: %s"
+msgstr "Conecte-se a outros serviços"
 
-#: lib/action.php:440
-#, fuzzy
+#: lib/action.php:441
 msgid "Change site configuration"
-msgstr "Navegação primária no site"
+msgstr "Mude as configurações do site"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Convidar"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Sair"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
-msgstr "Sair deste site"
+msgstr "Sai do site"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
-msgstr "Criar uma nova conta"
+msgstr "Cria uma conta"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
-msgstr "Entrar"
+msgstr "Autentique-se no site"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Ajuda"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
-msgstr "Ajuda"
+msgstr "Ajudem-me!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Procurar"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
-msgstr "Pesquisar por pessoa ou texto"
+msgstr "Procura por pessoas ou textos"
 
-#: lib/action.php:485
-#, fuzzy
+#: lib/action.php:486
 msgid "Site notice"
-msgstr "Nova mensagem"
+msgstr "Mensagem do site"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
-msgstr ""
+msgstr "Visualizações locais"
 
-#: lib/action.php:617
-#, fuzzy
+#: lib/action.php:618
 msgid "Page notice"
-msgstr "Nova mensagem"
+msgstr "Notícia da página"
 
-#: lib/action.php:719
-#, fuzzy
+#: lib/action.php:720
 msgid "Secondary site navigation"
-msgstr "Navegação pelas assinaturas"
+msgstr "Navegação secundária no site"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Sobre"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
-msgstr ""
+msgstr "Termos de uso"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Privacidade"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Fonte"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Contato"
 
-#: lib/action.php:741
-#, fuzzy
+#: lib/action.php:742
 msgid "Badge"
-msgstr "Chamar a atenção"
+msgstr "Mini-aplicativo"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
-msgstr ""
+msgstr "Licença do software StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
-"**%%site.name%%** é um serviço de microblogagem disponibilizado por [%%site."
+"**%%site.name%%** é um serviço de microblog disponibilizado por [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
-msgstr "**%%site.name%%** é um serviço de microblogagem. "
+msgstr "**%%site.name%%** é um serviço de microblog. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, 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 ""
-"Ele funciona sob o software de microblogagem [StatusNet](http://status."
-"net/), versão %s, disponível sob a [GNU Affero General Public License] "
-"(http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
+"Ele funciona sobre o software de microblog [StatusNet](http://status.net/), "
+"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:790
-#, fuzzy
+#: lib/action.php:791
 msgid "Site content license"
-msgstr "Procure no conteúdo das mensagens"
+msgstr "Licença do conteúdo do site"
 
-#: lib/action.php:799
-#, fuzzy
+#: lib/action.php:800
 msgid "All "
-msgstr "Todas"
+msgstr "Todas "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
-msgstr "licença"
+msgstr "licença."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Paginação"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Próximo"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Anterior"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
-msgstr ""
-"Ocorreu um problema com o seu token de sessão. Tente novamente, por favor."
+msgstr "Ocorreu um problema com o seu token de sessão."
 
 #: lib/adminpanelaction.php:96
-#, fuzzy
 msgid "You cannot make changes to this site."
-msgstr "Você não pode enviar uma mensagem para esse usuário."
+msgstr "Você não pode fazer alterações neste site."
 
 #: lib/adminpanelaction.php:195
-#, fuzzy
 msgid "showForm() not implemented."
-msgstr "O comando não foi implementado ainda."
+msgstr "showForm() não implementado."
 
 #: lib/adminpanelaction.php:224
-#, fuzzy
 msgid "saveSettings() not implemented."
-msgstr "O comando não foi implementado ainda."
+msgstr "saveSettings() não implementado."
 
 #: lib/adminpanelaction.php:247
-#, fuzzy
 msgid "Unable to delete design setting."
-msgstr "Não foi possível salvar suas configurações do Twitter!"
+msgstr "Não foi possível excluir as configurações da aparência."
 
 #: lib/adminpanelaction.php:300
-#, fuzzy
 msgid "Basic site configuration"
-msgstr "Confirmação do endereço de e-mail"
+msgstr "Configuração básica do site"
 
 #: lib/adminpanelaction.php:303
-#, fuzzy
 msgid "Design configuration"
-msgstr "Confirmação de SMS"
+msgstr "Configuração da aparência"
 
 #: lib/adminpanelaction.php:306 lib/adminpanelaction.php:309
-#, fuzzy
 msgid "Paths configuration"
-msgstr "Confirmação de SMS"
+msgstr "Configuração dos caminhos"
 
 #: lib/attachmentlist.php:87
 msgid "Attachments"
-msgstr ""
+msgstr "Anexos"
 
 #: lib/attachmentlist.php:265
 msgid "Author"
-msgstr ""
+msgstr "Autor"
 
 #: lib/attachmentlist.php:278
-#, fuzzy
 msgid "Provider"
-msgstr "Perfil"
+msgstr "Operadora"
 
 #: lib/attachmentnoticesection.php:67
 msgid "Notices where this attachment appears"
-msgstr ""
+msgstr "Mensagens onde este anexo aparece"
 
 #: lib/attachmenttagcloudsection.php:48
 msgid "Tags for this attachment"
-msgstr ""
+msgstr "Etiquetas para este anexo"
+
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Alterar a senha"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Alterar a senha"
 
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
@@ -4450,19 +4420,18 @@ msgid "Sorry, this command is not yet implemented."
 msgstr "Desculpe, mas esse comando ainda não foi implementado."
 
 #: lib/command.php:88
-#, fuzzy, php-format
+#, php-format
 msgid "Could not find a user with nickname %s"
-msgstr ""
-"Não foi possível atualizar o usuário com o endereço de e-mail confirmado."
+msgstr "Não foi possível encontrar um usuário com a identificação %s"
 
 #: lib/command.php:92
 msgid "It does not make a lot of sense to nudge yourself!"
-msgstr ""
+msgstr "Não faz muito sentido chamar a sua própria atenção!"
 
 #: lib/command.php:99
-#, fuzzy, php-format
+#, php-format
 msgid "Nudge sent to %s"
-msgstr "Chamada de atenção enviada"
+msgstr "Foi enviada a chamada de atenção para %s"
 
 #: lib/command.php:126
 #, php-format
@@ -4471,10 +4440,13 @@ msgid ""
 "Subscribers: %2$s\n"
 "Notices: %3$s"
 msgstr ""
+"Assinaturas: %1$s\n"
+"Assinantes: %2$s\n"
+"Mensagens: %3$s"
 
 #: lib/command.php:152 lib/command.php:399 lib/command.php:460
 msgid "Notice with that id does not exist"
-msgstr ""
+msgstr "Não existe uma mensagem com essa id"
 
 #: lib/command.php:168 lib/command.php:415 lib/command.php:476
 #: lib/command.php:532
@@ -4511,50 +4483,46 @@ msgid "About: %s"
 msgstr "Sobre: %s"
 
 #: lib/command.php:358 scripts/xmppdaemon.php:301
-#, fuzzy, php-format
+#, php-format
 msgid "Message too long - maximum is %d characters, you sent %d"
 msgstr ""
-"A mensagem é muito extensa - o máximo são 140 caracteres e você enviou %d"
+"A mensagem é muito extensa - o máximo são %d caracteres e você enviou %d"
 
 #: lib/command.php:378
 msgid "Error sending direct message."
 msgstr "Ocorreu um erro durante o envio da mensagem direta."
 
 #: lib/command.php:422
-#, fuzzy
 msgid "Cannot repeat your own notice"
-msgstr "Não é possível ligar a notificação."
+msgstr "Você não pode repetir sua própria mensagem"
 
 #: lib/command.php:427
-#, fuzzy
 msgid "Already repeated that notice"
-msgstr "Excluir esta mensagem"
+msgstr "Você já repetiu essa mensagem"
 
 #: lib/command.php:435
-#, fuzzy, php-format
+#, php-format
 msgid "Notice from %s repeated"
-msgstr "Mensagem publicada"
+msgstr "Mensagem de %s repetida"
 
 #: lib/command.php:437
-#, fuzzy
 msgid "Error repeating notice."
-msgstr "Problema ao salvar a mensagem."
+msgstr "Erro na repetição da mensagem."
 
 #: lib/command.php:491
-#, fuzzy, php-format
+#, php-format
 msgid "Notice too long - maximum is %d characters, you sent %d"
 msgstr ""
-"A mensagem é muito extensa - o máximo são 140 caracteres e você enviou %d"
+"A mensagem é muito extensa - o máximo são %d caracteres e você enviou %d"
 
 #: lib/command.php:500
-#, fuzzy, php-format
+#, php-format
 msgid "Reply to %s sent"
-msgstr "Responder a esta mensagem"
+msgstr "A resposta a %s foi enviada"
 
 #: lib/command.php:502
-#, fuzzy
 msgid "Error saving notice."
-msgstr "Problema ao salvar a mensagem."
+msgstr "Erro no salvamento da mensagem."
 
 #: lib/command.php:556
 msgid "Specify the name of the user to subscribe to"
@@ -4567,7 +4535,7 @@ msgstr "Efetuada a assinatura de %s"
 
 #: lib/command.php:584
 msgid "Specify the name of the user to unsubscribe from"
-msgstr "Especifique o nome do usuário que deixará de ser assinado"
+msgstr "Especifique o nome do usuário cuja assinatura será cancelada"
 
 #: lib/command.php:591
 #, php-format
@@ -4584,7 +4552,7 @@ msgstr "Notificação desligada."
 
 #: lib/command.php:614
 msgid "Can't turn off notification."
-msgstr "Não é possível desligar a notificação"
+msgstr "Não é possível desligar a notificação."
 
 #: lib/command.php:635
 msgid "Notification on."
@@ -4596,50 +4564,49 @@ msgstr "Não é possível ligar a notificação."
 
 #: lib/command.php:650
 msgid "Login command is disabled"
-msgstr ""
+msgstr "O comando para autenticação está desabilitado"
 
 #: lib/command.php:664
-#, fuzzy, php-format
+#, php-format
 msgid "Could not create login token for %s"
-msgstr "Não foi possível criar a favorita."
+msgstr "Não foi possível criar o token de autenticação para %s"
 
 #: lib/command.php:669
 #, 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:685
-#, fuzzy
 msgid "You are not subscribed to anyone."
-msgstr "Você não está assinando esse perfil."
+msgstr "Você não está assinando ninguém."
 
 #: lib/command.php:687
 msgid "You are subscribed to this person:"
 msgid_plural "You are subscribed to these people:"
-msgstr[0] "Você já está assinando esses usuários:"
-msgstr[1] "Você já está assinando esses usuários:"
+msgstr[0] "Você já está assinando esta pessoa:"
+msgstr[1] "Você já está assinando estas pessoas:"
 
 #: lib/command.php:707
-#, fuzzy
 msgid "No one is subscribed to you."
-msgstr "Não foi possível fazer com que o outros o sigam."
+msgstr "Ninguém o assinou ainda."
 
 #: lib/command.php:709
 msgid "This person is subscribed to you:"
 msgid_plural "These people are subscribed to you:"
-msgstr[0] "Não foi possível fazer com que o outros o sigam."
-msgstr[1] "Não foi possível fazer com que o outros o sigam."
+msgstr[0] "Esta pessoa está assinando você:"
+msgstr[1] "Estas pessoas estão assinando você:"
 
 #: lib/command.php:729
-#, fuzzy
 msgid "You are not a member of any groups."
-msgstr "Você não está assinando esse perfil."
+msgstr "Você não é membro de nenhum grupo."
 
 #: lib/command.php:731
 msgid "You are a member of this group:"
 msgid_plural "You are a member of these groups:"
-msgstr[0] "Você não é membro deste grupo."
-msgstr[1] "Você não é membro deste grupo."
+msgstr[0] "Você é membro deste grupo:"
+msgstr[1] "Você é membro destes grupos:"
 
 #: lib/command.php:745
 msgid ""
@@ -4681,32 +4648,68 @@ msgid ""
 "tracks - not yet implemented.\n"
 "tracking - not yet implemented.\n"
 msgstr ""
+"Comandos:\n"
+"on - ativa as notificações\n"
+"off - desativa as notificações\n"
+"help - exibe esta ajuda\n"
+"follow <identificação> - assina o usuário\n"
+"groups - lista os grupos aos quais você se associou\n"
+"subscriptions - lista as pessoas que você segue\n"
+"subscribers - lista as pessoas que seguem você\n"
+"leave <identificação> - deixa de assinar o usuário\n"
+"d <identificação> <texto> - mensagem direta para o usuário\n"
+"get <nickname> - obtém a última mensagem do usuário\n"
+"whois <nickname> - obtém as informações do perfil do usuário\n"
+"fav <identificação> - adiciona a último mensagem do usuário como uma "
+"'favorita'\n"
+"fav #<id_da_mensagem> - adiciona a mensagem identificada como 'favorita'\n"
+"repeat #<id_da_mensagem> - repete a mensagem identificada\n"
+"repeat <identificação> - repete a última mensagem do usuário\n"
+"reply #<id_da_mensagem> - responde a mensagem identificada\n"
+"reply <identificação> - responde a última mensagem do usuário\n"
+"join <grupo> - associa-se ao grupo\n"
+"login - obtém um link para se autenticar na interface web\n"
+"drop <grupo> - deixa o grupo\n"
+"stats - obtém suas estatísticas\n"
+"stop - o mesmo que 'off'\n"
+"quit - o mesmo que 'off'\n"
+"sub <identificação> - o mesmo que 'follow'\n"
+"unsub <identificação> - o mesmo que 'leave'\n"
+"last <identificação> - o mesmo que 'get'\n"
+"on <identificação> - não implementado ainda\n"
+"off <identificação> - não implementado ainda\n"
+"nudge <identificação> - chama a atenção do usuário\n"
+"invite <número_de_ telefone> - não implementado ainda\n"
+"track <palavra> - não implementado ainda\n"
+"untrack <palavra> - não implementado ainda\n"
+"track off -  não implementado ainda\n"
+"untrack all -  não implementado ainda\n"
+"tracks -  não implementado ainda\n"
+"tracking -  não implementado ainda\n"
 
 #: lib/common.php:199
-#, fuzzy
 msgid "No configuration file found. "
-msgstr "Nenhum código de confirmação."
+msgstr "Não foi encontrado nenhum arquivo de configuração. "
 
 #: lib/common.php:200
 msgid "I looked for configuration files in the following places: "
-msgstr ""
+msgstr "Eu procurei pelos arquivos de configuração nos seguintes lugares: "
 
 #: lib/common.php:201
 msgid "You may wish to run the installer to fix this."
-msgstr ""
+msgstr "Você pode querer executar o instalador para corrigir isto."
 
 #: lib/common.php:202
-#, fuzzy
 msgid "Go to the installer."
-msgstr "Entrar"
+msgstr "Ir para o instalador."
 
 #: lib/connectsettingsaction.php:110
 msgid "IM"
-msgstr "IM"
+msgstr "MI"
 
 #: lib/connectsettingsaction.php:111
 msgid "Updates by instant messenger (IM)"
-msgstr "Atualizações via instant messenger (IM)"
+msgstr "Atualizações via mensageiro instantâneo (MI)"
 
 #: lib/connectsettingsaction.php:116
 msgid "Updates by SMS"
@@ -4714,26 +4717,25 @@ msgstr "Atualizações via SMS"
 
 #: lib/dberroraction.php:60
 msgid "Database error"
-msgstr ""
+msgstr "Erro no banco de dados"
 
 #: lib/designsettings.php:105
-#, fuzzy
 msgid "Upload file"
-msgstr "Enviar"
+msgstr "Enviar arquivo"
 
 #: lib/designsettings.php:109
-#, fuzzy
 msgid ""
 "You can upload your personal background image. The maximum file size is 2MB."
-msgstr "Você pode enviar seu avatar pessoal. O tamanho máximo do arquivo é %s"
+msgstr ""
+"Você pode enviar sua imagem de fundo. O tamanho máximo do arquivo é de 2Mb."
 
 #: lib/designsettings.php:418
 msgid "Design defaults restored."
-msgstr ""
+msgstr "A aparência padrão foi restaurada."
 
 #: lib/disfavorform.php:114 lib/disfavorform.php:140
 msgid "Disfavor this notice"
-msgstr "Tirar das favoritas"
+msgstr "Excluir das favoritas"
 
 #: lib/favorform.php:114 lib/favorform.php:140
 msgid "Favor this notice"
@@ -4745,19 +4747,19 @@ msgstr "Tornar favorita"
 
 #: 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"
@@ -4772,9 +4774,8 @@ msgid "All"
 msgstr "Todas"
 
 #: lib/galleryaction.php:139
-#, fuzzy
 msgid "Select tag to filter"
-msgstr "Selecione uma operadora"
+msgstr "Selecione a etiqueta para filtrar"
 
 #: lib/galleryaction.php:140
 msgid "Tag"
@@ -4790,17 +4791,16 @@ msgstr "Ir"
 
 #: lib/groupeditform.php:163
 msgid "URL of the homepage or blog of the group or topic"
-msgstr "URL para seu site, blog ou perfil em outro site"
+msgstr "URL para o site ou blog do grupo ou tópico"
 
 #: lib/groupeditform.php:168
-#, fuzzy
 msgid "Describe the group or topic"
-msgstr "Descreva o grupo ou tópico em 140 caracteres."
+msgstr "Descreva o grupo ou tópico"
 
 #: lib/groupeditform.php:170
-#, fuzzy, php-format
+#, php-format
 msgid "Describe the group or topic in %d characters"
-msgstr "Descreva o grupo ou tópico em 140 caracteres."
+msgstr "Descreva o grupo ou tópico em %d caracteres."
 
 #: lib/groupeditform.php:172
 msgid "Description"
@@ -4809,26 +4809,28 @@ msgstr "Descrição"
 #: lib/groupeditform.php:179
 msgid ""
 "Location for the group, if any, like \"City, State (or Region), Country\""
-msgstr "Onde você está, ex: \"cidade, estado (ou região), país\""
+msgstr ""
+"Localização do grupo, caso tenha alguma, como \"cidade, estado (ou região), "
+"país\""
 
 #: lib/groupeditform.php:187
 #, php-format
 msgid "Extra nicknames for the group, comma- or space- separated, max %d"
 msgstr ""
+"Apelidos extras para o grupo, separado por vírgulas ou espaços, no máximo %d"
 
 #: lib/groupnav.php:85
 msgid "Group"
 msgstr "Grupo"
 
 #: lib/groupnav.php:101
-#, fuzzy
 msgid "Blocked"
-msgstr "Bloquear"
+msgstr "Bloqueados"
 
 #: lib/groupnav.php:102
-#, fuzzy, php-format
+#, php-format
 msgid "%s blocked users"
-msgstr "Bloquear usuário"
+msgstr "%s usuários bloqueados"
 
 #: lib/groupnav.php:108
 #, php-format
@@ -4845,9 +4847,9 @@ msgid "Add or edit %s logo"
 msgstr "Adicionar ou editar logo de %s"
 
 #: lib/groupnav.php:120
-#, fuzzy, php-format
+#, php-format
 msgid "Add or edit %s design"
-msgstr "Adicionar ou editar logo de %s"
+msgstr "Adicionar ou editar a aparência de %s"
 
 #: lib/groupsbymemberssection.php:71
 msgid "Groups with most members"
@@ -4867,9 +4869,9 @@ msgid "This page is not available in a media type you accept"
 msgstr "Esta página não está disponível em um tipo de mídia que você aceita"
 
 #: lib/imagefile.php:75
-#, fuzzy, php-format
+#, php-format
 msgid "That file is too big. The maximum file size is %s."
-msgstr "Você pode enviar seu avatar pessoal."
+msgstr "O arquivo é muito grande. O tamanho máximo é de %s."
 
 #: lib/imagefile.php:80
 msgid "Partial upload."
@@ -4897,16 +4899,16 @@ msgstr "Tipo de arquivo desconhecido"
 
 #: lib/imagefile.php:217
 msgid "MB"
-msgstr ""
+msgstr "Mb"
 
 #: lib/imagefile.php:219
 msgid "kB"
-msgstr ""
+msgstr "Kb"
 
 #: lib/jabber.php:191
 #, php-format
 msgid "[%s]"
-msgstr ""
+msgstr "[%s]"
 
 #: lib/joinform.php:114
 msgid "Join"
@@ -4918,7 +4920,7 @@ msgstr "Sair"
 
 #: lib/logingroupnav.php:80
 msgid "Login with a username and password"
-msgstr "Autentique-se com um nome de usuário e senha"
+msgstr "Autentique-se com um nome de usuário e uma senha"
 
 #: lib/logingroupnav.php:86
 msgid "Sign up for a new account"
@@ -4944,14 +4946,26 @@ msgid ""
 "Thanks for your time, \n"
 "%s\n"
 msgstr ""
+"Olá, %s.\n"
+"\n"
+"Alguém digitou este endereço de e-mail no %s.\n"
+"\n"
+"Se foi você, e caso queira confirmar a sua entrada, use a URL abaixo:\n"
+"\n"
+"\t%s\n"
+"\n"
+"Caso contrário, simplesmente ignore esta mesagem.\n"
+"\n"
+"Obrigado pela sua atenção, \n"
+"%s\n"
 
 #: lib/mail.php:236
 #, php-format
 msgid "%1$s is now listening to your notices on %2$s."
-msgstr "%1$s agora está acompanhando suas mensagens em %2$s."
+msgstr "%1$s agora está acompanhando suas mensagens no %2$s."
 
 #: lib/mail.php:241
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "%1$s is now listening to your notices on %2$s.\n"
 "\n"
@@ -4964,12 +4978,16 @@ msgid ""
 "----\n"
 "Change your email address or notification options at %8$s\n"
 msgstr ""
-"%1$s agora está acompanhando suas mensagens em %2$s.\n"
+"%1$s agora está acompanhando suas mensagens no %2$s.\n"
 "\n"
 "\t%3$s\n"
 "\n"
-"Cordialmente,\n"
-"%4$s.\n"
+"%4$s%5$s%6$s\n"
+"Atenciosamente,\n"
+"%7$s.\n"
+"\n"
+"----\n"
+"Altere seu endereço de e-mail e suas opções de notificação em %8$s\n"
 
 #: lib/mail.php:254
 #, php-format
@@ -4993,7 +5011,7 @@ msgstr ""
 #: lib/mail.php:286
 #, php-format
 msgid "New email address for posting to %s"
-msgstr "Novo endereço de e-mail para postar para %s"
+msgstr "Novo endereço de e-mail para publicar no %s"
 
 #: lib/mail.php:289
 #, php-format
@@ -5019,7 +5037,7 @@ msgstr ""
 #: lib/mail.php:413
 #, php-format
 msgid "%s status"
-msgstr "Status de %s"
+msgstr "Mensagem de %s"
 
 #: lib/mail.php:439
 msgid "SMS confirmation"
@@ -5045,6 +5063,17 @@ msgid ""
 "With kind regards,\n"
 "%4$s\n"
 msgstr ""
+"%1$s (%2$s) quer saber notícias suas e o está convidando para publicar "
+"alguma mensagem..\n"
+"\n"
+"Por isso, vamos ouvir o que você tem a dizer. :)\n"
+"\n"
+"%3$s\n"
+"\n"
+"Não responda este e-mail, pois ele não chegará ao remetente.\n"
+"\n"
+"Atenciosamente,\n"
+"%4$s\n"
 
 #: lib/mail.php:510
 #, php-format
@@ -5069,11 +5098,25 @@ msgid ""
 "With kind regards,\n"
 "%5$s\n"
 msgstr ""
+"%1$s (%2$s) lhe enviou uma mensagem particular:\n"
+"\n"
+"------------------------------------------------------\n"
+"%3$s\n"
+"------------------------------------------------------\n"
+"\n"
+"Você pode responder a mensagem aqui:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Não responda este e-mail, pois ele não chegará ao remetente.\n"
+"\n"
+"Atenciosamente,\n"
+"%5$s\n"
 
 #: lib/mail.php:559
-#, fuzzy, php-format
+#, php-format
 msgid "%s (@%s) added your notice as a favorite"
-msgstr "%s marcaram sua mensagem como favorita"
+msgstr "%s (@%s) marcou sua mensagem como favorita"
 
 #: lib/mail.php:561
 #, php-format
@@ -5095,11 +5138,27 @@ msgid ""
 "Faithfully yours,\n"
 "%6$s\n"
 msgstr ""
+"%1$s (@%7$s) acabou de adicionar sua mensagem do %2$s como uma favorita.\n"
+"\n"
+"A URL da sua mensagem é:\n"
+"\n"
+"%3$s\n"
+"\n"
+"O texto da sua mensagem é:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Você pode ver a lista de favoritas de %1$saqui:\n"
+"\n"
+"%5$s\n"
+"\n"
+"Atenciosamente,\n"
+"%6$s\n"
 
 #: lib/mail.php:624
 #, php-format
 msgid "%s (@%s) sent a notice to your attention"
-msgstr ""
+msgstr "%s (@%s) enviou uma mensagem citando você"
 
 #: lib/mail.php:626
 #, php-format
@@ -5115,6 +5174,17 @@ msgid ""
 "\t%4$s\n"
 "\n"
 msgstr ""
+"%1$s (@%9$s) acabou de enviar uma mensagem citando você ('@usuário') no %2"
+"$s.\n"
+"\n"
+"A mensagem está aqui:\n"
+"\n"
+"\t%3$s\n"
+"\n"
+"Está escrito:\n"
+"\n"
+"\t%4$s\n"
+"\n"
 
 #: lib/mailbox.php:89
 msgid "Only the user can read their own mailboxes."
@@ -5125,64 +5195,71 @@ 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 ""
+"Você não tem nenhuma mensagem particular. Você pode enviar mensagens "
+"privadas para envolver outras pessoas em uma conversa. Você também pode "
+"receber mensagens privadas."
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
-#, fuzzy
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
-msgstr " de "
+msgstr "de"
 
 #: lib/mediafile.php:98 lib/mediafile.php:123
 msgid "There was a database error while saving your file. Please try again."
 msgstr ""
+"Ocorreu um erro no banco de dados durante o salvamento do seu arquivo. Por "
+"favor, tente novamente."
 
 #: lib/mediafile.php:142
 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
 msgstr ""
+"O arquivo a ser enviado é maior do que o limite definido no parâmetro "
+"upload_max_filesize do php.ini."
 
 #: lib/mediafile.php:147
 msgid ""
 "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
 "the HTML form."
 msgstr ""
+"O arquivo a ser enviado é maior do que o limite definido no parâmetro "
+"MAX_FILE_SIZE do formulário HTML."
 
 #: lib/mediafile.php:152
 msgid "The uploaded file was only partially uploaded."
-msgstr ""
+msgstr "O arquivo foi apenas parcialmente enviado."
 
 #: lib/mediafile.php:159
 msgid "Missing a temporary folder."
-msgstr ""
+msgstr "Falta uma pasta temporária."
 
 #: lib/mediafile.php:162
 msgid "Failed to write file to disk."
-msgstr ""
+msgstr "Erro ao salvar o arquivo no disco."
 
 #: lib/mediafile.php:165
 msgid "File upload stopped by extension."
-msgstr ""
+msgstr "O arquivo a ser enviado foi barrado por causa de sua extensão."
 
 #: lib/mediafile.php:179 lib/mediafile.php:216
 msgid "File exceeds user's quota!"
-msgstr ""
+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 ""
+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 excluir a favorita."
+msgstr "Não foi possível determinar o mime-type do arquivo!"
 
 #: lib/mediafile.php:270
 #, php-format
 msgid " Try using another %s format."
-msgstr ""
+msgstr " Tente usar outro formato %s."
 
 #: lib/mediafile.php:275
 #, php-format
 msgid "%s is not a supported filetype on this server."
-msgstr ""
+msgstr "%s não é um tipo de arquivo suportado neste servidor."
 
 #: lib/messageform.php:120
 msgid "Send a direct notice"
@@ -5192,75 +5269,75 @@ msgstr "Enviar uma mensagem direta"
 msgid "To"
 msgstr "Para"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Caracteres disponíveis"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Enviar uma mensagem"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "E aí, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
-msgstr ""
+msgstr "Anexo"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
-msgstr ""
+msgstr "Anexar um arquivo"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Indique a sua localização"
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-msgstr ""
+msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 
-#: lib/noticelist.php:421
-#, fuzzy
+#: lib/noticelist.php:429
 msgid "N"
-msgstr "Não"
+msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
-msgstr ""
+msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
-msgstr ""
+msgstr "L"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
-msgstr ""
+msgstr "O"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
-msgstr ""
+msgstr "em"
 
-#: lib/noticelist.php:523
-#, fuzzy
+#: lib/noticelist.php:531
 msgid "in context"
-msgstr "Nenhum conteúdo!"
+msgstr "no contexto"
 
-#: lib/noticelist.php:548
-#, fuzzy
+#: lib/noticelist.php:556
 msgid "Repeated by"
-msgstr "Criar"
+msgstr "Repetida por"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Responder a esta mensagem"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Responder"
 
-#: lib/noticelist.php:620
-#, fuzzy
+#: lib/noticelist.php:628
 msgid "Notice repeated"
-msgstr "Mensagem publicada"
+msgstr "Mensagem repetida"
 
 #: lib/nudgeform.php:116
 msgid "Nudge this user"
@@ -5287,14 +5364,12 @@ msgid "Error inserting remote profile"
 msgstr "Erro na inserção do perfil remoto"
 
 #: lib/oauthstore.php:345
-#, fuzzy
 msgid "Duplicate notice"
-msgstr "Excluir a mensagem"
+msgstr "Duplicar a mensagem"
 
 #: lib/oauthstore.php:466 lib/subs.php:48
-#, fuzzy
 msgid "You have been banned from subscribing."
-msgstr "Esse usuário bloqueou o seu pedido de assinatura."
+msgstr "Você está proibido de assinar."
 
 #: lib/oauthstore.php:491
 msgid "Couldn't insert new subscription."
@@ -5346,14 +5421,12 @@ msgid "Subscribers"
 msgstr "Assinantes"
 
 #: lib/profileaction.php:157
-#, fuzzy
 msgid "All subscribers"
-msgstr "Assinantes"
+msgstr "Todos os assinantes"
 
 #: lib/profileaction.php:178
-#, fuzzy
 msgid "User ID"
-msgstr "Usuário"
+msgstr "ID do usuário"
 
 #: lib/profileaction.php:183
 msgid "Member since"
@@ -5361,16 +5434,15 @@ msgstr "Membro desde"
 
 #: lib/profileaction.php:245
 msgid "All groups"
-msgstr ""
+msgstr "Todos os grupos"
 
 #: lib/profileformaction.php:123
-#, fuzzy
 msgid "No return-to arguments."
-msgstr "Nenhum argumento de ID."
+msgstr "Sem argumentos return-to."
 
 #: lib/profileformaction.php:137
 msgid "Unimplemented method."
-msgstr ""
+msgstr "Método não implementado."
 
 #: lib/publicgroupnav.php:78
 msgid "Public"
@@ -5386,45 +5458,39 @@ msgstr "Etiquetas recentes"
 
 #: lib/publicgroupnav.php:88
 msgid "Featured"
-msgstr "Destacada"
+msgstr "Em destaque"
 
 #: lib/publicgroupnav.php:92
 msgid "Popular"
 msgstr "Popular"
 
 #: lib/repeatform.php:107
-#, fuzzy
 msgid "Repeat this notice?"
-msgstr "Responder a esta mensagem"
+msgstr "Repetir esta mensagem?"
 
 #: lib/repeatform.php:132
-#, fuzzy
 msgid "Repeat this notice"
-msgstr "Responder a esta mensagem"
+msgstr "Repetir esta mensagem"
 
 #: lib/sandboxform.php:67
-#, fuzzy
 msgid "Sandbox"
-msgstr "Recebidas"
+msgstr "Isolamento"
 
 #: lib/sandboxform.php:78
-#, fuzzy
 msgid "Sandbox this user"
-msgstr "Desbloquear este usuário"
+msgstr "Colocar este usuário em isolamento"
 
 #: lib/searchaction.php:120
-#, fuzzy
 msgid "Search site"
-msgstr "Procurar"
+msgstr "Procurar no site"
 
 #: lib/searchaction.php:126
 msgid "Keyword(s)"
-msgstr ""
+msgstr "Palavra(s)-chave"
 
 #: lib/searchaction.php:162
-#, fuzzy
 msgid "Search help"
-msgstr "Procurar"
+msgstr "Ajuda da procura"
 
 #: lib/searchgroupnav.php:80
 msgid "People"
@@ -5432,15 +5498,15 @@ msgstr "Pessoas"
 
 #: lib/searchgroupnav.php:81
 msgid "Find people on this site"
-msgstr "Procure por pessoas neste site"
+msgstr "Encontre pessoas neste site"
 
 #: lib/searchgroupnav.php:83
 msgid "Find content of notices"
-msgstr "Procure no conteúdo das mensagens"
+msgstr "Encontre conteúdo de mensagens"
 
 #: lib/searchgroupnav.php:85
 msgid "Find groups on this site"
-msgstr "Procurar por grupos neste site"
+msgstr "Encontre grupos neste site"
 
 #: lib/section.php:89
 msgid "Untitled section"
@@ -5448,22 +5514,20 @@ msgstr "Seção sem título"
 
 #: lib/section.php:106
 msgid "More..."
-msgstr ""
+msgstr "Mais..."
 
 #: lib/silenceform.php:67
-#, fuzzy
 msgid "Silence"
-msgstr "Nova mensagem"
+msgstr "Silenciar"
 
 #: lib/silenceform.php:78
-#, fuzzy
 msgid "Silence this user"
-msgstr "Bloquear usuário"
+msgstr "Silenciar este usuário"
 
 #: lib/subgroupnav.php:83
 #, php-format
 msgid "People %s subscribes to"
-msgstr "Pessoas que %s assina"
+msgstr "Assinaturas de %s"
 
 #: lib/subgroupnav.php:91
 #, php-format
@@ -5473,11 +5537,11 @@ msgstr "Assinantes de %s"
 #: lib/subgroupnav.php:99
 #, php-format
 msgid "Groups %s is a member of"
-msgstr "O grupo %s é membro de"
+msgstr "Grupos dos quais %s é membro"
 
 #: lib/subs.php:52
 msgid "Already subscribed!"
-msgstr ""
+msgstr "Já assinado!"
 
 #: lib/subs.php:56
 msgid "User has blocked you."
@@ -5489,17 +5553,15 @@ msgstr "Não foi possível assinar."
 
 #: lib/subs.php:79
 msgid "Could not subscribe other to you."
-msgstr "Não foi possível fazer com que o outros o sigam."
+msgstr "Não foi possível fazer com que outros o assinem."
 
 #: lib/subs.php:128
-#, fuzzy
 msgid "Not subscribed!"
-msgstr "Não é seguido!"
+msgstr "Não assinado!"
 
 #: lib/subs.php:133
-#, fuzzy
 msgid "Couldn't delete self-subscription."
-msgstr "Não foi possível excluir a assinatura."
+msgstr "Não foi possível excluir a auto-assinatura."
 
 #: lib/subs.php:146
 msgid "Couldn't delete subscription."
@@ -5508,16 +5570,16 @@ msgstr "Não foi possível excluir a assinatura."
 #: lib/subscriberspeopleselftagcloudsection.php:48
 #: lib/subscriptionspeopleselftagcloudsection.php:48
 msgid "People Tagcloud as self-tagged"
-msgstr ""
+msgstr "Nuvem de etiquetas pessoais definidas pelas próprios usuários"
 
 #: lib/subscriberspeopletagcloudsection.php:48
 #: lib/subscriptionspeopletagcloudsection.php:48
 msgid "People Tagcloud as tagged"
-msgstr ""
+msgstr "Nuvem de etiquetas pessoais definidas pelos outros usuário"
 
 #: lib/subscriptionlist.php:126
 msgid "(none)"
-msgstr "(nenhum)"
+msgstr "(nada)"
 
 #: lib/tagcloudsection.php:56
 msgid "None"
@@ -5529,21 +5591,19 @@ msgstr "Quem mais publica"
 
 #: lib/unsandboxform.php:69
 msgid "Unsandbox"
-msgstr ""
+msgstr "Tirar do isolamento"
 
 #: lib/unsandboxform.php:80
-#, fuzzy
 msgid "Unsandbox this user"
-msgstr "Desbloquear este usuário"
+msgstr "Tirar este usuário do isolamento"
 
 #: lib/unsilenceform.php:67
 msgid "Unsilence"
-msgstr ""
+msgstr "Encerrar silenciamento"
 
 #: lib/unsilenceform.php:78
-#, fuzzy
 msgid "Unsilence this user"
-msgstr "Desbloquear este usuário"
+msgstr "Encerrar o silenciamento deste usuário"
 
 #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
 msgid "Unsubscribe from this user"
@@ -5554,91 +5614,86 @@ msgid "Unsubscribe"
 msgstr "Cancelar"
 
 #: lib/userprofile.php:116
-#, fuzzy
 msgid "Edit Avatar"
-msgstr "Avatar"
+msgstr "Editar o avatar"
 
 #: lib/userprofile.php:236
-#, fuzzy
 msgid "User actions"
-msgstr "Outras opções"
+msgstr "Ações do usuário"
 
 #: lib/userprofile.php:248
-#, fuzzy
 msgid "Edit profile settings"
-msgstr "Configurações do perfil"
+msgstr "Editar as configurações do perfil"
 
 #: lib/userprofile.php:249
 msgid "Edit"
-msgstr ""
+msgstr "Editar"
 
 #: lib/userprofile.php:272
-#, fuzzy
 msgid "Send a direct message to this user"
-msgstr "Você não pode enviar uma mensagem para esse usuário."
+msgstr "Enviar uma mensagem para este usuário."
 
 #: lib/userprofile.php:273
-#, fuzzy
 msgid "Message"
-msgstr "Nova mensagem"
+msgstr "Mensagem"
 
 #: lib/userprofile.php:311
 msgid "Moderate"
-msgstr ""
+msgstr "Moderar"
 
 #: lib/util.php:837
 msgid "a few seconds ago"
-msgstr "segundos atrás"
+msgstr "alguns segundos atrás"
 
 #: lib/util.php:839
 msgid "about a minute ago"
-msgstr "1 min atrás"
+msgstr "cerca de 1 minuto atrás"
 
 #: lib/util.php:841
 #, php-format
 msgid "about %d minutes ago"
-msgstr "%d mins atrás"
+msgstr "cerca de %d minutos atrás"
 
 #: lib/util.php:843
 msgid "about an hour ago"
-msgstr "1 hora atrás"
+msgstr "cerca de 1 hora atrás"
 
 #: lib/util.php:845
 #, php-format
 msgid "about %d hours ago"
-msgstr "%d horas atrás"
+msgstr "cerca de %d horas atrás"
 
 #: lib/util.php:847
 msgid "about a day ago"
-msgstr "1 dia atrás"
+msgstr "cerca de 1 dia atrás"
 
 #: lib/util.php:849
 #, php-format
 msgid "about %d days ago"
-msgstr "%d dias atrás"
+msgstr "cerca de %d dias atrás"
 
 #: lib/util.php:851
 msgid "about a month ago"
-msgstr "1 mês atrás"
+msgstr "cerca de 1 mês atrás"
 
 #: lib/util.php:853
 #, php-format
 msgid "about %d months ago"
-msgstr "%d meses atrás"
+msgstr "cerca de %d meses atrás"
 
 #: lib/util.php:855
 msgid "about a year ago"
-msgstr "1 ano atrás"
+msgstr "cerca de 1 ano atrás"
 
 #: lib/webcolor.php:82
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a valid color!"
-msgstr "A URL do site informada não é válida."
+msgstr "%s não é uma cor válida!"
 
 #: lib/webcolor.php:123
 #, php-format
 msgid "%s is not a valid color! Use 3 or 6 hex chars."
-msgstr ""
+msgstr "%s não é uma cor válida! Utilize 3 ou 6 caracteres hexadecimais."
 
 #: scripts/maildaemon.php:48
 msgid "Could not parse message."
@@ -5654,4 +5709,4 @@ msgstr "Desculpe-me, mas este não é seu endereço de e-mail para recebimento."
 
 #: scripts/maildaemon.php:61
 msgid "Sorry, no incoming email allowed."
-msgstr "Desculpe-me, mas não é permitido o recebimento de emails."
+msgstr "Desculpe-me, mas não é permitido o recebimento de e-mails."
index bcfc757be3907e79eee66c8dda4dafeb24d3c4d0..b5301b1ab6f5ff5c5b07697ea11df302b8c0402e 100644 (file)
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:15+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:28+0000\n"
 "Language-Team: Russian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ru\n"
 "X-Message-Group: out-statusnet\n"
@@ -198,11 +198,11 @@ msgstr "Не удаётся обновить ваше оформление."
 msgid "You cannot block yourself!"
 msgstr "Вы не можете заблокировать самого себя!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Неудача при блокировке пользователя."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Неудача при разблокировке пользователя."
 
@@ -320,32 +320,32 @@ msgid "Could not find target user."
 msgstr "Не удаётся найти целевого пользователя."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 "Имя должно состоять только из прописных букв и цифр и не иметь пробелов."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Такое имя уже используется. Попробуйте какое-нибудь другое."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Неверное имя."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "URL Главной страницы неверен."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Полное имя слишком длинное (не больше 255 знаков)."
@@ -356,7 +356,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Слишком длинное описание (максимум %d символов)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Слишком длинное месторасположение (максимум 255 знаков)."
@@ -471,7 +471,7 @@ msgstr "Слишком длинная запись. Максимальная д
 msgid "Not found"
 msgstr "Не найдено"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "Максимальная длина записи — %d символов, включая URL вложения."
@@ -601,7 +601,7 @@ msgid "Preview"
 msgstr "Просмотр"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Удалить"
 
@@ -614,13 +614,13 @@ msgid "Crop"
 msgstr "Обрезать"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -693,7 +693,7 @@ msgstr "Да"
 msgid "Block this user"
 msgstr "Заблокировать пользователя."
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Не удаётся сохранить информацию о блокировании."
 
@@ -765,7 +765,7 @@ msgstr "Этот адрес уже подтверждён."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Не удаётся обновить пользователя."
@@ -827,7 +827,7 @@ msgstr "Вы уверены, что хотите удалить эту запи
 msgid "Do not delete this notice"
 msgstr "Не удалять эту запись"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Удалить эту запись"
 
@@ -965,7 +965,7 @@ msgstr "Восстановить значения по умолчанию"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1475,7 +1475,7 @@ msgstr "Участники группы %s, страница %d"
 msgid "A list of the users in this group."
 msgstr "Список пользователей, являющихся членами этой группы."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Настройки"
 
@@ -1573,7 +1573,7 @@ msgstr "Только администратор может разблокиро
 msgid "User is not blocked from group."
 msgstr "Пользователь не заблокировал вас из группы."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Ошибка при удалении данного блока."
 
@@ -1760,7 +1760,7 @@ msgstr "Личное сообщение"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Можно добавить к приглашению личное сообщение."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "ОК"
 
@@ -1882,7 +1882,7 @@ msgstr "Некорректное имя или пароль."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Ошибка установки пользователя. Вы, вероятно, не авторизованы."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Вход"
@@ -1994,7 +1994,7 @@ msgstr "Сообщение отправлено"
 msgid "Direct message to %s sent"
 msgstr "Прямое сообщение для %s послано"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ошибка AJAX"
 
@@ -2002,7 +2002,7 @@ msgstr "Ошибка AJAX"
 msgid "New notice"
 msgstr "Новая запись"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Запись опубликована"
 
@@ -2433,71 +2433,80 @@ msgstr "Месторасположение"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Где вы находитесь, например «Город, область, страна»"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Теги"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Теги для самого себя (буквы, цифры, -, ., и _), разделенные запятой или "
 "пробелом"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Язык"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Предпочитаемый язык"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Часовой пояс"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "В каком часовом поясе Вы обычно находитесь?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr "Автоматически подписываться на всех, кто подписался на меня"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Слишком длинная биография (максимум %d символов)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Часовой пояс не выбран."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Слишком длинный язык (более 50 символов). "
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Неверный тег: «%s»"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Не удаётся обновить пользователя для автоподписки."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Не удаётся сохранить теги."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Не удаётся сохранить профиль."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Не удаётся сохранить теги."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Настройки сохранены."
 
@@ -2602,7 +2611,7 @@ msgstr ""
 "Почему бы не [зарегистрироваться](%%action.register%%), чтобы отправить "
 "первым?"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Облако тегов"
 
@@ -2742,7 +2751,7 @@ msgstr "Извините, неверный пригласительный код
 msgid "Registration successful"
 msgstr "Регистрация успешна!"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Регистрация"
@@ -2934,7 +2943,7 @@ msgstr "Вы не можете повторить собственную зап
 msgid "You already repeated that notice."
 msgstr "Вы уже повторили эту запись."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Повторено"
 
@@ -4088,16 +4097,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Вам запрещено поститься на этом сайте (бан)"
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Проблемы с сохранением записи."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Ошибка баз данных при вставке ответа для %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4152,128 +4161,128 @@ msgstr "%s (%s)"
 msgid "Untitled page"
 msgstr "Страница без названия"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Главная навигация"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Моё"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Личный профиль и лента друзей"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Настройки"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Изменить ваш email, аватару, пароль, профиль"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Соединить"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Соединить с сервисами"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Изменить конфигурацию сайта"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Пригласить"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Пригласи друзей и коллег стать такими же как ты участниками %s"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Выход"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Выйти"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Создать новый аккаунт"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Войти"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Помощь"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Помощь"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Поиск"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Искать людей или текст"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Новая запись"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Локальные виды"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Новая запись"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Навигация по подпискам"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "О проекте"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "ЧаВо"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "TOS"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Пользовательское соглашение"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Исходный код"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Контактная информация"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Бедж"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet лицензия"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4282,12 +4291,12 @@ msgstr ""
 "**%%site.name%%** — это сервис микроблогинга, созданный для вас при помощи [%"
 "%site.broughtby%%](%%site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** — сервис микроблогинга. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4299,31 +4308,31 @@ msgstr ""
 "лицензией [GNU Affero General Public License](http://www.fsf.org/licensing/"
 "licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Лицензия содержимого сайта"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "All "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "license."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Разбиение на страницы"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Сюда"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Туда"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
 
@@ -4375,6 +4384,16 @@ msgstr "Сообщает, где появляется это вложение"
 msgid "Tags for this attachment"
 msgstr "Теги для этого вложения"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Пароль сохранён."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Пароль сохранён."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Команда исполнена"
@@ -4933,7 +4952,7 @@ msgstr ""
 #: lib/mail.php:236
 #, php-format
 msgid "%1$s is now listening to your notices on %2$s."
-msgstr "%1$s Ñ\81ейÑ\87аÑ\81 Ñ\81лÑ\83Ñ\88аеÑ\82 Ð²Ð°Ñ\88и Ð·Ð°Ð¼ÐµÑ\82ки на %2$s."
+msgstr "%1$s Ñ\82епеÑ\80Ñ\8c Ñ\81ледиÑ\82 Ð·Ð° Ð²Ð°Ñ\88ими Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8fми на %2$s."
 
 #: lib/mail.php:241
 #, php-format
@@ -5170,7 +5189,7 @@ msgstr ""
 "вовлечения других пользователей в разговор. Сообщения, получаемые от других "
 "людей, видите только вы."
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "от "
 
@@ -5237,69 +5256,73 @@ msgstr "Послать прямую запись"
 msgid "To"
 msgstr "Для"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "6 или больше знаков"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Послать запись"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Что нового, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Прикрепить"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Прикрепить файл"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "с. ш."
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "ю. ш."
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "в. д."
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "з. д."
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "на"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "в контексте"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Повторено"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Ответить на эту запись"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Ответить"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Запись повторена"
 
index 3b094b0a6aaa7357dc2b999c5238b032c764d000..44a0d92fc3f87501ca3bf61cd5a62195007a86bf 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-28 08:09+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+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"
@@ -184,11 +184,11 @@ msgstr ""
 msgid "You cannot block yourself!"
 msgstr ""
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -300,31 +300,31 @@ msgid "Could not find target user."
 msgstr ""
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr ""
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr ""
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr ""
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr ""
@@ -335,7 +335,7 @@ msgid "Description is too long (max %d chars)."
 msgstr ""
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr ""
@@ -450,7 +450,7 @@ msgstr ""
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -579,7 +579,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr ""
 
@@ -592,13 +592,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -668,7 +668,7 @@ msgstr ""
 msgid "Block this user"
 msgstr ""
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -740,7 +740,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr ""
@@ -800,7 +800,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr ""
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -934,7 +934,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1416,7 +1416,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1503,7 +1503,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr ""
 
@@ -1672,7 +1672,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr ""
 
@@ -1768,7 +1768,7 @@ msgstr ""
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr ""
@@ -1875,7 +1875,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1883,7 +1883,7 @@ msgstr ""
 msgid "New notice"
 msgstr ""
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr ""
 
@@ -2300,69 +2300,77 @@ msgstr ""
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr ""
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr ""
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr ""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr ""
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr ""
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr ""
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr ""
 
@@ -2455,7 +2463,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2591,7 +2599,7 @@ msgstr ""
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2755,7 +2763,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr ""
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr ""
 
@@ -3825,16 +3833,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -3889,140 +3897,140 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr ""
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr ""
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr ""
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr ""
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr ""
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr ""
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr ""
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr ""
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
 "broughtby%%](%%site.broughtbyurl%%). "
 msgstr ""
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr ""
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4030,31 +4038,31 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr ""
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr ""
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4106,6 +4114,14 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+msgid "Password changing failed"
+msgstr ""
+
+#: lib/authenticationplugin.php:197
+msgid "Password changing is not allowed"
+msgstr ""
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4766,7 +4782,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -4830,69 +4846,73 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr ""
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr ""
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr ""
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr ""
 
index 34606dc9d4970f159f8cee2a3bb81c560b32bad5..9d1e7b9c6bcfb64e1bfdf7b8ec6d8e7577a29a3a 100644 (file)
@@ -9,12 +9,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:18+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:32+0000\n"
 "Language-Team: Swedish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: sv\n"
 "X-Message-Group: out-statusnet\n"
@@ -196,11 +196,11 @@ msgstr "Kunde inte uppdatera din profils utseende."
 msgid "You cannot block yourself!"
 msgstr "Du kan inte blockera dig själv!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Blockering av användare misslyckades."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Hävning av blockering av användare misslyckades."
 
@@ -312,32 +312,32 @@ msgid "Could not find target user."
 msgstr ""
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
 "Smeknamnet får endast innehålla små bokstäver eller siffror, inga mellanslag."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Smeknamnet används redan. Försök med ett annat."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Inte ett giltigt smeknamn."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Hemsida är inte en giltig URL."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Fullständigt namn är för långt (max 255 tecken)."
@@ -348,7 +348,7 @@ msgid "Description is too long (max %d chars)."
 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:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Beskrivning av plats är för lång (max 255 tecken)."
@@ -463,7 +463,7 @@ msgstr "Det är för långt. Maximal notisstorlek är %d tecken."
 msgid "Not found"
 msgstr "Hittades inte"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 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."
@@ -593,7 +593,7 @@ msgid "Preview"
 msgstr "Förhandsgranska"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Ta bort"
 
@@ -606,13 +606,13 @@ msgid "Crop"
 msgstr "Beskär"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -685,7 +685,7 @@ msgstr "Ja"
 msgid "Block this user"
 msgstr "Blockera denna användare"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Misslyckades att spara blockeringsinformation."
 
@@ -758,7 +758,7 @@ msgstr "Denna adress har redan blivit bekräftad."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Kunde inte uppdatera användare."
@@ -820,7 +820,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Ta bort denna notis"
 
@@ -958,7 +958,7 @@ 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:167
+#: 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
@@ -1456,7 +1456,7 @@ msgstr "%s gruppmedlemmar, sida %d"
 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:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Administratör"
 
@@ -1555,7 +1555,7 @@ msgstr "Bara en administratör kan häva blockering av gruppmedlemmar."
 msgid "User is not blocked from group."
 msgstr "Användare är inte blockerad från grupp."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Fel vid hävning av blockering."
 
@@ -1741,7 +1741,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Skicka"
 
@@ -1837,7 +1837,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Logga in"
@@ -1950,7 +1950,7 @@ msgstr "Meddelande skickat"
 msgid "Direct message to %s sent"
 msgstr "Direktmeddelande till %s skickat"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "AJAX-fel"
 
@@ -1958,7 +1958,7 @@ msgstr "AJAX-fel"
 msgid "New notice"
 msgstr "Ny notis"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Notis postad"
 
@@ -2387,72 +2387,81 @@ msgstr "Plats"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Var du håller till, såsom \"Stad, Län, Land\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Taggar"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Taggar för dig själv (bokstäver, nummer, -, ., och _), separerade med "
 "kommatecken eller mellanslag"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Språk"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Föredraget språk"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Tidszon"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "I vilken tidszon befinner du dig normalt?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 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) "
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: 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:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Tidszon inte valt."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Språknamn är för långt (max 50 tecken)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Ogiltig tagg: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Kunde inte uppdatera användaren för automatisk prenumeration."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Kunde inte spara taggar."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Kunde inte spara profil."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Kunde inte spara taggar."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Inställningar sparade."
 
@@ -2558,7 +2567,7 @@ msgstr ""
 "Varför inte [registrera ett konto](%%action.register%%) och bli först att "
 "posta en!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Taggmoln"
 
@@ -2699,7 +2708,7 @@ msgstr "Ledsen, ogiltig inbjudningskod."
 msgid "Registration successful"
 msgstr "Registreringen genomförd"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Registrera"
@@ -2879,7 +2888,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Upprepad"
 
@@ -4018,16 +4027,16 @@ msgstr ""
 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:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Problem med att spara notis."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Databasfel vid infogning av svar: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4082,128 +4091,128 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr "Namnlös sida"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Primär webbplatsnavigation"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Hem"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Personlig profil och vänners tidslinje"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Konto"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Ändra din e-post, avatar, lösenord, profil"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Anslut"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "Anslut till tjänster"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Ändra webbplatskonfiguration"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Bjud in"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Logga ut"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Logga ut från webbplatsen"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Skapa ett konto"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Logga in på webbplatsen"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hjälp"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Hjälp mig!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Sök"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Sök efter personer eller text"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Webbplatsnotis"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Lokala vyer"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Sidnotis"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Sekundär webbplatsnavigation"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Om"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "Frågor & svar"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "Användarvillkor"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Sekretess"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Källa"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Kontakt"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Emblem"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Programvarulicens för StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4212,12 +4221,12 @@ msgstr ""
 "**%%site.name%%** är en mikrobloggtjänst tillhandahållen av [%%site.broughtby"
 "%%](%%site.broughtbyurl%%)"
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** är en mikrobloggtjänst."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4228,31 +4237,31 @@ msgstr ""
 "version %s, tillgänglig under [GNU Affero General Public License](http://www."
 "fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Licens för webbplatsinnehåll"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Alla "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "licens."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Numrering av sidor"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Senare"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Tidigare"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Det var ett problem med din sessions-token."
 
@@ -4304,6 +4313,16 @@ 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
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Byte av lösenord"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Byte av lösenord"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Resultat av kommando"
@@ -4983,7 +5002,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:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "från"
 
@@ -5051,69 +5070,73 @@ msgstr "Skicka ett direktinlägg"
 msgid "To"
 msgstr "Till"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Tillgängliga tecken"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Skicka ett inlägg"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Vad är på gång, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Bifoga"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Bifoga en fil"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "N"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "S"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "Ö"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "V"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "på"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "i sammanhang"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Upprepad av"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Svara på detta inlägg"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Svara"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Notis upprepad"
 
index c7b7aec8e7e4f2a46bcd3de61e9e65f9c3ac507e..028e60c47b8e72cd43c66db295ef0a72d5ae38f1 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:21+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:35+0000\n"
 "Language-Team: Telugu\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: te\n"
 "X-Message-Group: out-statusnet\n"
@@ -190,11 +190,11 @@ msgstr "వాడుకరిని తాజాకరించలేకున
 msgid "You cannot block yourself!"
 msgstr "మిమ్మల్ని మీరే నిరోధించుకోలేరు!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "వాడుకరి నిరోధం విఫలమైంది."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -308,31 +308,31 @@ msgid "Could not find target user."
 msgstr "లక్ష్యిత వాడుకరిని కనుగొనలేకపోయాం."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "పేరులో చిన్నబడి అక్షరాలు మరియు అంకెలు మాత్రమే ఖాళీలు లేకుండా ఉండాలి."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "ఆ పేరుని ఇప్పటికే వాడుతున్నారు. మరోటి ప్రయత్నించండి."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "సరైన పేరు కాదు."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "హోమ్ పేజీ URL సరైనది కాదు."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "పూర్తి పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
@@ -343,7 +343,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "వివరణ చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "ప్రాంతం పేరు మరీ పెద్దగా ఉంది (255 అక్షరాలు గరిష్ఠం)."
@@ -460,7 +460,7 @@ msgstr "అది చాలా పొడవుంది. గరిష్ఠ న
 msgid "Not found"
 msgstr "దొరకలేదు"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr "గరిష్ఠ నోటీసు పొడవు %d అక్షరాలు, జోడింపు URLని కలుపుకుని."
@@ -590,7 +590,7 @@ msgid "Preview"
 msgstr "మునుజూపు"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "తొలగించు"
 
@@ -603,13 +603,13 @@ msgid "Crop"
 msgstr "కత్తిరించు"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -679,7 +679,7 @@ msgstr "అవును"
 msgid "Block this user"
 msgstr "ఈ వాడుకరిని నిరోధించు"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "నిరోధపు సమాచారాన్ని భద్రపరచడంలో విఫలమయ్యాం."
 
@@ -754,7 +754,7 @@ msgstr "ఆ చిరునామా ఇప్పటికే నిర్ధా
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "వాడుకరిని తాజాకరించలేకున్నాం."
@@ -814,7 +814,7 @@ msgstr "మీరు నిజంగానే ఈ నోటీసుని త
 msgid "Do not delete this notice"
 msgstr "ఈ నోటీసుని తొలగించకు"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "ఈ నోటీసుని తొలగించు"
 
@@ -950,7 +950,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1410,16 +1410,15 @@ msgstr "మీ గుంపుకి మీరు ఒక చిహ్నాన
 
 #: actions/grouplogo.php:362
 msgid "Pick a square area of the image to be the logo."
-msgstr ""
+msgstr "చిహ్నంగా ఉండాల్సిన చతురస్త్ర ప్రదేశాన్ని బొమ్మ నుండి ఎంచుకోండి."
 
 #: actions/grouplogo.php:396
 msgid "Logo updated."
 msgstr "చిహ్నాన్ని తాజాకరించాం."
 
 #: actions/grouplogo.php:398
-#, fuzzy
 msgid "Failed updating logo."
-msgstr "à°\85వతారపు తాజాకరణ విఫలమైంది."
+msgstr "à°\9aà°¿à°¹à±\8dà°¨పు తాజాకరణ విఫలమైంది."
 
 #: actions/groupmembers.php:93 lib/groupnav.php:92
 #, php-format
@@ -1435,7 +1434,7 @@ msgstr "%s గుంపు సభ్యులు, పేజీ %d"
 msgid "A list of the users in this group."
 msgstr "ఈ గుంపులో వాడుకరులు జాబితా."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1525,7 +1524,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "వాడుకరిని గుంపు నుండి నిరోధించలేదు."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "నిరోధాన్ని తొలగించడంలో పొరపాటు."
 
@@ -1694,7 +1693,7 @@ msgstr "వ్యక్తిగత సందేశం"
 msgid "Optionally add a personal message to the invitation."
 msgstr "ఐచ్ఛికంగా ఆహ్వానానికి వ్యక్తిగత సందేశం చేర్చండి."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "పంపించు"
 
@@ -1791,7 +1790,7 @@ msgstr "వాడుకరిపేరు లేదా సంకేతపదం
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "ప్రవేశించండి"
@@ -1901,7 +1900,7 @@ msgstr "సందేశాన్ని పంపించాం"
 msgid "Direct message to %s sent"
 msgstr "%sకి నేరు సందేశాన్ని పంపించాం"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "అజాక్స్ పొరపాటు"
 
@@ -1909,7 +1908,7 @@ msgstr "అజాక్స్ పొరపాటు"
 msgid "New notice"
 msgstr "కొత్త సందేశం"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "సందేశాలు"
@@ -2192,9 +2191,8 @@ msgid "Avatar path"
 msgstr "అవతారాన్ని తాజాకరించాం."
 
 #: actions/pathsadminpanel.php:265
-#, fuzzy
 msgid "Avatar directory"
-msgstr "à°\85వతారానà±\8dని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82."
+msgstr "à°\85వతారాల à°¸à°\82à°\9aà°¯à°\82"
 
 #: actions/pathsadminpanel.php:274
 msgid "Backgrounds"
@@ -2342,69 +2340,78 @@ msgstr "ప్రాంతం"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "మీరు ఎక్కడ నుండి, \"నగరం, రాష్ట్రం (లేదా ప్రాంతం), దేశం\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "ట్యాగులు"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "భాష"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "ప్రాథాన్యతా భాష"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "కాలమండలం"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "మీరు సామాన్యంగా ఉండే కాలమండలం ఏది?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "స్వపరిచయం చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "కాలమండలాన్ని ఎంచుకోలేదు."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "భాష మరీ పెద్దగా ఉంది (50 అక్షరాలు గరిష్ఠం)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "'%s' అనే హోమ్ పేజీ సరైనదికాదు"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "ట్యాగులని భద్రపరచలేకున్నాం."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "ప్రొఫైలుని భద్రపరచలేకున్నాం."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "ట్యాగులని భద్రపరచలేకున్నాం."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "అమరికలు భద్రమయ్యాయి."
 
@@ -2501,7 +2508,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "ట్యాగు మేఘం"
 
@@ -2638,7 +2645,7 @@ msgstr "క్షమించండి, తప్పు ఆహ్వాన స
 msgid "Registration successful"
 msgstr "నమోదు విజయవంతం"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "నమోదు"
@@ -2806,7 +2813,7 @@ msgstr "ఈ లైసెన్సుకి అంగీకరించకపో
 msgid "You already repeated that notice."
 msgstr "మీరు ఇప్పటికే ఆ వాడుకరిని నిరోధించారు."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "సృష్టితం"
@@ -3258,7 +3265,7 @@ msgstr "ఆహ్వానితులకు మాత్రమే"
 
 #: actions/siteadminpanel.php:329
 msgid "Make registration invitation only."
-msgstr ""
+msgstr "ఆహ్వానితులు మాత్రమే నమోదు అవ్వగలిగేలా చెయ్యి."
 
 #: actions/siteadminpanel.php:333
 #, fuzzy
@@ -3291,7 +3298,7 @@ msgstr ""
 
 #: actions/siteadminpanel.php:353
 msgid "Frequency"
-msgstr ""
+msgstr "తరచుదనం"
 
 #: actions/siteadminpanel.php:354
 msgid "Snapshots will be sent once every N web hits"
@@ -3349,7 +3356,7 @@ msgstr ""
 
 #: actions/smssettings.php:123
 msgid "Awaiting confirmation on this phone number."
-msgstr ""
+msgstr "ఈ ఫోను నంబరు యొక్క నిర్ధారణకై వేచివుంది."
 
 #: actions/smssettings.php:130
 msgid "Confirmation code"
@@ -3901,16 +3908,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "ఈ సైటులో నోటీసులు రాయడం నుండి మిమ్మల్ని నిషేధించారు."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr ""
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -3967,132 +3974,132 @@ msgstr "%s - %s"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "ముంగిలి"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "ఖాతా"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "మీ ఈమెయిలు, అవతారం, సంకేతపదం మరియు ప్రౌఫైళ్ళను మార్చుకోండి"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "అనుసంధానించు"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr ""
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "చందాలు"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "ఆహ్వానించు"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "నిష్క్రమించు"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "సైటు నుండి నిష్క్రమించు"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "కొత్త ఖాతా సృష్టించు"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "సైటులోని ప్రవేశించు"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "సహాయం"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "సహాయం కావాలి!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "వెతుకు"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "కొత్త సందేశం"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "స్థానిక వీక్షణలు"
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "కొత్త సందేశం"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "చందాలు"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "గురించి"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "ప్రశ్నలు"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "సేవా నియమాలు"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "అంతరంగికత"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "మూలము"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "సంప్రదించు"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "బాడ్జి"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4101,12 +4108,12 @@ msgstr ""
 "**%%site.name%%** అనేది [%%site.broughtby%%](%%site.broughtbyurl%%) వారు "
 "అందిస్తున్న మైక్రో బ్లాగింగు సదుపాయం. "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** అనేది మైక్రో బ్లాగింగు సదుపాయం."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4117,38 +4124,38 @@ msgstr ""
 "html) కింద లభ్యమయ్యే [స్టేటస్&zwnj;నెట్](http://status.net/) మైక్రోబ్లాగింగ్ ఉపకరణం సంచిక %s "
 "పై నడుస్తుంది."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "కొత్త సందేశం"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "అన్నీ "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "పేజీకరణ"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "తర్వాత"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "ఇంతక్రితం"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
 #: lib/adminpanelaction.php:96
 msgid "You cannot make changes to this site."
-msgstr ""
+msgstr "ఈ సైటుకి మీరు మార్పులు చేయలేరు."
 
 #: lib/adminpanelaction.php:195
 msgid "showForm() not implemented."
@@ -4197,6 +4204,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "సంకేతపదం మార్పు"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "సంకేతపదం మార్పు"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "ఆదేశ ఫలితాలు"
@@ -4326,7 +4343,7 @@ msgstr ""
 #: lib/command.php:563
 #, php-format
 msgid "Subscribed to %s"
-msgstr ""
+msgstr "%sకి చందా చేరారు"
 
 #: lib/command.php:584
 msgid "Specify the name of the user to unsubscribe from"
@@ -4874,7 +4891,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "నుండి"
 
@@ -4939,71 +4956,75 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "అందుబాటులో ఉన్న అక్షరాలు"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "కొత్త సందేశం"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "%s, సంగతులేమిటి?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "జోడించు"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "ఒక ఫైలుని జోడించు"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "ఉ"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "ద"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "తూ"
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "ప"
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "సందర్భంలో"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "సృష్టితం"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "ఈ నోటీసుపై స్పందించండి"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "స్పందించండి"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "నోటీసుని తొలగించాం."
index 402ca048d1dd08d41527dd4fc87a45a3bb15e214..8d8cbbfd8226ec0cface76704915fdd12835e69d 100644 (file)
@@ -8,12 +8,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:24+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:43+0000\n"
 "Language-Team: Turkish\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: tr\n"
 "X-Message-Group: out-statusnet\n"
@@ -193,11 +193,11 @@ msgstr "Kullanıcı güncellenemedi."
 msgid "You cannot block yourself!"
 msgstr "Kullanıcı güncellenemedi."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -313,7 +313,7 @@ msgid "Could not find target user."
 msgstr "Kullanıcı güncellenemedi."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -321,25 +321,25 @@ msgstr ""
 "kullanılamaz. "
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Takma ad kullanımda. Başka bir tane deneyin."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Geçersiz bir takma ad."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tam isim çok uzun (azm: 255 karakter)."
@@ -350,7 +350,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Yer bilgisi çok uzun (azm: 255 karakter)."
@@ -472,7 +472,7 @@ msgstr ""
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -605,7 +605,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr ""
 
@@ -618,13 +618,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -699,7 +699,7 @@ msgstr ""
 msgid "Block this user"
 msgstr "Böyle bir kullanıcı yok."
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -775,7 +775,7 @@ msgstr "O adres daha önce onaylanmış."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Kullanıcı güncellenemedi."
@@ -837,7 +837,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "Böyle bir durum mesajı yok."
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -984,7 +984,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1488,7 +1488,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1582,7 +1582,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Kullanıcının profili yok."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "Kullanıcıyı kaydetmede hata oluştu."
@@ -1762,7 +1762,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Gönder"
 
@@ -1862,7 +1862,7 @@ msgstr "Yanlış kullanıcı adı veya parola."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Yetkilendirilmemiş."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Giriş"
@@ -1975,7 +1975,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1983,7 +1983,7 @@ msgstr ""
 msgid "New notice"
 msgstr "Yeni durum mesajı"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "Durum mesajları"
@@ -2427,70 +2427,79 @@ msgstr "Yer"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Bulunduğunuz yer, \"Şehir, Eyalet (veya Bölge), Ülke\" gibi"
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr ""
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "%s Geçersiz başlangıç sayfası"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Profil kaydedilemedi."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Profil kaydedilemedi."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Profil kaydedilemedi."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Ayarlar kaydedildi."
 
@@ -2587,7 +2596,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2726,7 +2735,7 @@ msgstr "Onay kodu hatası."
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Kayıt"
@@ -2899,7 +2908,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Yarat"
@@ -4017,16 +4026,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Durum mesajını kaydederken hata oluştu."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Cevap eklenirken veritabanı hatası: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4085,136 +4094,136 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Başlangıç"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "Hakkında"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Bağlan"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Sunucuya yönlendirme yapılamadı: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Abonelikler"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Çıkış"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "Yeni hesap oluştur"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Yardım"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Yardım"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Ara"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Abonelikler"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Hakkında"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "SSS"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Gizlilik"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Kaynak"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "İletişim"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4223,12 +4232,12 @@ msgstr ""
 "**%%site.name%%** [%%site.broughtby%%](%%site.broughtbyurl%%)\" tarafından "
 "hazırlanan anında mesajlaşma ağıdır. "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** bir aninda mesajlaşma sosyal ağıdır."
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4239,34 +4248,34 @@ 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:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Yeni durum mesajı"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "« Sonra"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "Önce »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4322,6 +4331,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Parola kaydedildi."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Parola kaydedildi."
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -5008,7 +5027,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -5073,74 +5092,78 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 veya daha fazla karakter"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Yeni durum mesajı"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "N'aber %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "İçerik yok!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Yarat"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "cevapla"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Durum mesajları"
index 32c26de547eb980b5b1bf058d704f6f35b0882db..228202cc886778f3ba0ee636615d4e93039faf93 100644 (file)
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:27+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:46+0000\n"
 "Language-Team: Ukrainian\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: uk\n"
 "X-Message-Group: out-statusnet\n"
@@ -198,11 +198,11 @@ msgstr "Не вдалося оновити Ваш дизайн."
 msgid "You cannot block yourself!"
 msgstr "Ви не можете блокувати самого себе!"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "Спроба заблокувати користувача невдала."
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "Спроба розблокувати користувача невдала."
 
@@ -315,7 +315,7 @@ msgid "Could not find target user."
 msgstr "Не вдалося знайти цільового користувача."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr ""
@@ -323,25 +323,25 @@ msgstr ""
 "інтервалів."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "Це ім’я вже використовується. Спробуйте інше."
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Це недійсне ім’я користувача."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Веб-сторінка має недійсну URL-адресу."
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Повне ім’я задовге (255 знаків максимум)"
@@ -352,7 +352,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Опис надто довгий (%d знаків максимум)."
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Локація надто довга (255 знаків максимум)."
@@ -467,7 +467,7 @@ msgstr "Надто довго. Максимальний розмір допис
 msgid "Not found"
 msgstr "Не знайдено"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -598,7 +598,7 @@ msgid "Preview"
 msgstr "Перегляд"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr "Видалити"
 
@@ -611,13 +611,13 @@ msgid "Crop"
 msgstr "Втяти"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -691,7 +691,7 @@ msgstr "Так"
 msgid "Block this user"
 msgstr "Блокувати користувача"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "Збереження інформації про блокування завершилось невдачею."
 
@@ -763,7 +763,7 @@ msgstr "Цю адресу вже було підтверджено."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Не вдалося оновити користувача."
@@ -823,7 +823,7 @@ msgstr "Ви впевненні, що бажаєте видалити цей д
 msgid "Do not delete this notice"
 msgstr "Не видаляти цей допис"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr "Видалити допис"
 
@@ -962,7 +962,7 @@ msgstr "Повернутись до початкових налаштувань"
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1460,7 +1460,7 @@ msgstr "Учасники групи %s, сторінка %d"
 msgid "A list of the users in this group."
 msgstr "Список учасників цієї групи."
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "Адмін"
 
@@ -1559,7 +1559,7 @@ msgstr "Лише адміни можуть розблокувати членів
 msgid "User is not blocked from group."
 msgstr "Користувача не блоковано."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 msgid "Error removing the block."
 msgstr "Помилка при розблокуванні."
 
@@ -1746,7 +1746,7 @@ msgstr "Особисті повідомлення"
 msgid "Optionally add a personal message to the invitation."
 msgstr "Можна додати персональне повідомлення до запрошення (опціонально)."
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Так!"
 
@@ -1869,7 +1869,7 @@ msgstr "Неточне ім’я або пароль."
 msgid "Error setting user. You are probably not authorized."
 msgstr "Помилка. Можливо, Ви не авторизовані."
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Увійти"
@@ -1984,7 +1984,7 @@ msgstr "Повідомлення надіслано"
 msgid "Direct message to %s sent"
 msgstr "Пряме повідомлення до %s надіслано"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Помилка в Ajax"
 
@@ -1992,7 +1992,7 @@ msgstr "Помилка в Ajax"
 msgid "New notice"
 msgstr "Новий допис"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "Допис надіслано"
 
@@ -2424,72 +2424,80 @@ msgstr "Локація"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Де Ви живете, штибу \"Місто, область (регіон), країна\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr "Показувати мою поточну локацію при надсиланні дописів"
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Теґи"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 "Позначте себе теґами (літери, цифри, -, . та _), відокремлюючи кожен комою "
 "або пробілом"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Мова"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Мова, котрій надаєте перевагу"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Часовий пояс"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "За яким часовим поясом Ви живете?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 "Автоматично підписуватись до тих, хто підписався до мене. (Слава роботам!)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Ви перевищили ліміт (%d знаків максимум)."
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "Часовий пояс не обрано."
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "Мова задовга (50 знаків максимум)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Недійсний теґ: \"%s\""
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "Не вдалося оновити користувача для автопідписки."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+msgid "Couldn't save location prefs."
+msgstr "Не вдалося зберегти налаштування розташування."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Не вдалося зберегти профіль."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 msgid "Couldn't save tags."
 msgstr "Не вдалося зберегти теґи."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Налаштування збережено."
 
@@ -2595,7 +2603,7 @@ msgstr ""
 "Чому б не [зареєструватись](%%%%action.register%%%%) і не написати щось "
 "цікаве!"
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "Хмарка теґів"
 
@@ -2737,7 +2745,7 @@ msgstr "Даруйте, помилка у коді запрошення."
 msgid "Registration successful"
 msgstr "Реєстрація успішна"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Реєстрація"
@@ -2928,7 +2936,7 @@ msgstr "Ви не можете вторувати своїм власним до
 msgid "You already repeated that notice."
 msgstr "Ви вже вторували цьому допису."
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 msgid "Repeated"
 msgstr "Вторування"
 
@@ -4079,16 +4087,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr "Вам заборонено надсилати дописи до цього сайту."
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Проблема при збереженні допису."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "Помилка бази даних при додаванні відповіді: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr "RT @%1$s %2$s"
@@ -4143,128 +4151,128 @@ msgstr "%s — %s"
 msgid "Untitled page"
 msgstr "Сторінка без заголовку"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "Відправна навігація по сайту"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Дім"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "Персональний профіль і стрічка друзів"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "Акаунт"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr "Змінити електронну адресу, аватару, пароль, профіль"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "З’єднання"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect to services"
 msgstr "З’єднання з сервісами"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr "Змінити конфігурацію сайту"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Запросити"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "Запросіть друзів та колег приєднатись до Вас на %s"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Вийти"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "Вийти з сайту"
 
-#: lib/action.php:455
+#: lib/action.php:456
 msgid "Create an account"
 msgstr "Створити новий акаунт"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "Увійти на сайт"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Допомога"
 
-#: lib/action.php:461
+#: lib/action.php:462
 msgid "Help me!"
 msgstr "Допоможіть!"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Пошук"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "Пошук людей або текстів"
 
-#: lib/action.php:485
+#: lib/action.php:486
 msgid "Site notice"
 msgstr "Зауваження сайту"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "Огляд"
 
-#: lib/action.php:617
+#: lib/action.php:618
 msgid "Page notice"
 msgstr "Зауваження сторінки"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr "Другорядна навігація по сайту"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Про"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "ЧаПи"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr "Умови"
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Конфіденційність"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Джерело"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Контакт"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr "Бедж"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "Ліцензія програмного забезпечення StatusNet"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4273,12 +4281,12 @@ msgstr ""
 "**%%site.name%%** — це сервіс мікроблоґів наданий вам [%%site.broughtby%%](%%"
 "site.broughtbyurl%%). "
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** — це сервіс мікроблоґів. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4289,31 +4297,31 @@ msgstr ""
 "для мікроблоґів, версія %s, доступному під [GNU Affero General Public "
 "License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 msgid "Site content license"
 msgstr "Ліцензія змісту сайту"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "Всі "
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "ліцензія."
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "Нумерація сторінок"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr "Вперед"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 msgid "Before"
 msgstr "Назад"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr "Виникли певні проблеми з токеном поточної сесії."
 
@@ -4365,6 +4373,16 @@ msgstr "Дописи, до яких прикріплено це вкладенн
 msgid "Tags for this attachment"
 msgstr "Теґи для цього вкладення"
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Пароль замінено"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Пароль замінено"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "Результати команди"
@@ -5158,7 +5176,7 @@ msgstr ""
 "повідомлення аби долучити користувачів до розмови. Такі повідомлення бачите "
 "лише Ви."
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr "від"
 
@@ -5224,69 +5242,73 @@ msgstr "Надіслати прямий допис"
 msgid "To"
 msgstr "До"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 msgid "Available characters"
 msgstr "Лишилось знаків"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 msgid "Send a notice"
 msgstr "Надіслати допис"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Що нового, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr "Вкласти"
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr "Вкласти файл"
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr "Показувати місцезнаходження"
+
+#: lib/noticelist.php:428
 #, 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:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr "Півн."
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr "Півд."
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr "Сх."
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr "Зах."
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr "в"
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 msgid "in context"
 msgstr "в контексті"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 msgid "Repeated by"
 msgstr "Вторуванні"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr "Відповісти на цей допис"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Відповісти"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 msgid "Notice repeated"
 msgstr "Допис вторували"
 
index 80dd9617d6a154488a73db13fa90b960043aad7d..029f4c86fd9937b78b01f022237186fc3ecd1c7b 100644 (file)
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:29+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:52+0000\n"
 "Language-Team: Vietnamese\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: vi\n"
 "X-Message-Group: out-statusnet\n"
@@ -193,11 +193,11 @@ msgstr "Không thể cập nhật thành viên."
 msgid "You cannot block yourself!"
 msgstr "Không thể cập nhật thành viên."
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -318,31 +318,31 @@ msgid "Could not find target user."
 msgstr "Không tìm thấy bất kỳ trạng thái nào."
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "Biệt hiệu phải là chữ viết thường hoặc số và không có khoảng trắng."
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname 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/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "Biệt hiệu không hợp lệ."
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "Trang chủ không phải là URL"
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "Tên đầy đủ quá dài (tối đa là 255 ký tự)."
@@ -353,7 +353,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "Lý lịch quá dài (không quá 140 ký tự)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "Tên khu vực quá dài (không quá 255 ký tự)."
@@ -474,7 +474,7 @@ msgstr "Quá dài. Tối đa là 140 ký tự."
 msgid "Not found"
 msgstr "Không tìm thấy"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -609,7 +609,7 @@ msgid "Preview"
 msgstr "Xem trước"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Delete"
 msgstr "Xóa tin nhắn"
@@ -624,13 +624,13 @@ msgid "Crop"
 msgstr "Nhóm"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -705,7 +705,7 @@ msgstr "Có"
 msgid "Block this user"
 msgstr "Ban user"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -780,7 +780,7 @@ msgstr "Địa chỉ đó đã được xác nhận rồi."
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "Không thể cập nhật thành viên."
@@ -843,7 +843,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:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 #, fuzzy
 msgid "Delete this notice"
 msgstr "Xóa tin nhắn"
@@ -997,7 +997,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1533,7 +1533,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1629,7 +1629,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "Người dùng không có thông tin."
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "Lỗi xảy ra khi lưu thành viên."
@@ -1817,7 +1817,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:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "Gửi"
 
@@ -1946,7 +1946,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:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "Đăng nhập"
@@ -2062,7 +2062,7 @@ msgstr "Tin mới nhất"
 msgid "Direct message to %s sent"
 msgstr "Tin nhắn riêng"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 #, fuzzy
 msgid "Ajax Error"
 msgstr "Lỗi"
@@ -2071,7 +2071,7 @@ msgstr "Lỗi"
 msgid "New notice"
 msgstr "Thông báo mới"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 #, fuzzy
 msgid "Notice posted"
 msgstr "Tin đã gửi"
@@ -2523,72 +2523,81 @@ msgstr "Thành phố"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "Bạn ở đâu, \"Thành phố, Tỉnh thành, Quốc gia\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "Từ khóa"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "Ngôn ngữ"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "Ngôn ngữ bạn thích"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "Khu vực"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "Khu vực nào bạn thường ở?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr "Tự động theo những người nào đăng ký theo tôi"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "Lý lịch quá dài (không quá 140 ký tự)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 #, fuzzy
 msgid "Language is too long (max 50 chars)."
 msgstr "Ngôn ngữ quá dài (tối đa là 50 ký tự)."
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "Trang chủ '%s'  không hợp lệ"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 #, fuzzy
 msgid "Couldn't update user for autosubscribe."
 msgstr "Không thể cập nhật thành viên."
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "Không thể lưu hồ sơ cá nhân."
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "Không thể lưu hồ sơ cá nhân."
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "Không thể lưu hồ sơ cá nhân."
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "Đã lưu các điều chỉnh."
 
@@ -2686,7 +2695,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2826,7 +2835,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:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "Đăng ký"
@@ -3018,7 +3027,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:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "Tạo"
@@ -4169,16 +4178,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "Có lỗi xảy ra khi lưu tin nhắn."
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, 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:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%s (%s)"
@@ -4238,140 +4247,140 @@ msgstr "%s (%s)"
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "Trang chủ"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "Giới thiệu"
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "Thay đổi mật khẩu của bạn"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "Kết nối"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "Không thể chuyển đến máy chủ: %s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "Tôi theo"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "Thư mời"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 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:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "Thoát"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "Tạo tài khoản mới"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "Hướng dẫn"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "Hướng dẫn"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "Tìm kiếm"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "Thông báo mới"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "Thông báo mới"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "Tôi theo"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "Giới thiệu"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "Riêng tư"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "Nguồn"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "Liên hệ"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "Tin đã gửi"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4380,12 +4389,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:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** là dịch vụ gửi tin nhắn. "
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, fuzzy, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4396,34 +4405,34 @@ msgstr ""
 "quyền [GNU Affero General Public License](http://www.fsf.org/licensing/"
 "licenses/agpl-3.0.html)."
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "Tìm theo nội dung của tin nhắn"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "Sau"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "Trước"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 #, 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."
@@ -4482,6 +4491,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "Đã lưu mật khẩu."
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "Đã lưu mật khẩu."
+
 #: lib/channel.php:138 lib/channel.php:158
 #, fuzzy
 msgid "Command results"
@@ -5232,7 +5251,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " từ "
@@ -5298,75 +5317,79 @@ msgstr "Xóa tin nhắn"
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "Nhiều hơn 6 ký tự"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "Thông báo mới"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "Bạn đang làm gì thế, %s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "Không"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "Không có nội dung!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "Tạo"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "Trả lời tin nhắn này"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr "Trả lời"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "Tin đã gửi"
index 48416654949654052acb2fde8604d47ba498503d..576797ad3997f9a9bc0542e876b82026a2e28730 100644 (file)
@@ -10,12 +10,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:32+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:12:55+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: zh-hans\n"
 "X-Message-Group: out-statusnet\n"
@@ -195,11 +195,11 @@ msgstr "无法更新用户。"
 msgid "You cannot block yourself!"
 msgstr "无法更新用户。"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr "阻止用户失败。"
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr "取消阻止用户失败。"
 
@@ -316,31 +316,31 @@ msgid "Could not find target user."
 msgstr "找不到任何信息。"
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "昵称只能使用小写字母和数字,不包含空格。"
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "昵称已被使用,换一个吧。"
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr "不是有效的昵称。"
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "主页的URL不正确。"
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "全名过长(不能超过 255 个字符)。"
@@ -351,7 +351,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "描述过长(不能超过140字符)。"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "位置过长(不能超过255个字符)。"
@@ -472,7 +472,7 @@ msgstr "超出长度限制。不能超过 140 个字符。"
 msgid "Not found"
 msgstr "未找到"
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -604,7 +604,7 @@ msgid "Preview"
 msgstr "预览"
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 #, fuzzy
 msgid "Delete"
 msgstr "删除"
@@ -618,13 +618,13 @@ msgid "Crop"
 msgstr "剪裁"
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -699,7 +699,7 @@ msgstr "是"
 msgid "Block this user"
 msgstr "阻止该用户"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr "保存阻止信息失败。"
 
@@ -776,7 +776,7 @@ msgstr "此地址已被确认。"
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "无法更新用户。"
@@ -839,7 +839,7 @@ msgstr "确定要删除这条消息吗?"
 msgid "Do not delete this notice"
 msgstr "无法删除通告。"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 #, fuzzy
 msgid "Delete this notice"
 msgstr "删除通告"
@@ -989,7 +989,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1505,7 +1505,7 @@ msgstr "%s 组成员, 第 %d 页"
 msgid "A list of the users in this group."
 msgstr "该组成员列表。"
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr "admin管理员"
 
@@ -1599,7 +1599,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr "用户没有个人信息。"
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "保存用户时出错。"
@@ -1776,7 +1776,7 @@ msgstr "个人消息"
 msgid "Optionally add a personal message to the invitation."
 msgstr "在邀请中加几句话(可选)。"
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr "发送"
 
@@ -1898,7 +1898,7 @@ msgstr "用户名或密码不正确。"
 msgid "Error setting user. You are probably not authorized."
 msgstr "未认证。"
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "登录"
@@ -2008,7 +2008,7 @@ msgstr "新消息"
 msgid "Direct message to %s sent"
 msgstr "已向 %s 发送消息"
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr "Ajax错误"
 
@@ -2016,7 +2016,7 @@ msgstr "Ajax错误"
 msgid "New notice"
 msgstr "新通告"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr "消息已发布。"
 
@@ -2455,70 +2455,79 @@ msgstr "位置"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr "你的位置,格式类似\"城市,省份,国家\""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr "标签"
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr "你的标签 (字母letters, 数字numbers, -, ., 和 _), 以逗号或空格分隔"
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr "语言"
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr "首选语言"
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr "时区"
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr "您一般处于哪个时区?"
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr "自动订阅任何订阅我的更新的人(这个选项最适合机器人)"
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "自述过长(不能超过140字符)。"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr "未选择时区。"
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr "语言过长(不能超过50个字符)。"
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "主页'%s'不正确"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr "无法更新用户的自动订阅选项。"
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "无法保存个人信息。"
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "无法保存个人信息。"
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "无法保存个人信息。"
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr "设置已保存。"
 
@@ -2618,7 +2627,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr "标签云聚集"
 
@@ -2755,7 +2764,7 @@ msgstr "验证码出错。"
 msgid "Registration successful"
 msgstr "注册成功。"
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr "注册"
@@ -2943,7 +2952,7 @@ msgstr "您必须同意此授权方可注册。"
 msgid "You already repeated that notice."
 msgstr "您已成功阻止该用户:"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "创建"
@@ -4086,16 +4095,16 @@ msgstr "你在短时间里发布了过多的消息,请深呼吸,过几分钟
 msgid "You are banned from posting notices on this site."
 msgstr "在这个网站你被禁止发布消息。"
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr "保存通告时出错。"
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "添加回复时数据库出错:%s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, fuzzy, php-format
 msgid "RT @%1$s %2$s"
 msgstr "%1$s (%2$s)"
@@ -4152,137 +4161,137 @@ msgstr "%s (%s)"
 msgid "Untitled page"
 msgstr "无标题页"
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr "主站导航"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "主页"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr "个人资料及朋友年表"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Account"
 msgstr "帐号"
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Change your email, avatar, password, profile"
 msgstr "修改资料"
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "连接"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "无法重定向到服务器:%s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 #, fuzzy
 msgid "Change site configuration"
 msgstr "主站导航"
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr "邀请"
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, fuzzy, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr "使用这个表单来邀请好友和同事加入。"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "登出"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr "登出本站"
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "创建新帐号"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr "登入本站"
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "帮助"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "帮助"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr "搜索"
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr "检索人或文字"
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "新通告"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr "本地显示"
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "新通告"
 
-#: lib/action.php:719
+#: lib/action.php:720
 #, fuzzy
 msgid "Secondary site navigation"
 msgstr "次项站导航"
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "关于"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "常见问题FAQ"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr "隐私"
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr "来源"
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "联系人"
 
-#: lib/action.php:741
+#: lib/action.php:742
 #, fuzzy
 msgid "Badge"
 msgstr "呼叫"
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr "StatusNet软件注册证"
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4291,12 +4300,12 @@ msgstr ""
 "**%%site.name%%** 是一个微博客服务,提供者为 [%%site.broughtby%%](%%site."
 "broughtbyurl%%)。"
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%** 是一个微博客服务。"
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4307,34 +4316,34 @@ msgstr ""
 "General Public License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)"
 "授权。"
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "StatusNet软件注册证"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr "全部"
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr "注册证"
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr "分页"
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 #, fuzzy
 msgid "After"
 msgstr "« 之后"
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "之前 »"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 #, fuzzy
 msgid "There was a problem with your session token."
 msgstr "会话标识有问题,请重试。"
@@ -4395,6 +4404,16 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+#, fuzzy
+msgid "Password changing failed"
+msgstr "密码已保存。"
+
+#: lib/authenticationplugin.php:197
+#, fuzzy
+msgid "Password changing is not allowed"
+msgstr "密码已保存。"
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr "执行结果"
@@ -5093,7 +5112,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 #, fuzzy
 msgid "from"
 msgstr " 从 "
@@ -5159,76 +5178,80 @@ msgstr "删除通告"
 msgid "To"
 msgstr "到"
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6 个或更多字符"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "发送消息"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr "怎么样,%s?"
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 #, fuzzy
 msgid "N"
 msgstr "否"
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "没有内容!"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "创建"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 #, fuzzy
 msgid "Reply to this notice"
 msgstr "无法删除通告。"
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 #, fuzzy
 msgid "Reply"
 msgstr "回复"
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "消息已发布。"
index 95e296d049fc334e0e2a880bde588a4c2fc46720..906f8fab1b5ddd18874a6759cd0a0e9161d16b4a 100644 (file)
@@ -7,12 +7,12 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-25 09:42+0000\n"
-"PO-Revision-Date: 2009-12-28 08:11:35+0000\n"
+"POT-Creation-Date: 2010-01-05 22:10+0000\n"
+"PO-Revision-Date: 2010-01-05 22:13:02+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 (r60437); Translate extension (2009-12-06)\n"
+"X-Generator: MediaWiki 1.16alpha (r60693); Translate extension (2010-01-04)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: zh-hant\n"
 "X-Message-Group: out-statusnet\n"
@@ -192,11 +192,11 @@ msgstr "無法更新使用者"
 msgid "You cannot block yourself!"
 msgstr "無法更新使用者"
 
-#: actions/apiblockcreate.php:119
+#: actions/apiblockcreate.php:126
 msgid "Block user failed."
 msgstr ""
 
-#: actions/apiblockdestroy.php:107
+#: actions/apiblockdestroy.php:114
 msgid "Unblock user failed."
 msgstr ""
 
@@ -311,31 +311,31 @@ msgid "Could not find target user."
 msgstr "無法更新使用者"
 
 #: actions/apigroupcreate.php:164 actions/editgroup.php:182
-#: actions/newgroup.php:126 actions/profilesettings.php:208
+#: actions/newgroup.php:126 actions/profilesettings.php:215
 #: actions/register.php:205
 msgid "Nickname must have only lowercase letters and numbers and no spaces."
 msgstr "暱稱請用小寫字母或數字,勿加空格。"
 
 #: actions/apigroupcreate.php:173 actions/editgroup.php:186
-#: actions/newgroup.php:130 actions/profilesettings.php:231
+#: actions/newgroup.php:130 actions/profilesettings.php:238
 #: actions/register.php:208
 msgid "Nickname already in use. Try another one."
 msgstr "此暱稱已有人使用。再試試看別的吧。"
 
 #: actions/apigroupcreate.php:180 actions/editgroup.php:189
-#: actions/newgroup.php:133 actions/profilesettings.php:211
+#: actions/newgroup.php:133 actions/profilesettings.php:218
 #: actions/register.php:210
 msgid "Not a valid nickname."
 msgstr ""
 
 #: actions/apigroupcreate.php:196 actions/editgroup.php:195
-#: actions/newgroup.php:139 actions/profilesettings.php:215
+#: actions/newgroup.php:139 actions/profilesettings.php:222
 #: actions/register.php:217
 msgid "Homepage is not a valid URL."
 msgstr "個人首頁位址錯誤"
 
 #: actions/apigroupcreate.php:205 actions/editgroup.php:198
-#: actions/newgroup.php:142 actions/profilesettings.php:218
+#: actions/newgroup.php:142 actions/profilesettings.php:225
 #: actions/register.php:220
 msgid "Full name is too long (max 255 chars)."
 msgstr "全名過長(最多255字元)"
@@ -346,7 +346,7 @@ msgid "Description is too long (max %d chars)."
 msgstr "自我介紹過長(共140個字元)"
 
 #: actions/apigroupcreate.php:224 actions/editgroup.php:204
-#: actions/newgroup.php:148 actions/profilesettings.php:225
+#: actions/newgroup.php:148 actions/profilesettings.php:232
 #: actions/register.php:227
 msgid "Location is too long (max 255 chars)."
 msgstr "地點過長(共255個字)"
@@ -466,7 +466,7 @@ msgstr ""
 msgid "Not found"
 msgstr ""
 
-#: actions/apistatusesupdate.php:227 actions/newnotice.php:191
+#: actions/apistatusesupdate.php:221 actions/newnotice.php:178
 #, php-format
 msgid "Max notice size is %d chars, including attachment URL."
 msgstr ""
@@ -598,7 +598,7 @@ msgid "Preview"
 msgstr ""
 
 #: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:603
+#: lib/noticelist.php:611
 msgid "Delete"
 msgstr ""
 
@@ -611,13 +611,13 @@ msgid "Crop"
 msgstr ""
 
 #: actions/avatarsettings.php:268 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75
+#: 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:135 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:187 actions/recoverpassword.php:337
+#: 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
@@ -692,7 +692,7 @@ msgstr ""
 msgid "Block this user"
 msgstr "無此使用者"
 
-#: actions/block.php:162
+#: actions/block.php:167
 msgid "Failed to save block information."
 msgstr ""
 
@@ -768,7 +768,7 @@ msgstr ""
 #: actions/confirmaddress.php:114 actions/emailsettings.php:296
 #: actions/emailsettings.php:427 actions/imsettings.php:258
 #: actions/imsettings.php:401 actions/othersettings.php:174
-#: actions/profilesettings.php:276 actions/smssettings.php:278
+#: actions/profilesettings.php:283 actions/smssettings.php:278
 #: actions/smssettings.php:420
 msgid "Couldn't update user."
 msgstr "無法更新使用者"
@@ -830,7 +830,7 @@ msgstr ""
 msgid "Do not delete this notice"
 msgstr "無此通知"
 
-#: actions/deletenotice.php:146 lib/noticelist.php:603
+#: actions/deletenotice.php:146 lib/noticelist.php:611
 msgid "Delete this notice"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 
 #: actions/designadminpanel.php:586 actions/emailsettings.php:195
 #: actions/imsettings.php:163 actions/othersettings.php:126
-#: actions/pathsadminpanel.php:324 actions/profilesettings.php:167
+#: 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
@@ -1474,7 +1474,7 @@ msgstr ""
 msgid "A list of the users in this group."
 msgstr ""
 
-#: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107
+#: actions/groupmembers.php:175 lib/action.php:441 lib/groupnav.php:107
 msgid "Admin"
 msgstr ""
 
@@ -1563,7 +1563,7 @@ msgstr ""
 msgid "User is not blocked from group."
 msgstr ""
 
-#: actions/groupunblock.php:128 actions/unblock.php:77
+#: actions/groupunblock.php:128 actions/unblock.php:86
 #, fuzzy
 msgid "Error removing the block."
 msgstr "儲存使用者發生錯誤"
@@ -1736,7 +1736,7 @@ msgstr ""
 msgid "Optionally add a personal message to the invitation."
 msgstr ""
 
-#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:222
+#: actions/invite.php:197 lib/messageform.php:178 lib/noticeform.php:232
 msgid "Send"
 msgstr ""
 
@@ -1832,7 +1832,7 @@ msgstr "使用者名稱或密碼錯誤"
 msgid "Error setting user. You are probably not authorized."
 msgstr ""
 
-#: actions/login.php:208 actions/login.php:261 lib/action.php:458
+#: actions/login.php:208 actions/login.php:261 lib/action.php:459
 #: lib/logingroupnav.php:79
 msgid "Login"
 msgstr "登入"
@@ -1939,7 +1939,7 @@ msgstr ""
 msgid "Direct message to %s sent"
 msgstr ""
 
-#: actions/newmessage.php:210 actions/newnotice.php:250 lib/channel.php:170
+#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
 msgid "Ajax Error"
 msgstr ""
 
@@ -1947,7 +1947,7 @@ msgstr ""
 msgid "New notice"
 msgstr "新訊息"
 
-#: actions/newnotice.php:216
+#: actions/newnotice.php:211
 msgid "Notice posted"
 msgstr ""
 
@@ -2375,70 +2375,79 @@ msgstr "地點"
 msgid "Where you are, like \"City, State (or Region), Country\""
 msgstr ""
 
-#: actions/profilesettings.php:138 actions/tagother.php:149
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
 #: actions/tagother.php:209 lib/subscriptionlist.php:106
 #: lib/subscriptionlist.php:108 lib/userprofile.php:209
 msgid "Tags"
 msgstr ""
 
-#: actions/profilesettings.php:140
+#: actions/profilesettings.php:147
 msgid ""
 "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
 msgstr ""
 
-#: actions/profilesettings.php:144 actions/siteadminpanel.php:294
+#: actions/profilesettings.php:151 actions/siteadminpanel.php:294
 msgid "Language"
 msgstr ""
 
-#: actions/profilesettings.php:145
+#: actions/profilesettings.php:152
 msgid "Preferred language"
 msgstr ""
 
-#: actions/profilesettings.php:154
+#: actions/profilesettings.php:161
 msgid "Timezone"
 msgstr ""
 
-#: actions/profilesettings.php:155
+#: actions/profilesettings.php:162
 msgid "What timezone are you normally in?"
 msgstr ""
 
-#: actions/profilesettings.php:160
+#: actions/profilesettings.php:167
 msgid ""
 "Automatically subscribe to whoever subscribes to me (best for non-humans)"
 msgstr ""
 
-#: actions/profilesettings.php:221 actions/register.php:223
+#: actions/profilesettings.php:228 actions/register.php:223
 #, fuzzy, php-format
 msgid "Bio is too long (max %d chars)."
 msgstr "自我介紹過長(共140個字元)"
 
-#: actions/profilesettings.php:228 actions/siteadminpanel.php:164
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:164
 msgid "Timezone not selected."
 msgstr ""
 
-#: actions/profilesettings.php:234
+#: actions/profilesettings.php:241
 msgid "Language is too long (max 50 chars)."
 msgstr ""
 
-#: actions/profilesettings.php:246 actions/tagother.php:178
+#: actions/profilesettings.php:253 actions/tagother.php:178
 #, fuzzy, php-format
 msgid "Invalid tag: \"%s\""
 msgstr "個人首頁連結%s無效"
 
-#: actions/profilesettings.php:295
+#: actions/profilesettings.php:302
 msgid "Couldn't update user for autosubscribe."
 msgstr ""
 
-#: actions/profilesettings.php:328
+#: actions/profilesettings.php:354
+#, fuzzy
+msgid "Couldn't save location prefs."
+msgstr "無法儲存個人資料"
+
+#: actions/profilesettings.php:366
 msgid "Couldn't save profile."
 msgstr "無法儲存個人資料"
 
-#: actions/profilesettings.php:336
+#: actions/profilesettings.php:374
 #, fuzzy
 msgid "Couldn't save tags."
 msgstr "無法儲存個人資料"
 
-#: actions/profilesettings.php:344 lib/adminpanelaction.php:126
+#: actions/profilesettings.php:382 lib/adminpanelaction.php:126
 msgid "Settings saved."
 msgstr ""
 
@@ -2532,7 +2541,7 @@ msgid ""
 "one!"
 msgstr ""
 
-#: actions/publictagcloud.php:135
+#: actions/publictagcloud.php:131
 msgid "Tag cloud"
 msgstr ""
 
@@ -2669,7 +2678,7 @@ msgstr "確認碼發生錯誤"
 msgid "Registration successful"
 msgstr ""
 
-#: actions/register.php:114 actions/register.php:502 lib/action.php:455
+#: actions/register.php:114 actions/register.php:502 lib/action.php:456
 #: lib/logingroupnav.php:85
 msgid "Register"
 msgstr ""
@@ -2837,7 +2846,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr "無此使用者"
 
-#: actions/repeat.php:114 lib/noticelist.php:621
+#: actions/repeat.php:114 lib/noticelist.php:629
 #, fuzzy
 msgid "Repeated"
 msgstr "新增"
@@ -3940,16 +3949,16 @@ msgstr ""
 msgid "You are banned from posting notices on this site."
 msgstr ""
 
-#: classes/Notice.php:319 classes/Notice.php:344
+#: classes/Notice.php:309 classes/Notice.php:334
 msgid "Problem saving notice."
 msgstr ""
 
-#: classes/Notice.php:1044
+#: classes/Notice.php:1034
 #, php-format
 msgid "DB error inserting reply: %s"
 msgstr "增加回覆時,資料庫發生錯誤: %s"
 
-#: classes/Notice.php:1371
+#: classes/Notice.php:1361
 #, php-format
 msgid "RT @%1$s %2$s"
 msgstr ""
@@ -4008,134 +4017,134 @@ msgstr ""
 msgid "Untitled page"
 msgstr ""
 
-#: lib/action.php:425
+#: lib/action.php:426
 msgid "Primary site navigation"
 msgstr ""
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Home"
 msgstr "主頁"
 
-#: lib/action.php:431
+#: lib/action.php:432
 msgid "Personal profile and friends timeline"
 msgstr ""
 
-#: lib/action.php:433
+#: lib/action.php:434
 #, fuzzy
 msgid "Account"
 msgstr "關於"
 
-#: lib/action.php:433
+#: lib/action.php:434
 msgid "Change your email, avatar, password, profile"
 msgstr ""
 
-#: lib/action.php:436
+#: lib/action.php:437
 msgid "Connect"
 msgstr "連結"
 
-#: lib/action.php:436
+#: lib/action.php:437
 #, fuzzy
 msgid "Connect to services"
 msgstr "無法連結到伺服器:%s"
 
-#: lib/action.php:440
+#: lib/action.php:441
 msgid "Change site configuration"
 msgstr ""
 
-#: lib/action.php:444 lib/subgroupnav.php:105
+#: lib/action.php:445 lib/subgroupnav.php:105
 msgid "Invite"
 msgstr ""
 
-#: lib/action.php:445 lib/subgroupnav.php:106
+#: lib/action.php:446 lib/subgroupnav.php:106
 #, php-format
 msgid "Invite friends and colleagues to join you on %s"
 msgstr ""
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout"
 msgstr "登出"
 
-#: lib/action.php:450
+#: lib/action.php:451
 msgid "Logout from the site"
 msgstr ""
 
-#: lib/action.php:455
+#: lib/action.php:456
 #, fuzzy
 msgid "Create an account"
 msgstr "新增帳號"
 
-#: lib/action.php:458
+#: lib/action.php:459
 msgid "Login to the site"
 msgstr ""
 
-#: lib/action.php:461 lib/action.php:724
+#: lib/action.php:462 lib/action.php:725
 msgid "Help"
 msgstr "求救"
 
-#: lib/action.php:461
+#: lib/action.php:462
 #, fuzzy
 msgid "Help me!"
 msgstr "求救"
 
-#: lib/action.php:464 lib/searchaction.php:127
+#: lib/action.php:465 lib/searchaction.php:127
 msgid "Search"
 msgstr ""
 
-#: lib/action.php:464
+#: lib/action.php:465
 msgid "Search for people or text"
 msgstr ""
 
-#: lib/action.php:485
+#: lib/action.php:486
 #, fuzzy
 msgid "Site notice"
 msgstr "新訊息"
 
-#: lib/action.php:551
+#: lib/action.php:552
 msgid "Local views"
 msgstr ""
 
-#: lib/action.php:617
+#: lib/action.php:618
 #, fuzzy
 msgid "Page notice"
 msgstr "新訊息"
 
-#: lib/action.php:719
+#: lib/action.php:720
 msgid "Secondary site navigation"
 msgstr ""
 
-#: lib/action.php:726
+#: lib/action.php:727
 msgid "About"
 msgstr "關於"
 
-#: lib/action.php:728
+#: lib/action.php:729
 msgid "FAQ"
 msgstr "常見問題"
 
-#: lib/action.php:732
+#: lib/action.php:733
 msgid "TOS"
 msgstr ""
 
-#: lib/action.php:735
+#: lib/action.php:736
 msgid "Privacy"
 msgstr ""
 
-#: lib/action.php:737
+#: lib/action.php:738
 msgid "Source"
 msgstr ""
 
-#: lib/action.php:739
+#: lib/action.php:740
 msgid "Contact"
 msgstr "好友名單"
 
-#: lib/action.php:741
+#: lib/action.php:742
 msgid "Badge"
 msgstr ""
 
-#: lib/action.php:769
+#: lib/action.php:770
 msgid "StatusNet software license"
 msgstr ""
 
-#: lib/action.php:772
+#: lib/action.php:773
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -4144,12 +4153,12 @@ msgstr ""
 "**%%site.name%%**是由[%%site.broughtby%%](%%site.broughtbyurl%%)所提供的微型"
 "部落格服務"
 
-#: lib/action.php:774
+#: lib/action.php:775
 #, php-format
 msgid "**%%site.name%%** is a microblogging service. "
 msgstr "**%%site.name%%**是個微型部落格"
 
-#: lib/action.php:776
+#: lib/action.php:777
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -4157,33 +4166,33 @@ msgid ""
 "org/licensing/licenses/agpl-3.0.html)."
 msgstr ""
 
-#: lib/action.php:790
+#: lib/action.php:791
 #, fuzzy
 msgid "Site content license"
 msgstr "新訊息"
 
-#: lib/action.php:799
+#: lib/action.php:800
 msgid "All "
 msgstr ""
 
-#: lib/action.php:804
+#: lib/action.php:805
 msgid "license."
 msgstr ""
 
-#: lib/action.php:1098
+#: lib/action.php:1099
 msgid "Pagination"
 msgstr ""
 
-#: lib/action.php:1107
+#: lib/action.php:1108
 msgid "After"
 msgstr ""
 
-#: lib/action.php:1115
+#: lib/action.php:1116
 #, fuzzy
 msgid "Before"
 msgstr "之前的內容»"
 
-#: lib/action.php:1163
+#: lib/action.php:1164
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -4238,6 +4247,14 @@ msgstr ""
 msgid "Tags for this attachment"
 msgstr ""
 
+#: lib/authenticationplugin.php:182 lib/authenticationplugin.php:187
+msgid "Password changing failed"
+msgstr ""
+
+#: lib/authenticationplugin.php:197
+msgid "Password changing is not allowed"
+msgstr ""
+
 #: lib/channel.php:138 lib/channel.php:158
 msgid "Command results"
 msgstr ""
@@ -4917,7 +4934,7 @@ msgid ""
 "users in conversation. People can send you messages for your eyes only."
 msgstr ""
 
-#: lib/mailbox.php:227 lib/noticelist.php:469
+#: lib/mailbox.php:227 lib/noticelist.php:477
 msgid "from"
 msgstr ""
 
@@ -4982,73 +4999,77 @@ msgstr ""
 msgid "To"
 msgstr ""
 
-#: lib/messageform.php:159 lib/noticeform.php:183
+#: lib/messageform.php:159 lib/noticeform.php:185
 #, fuzzy
 msgid "Available characters"
 msgstr "6個以上字元"
 
-#: lib/noticeform.php:158
+#: lib/noticeform.php:160
 #, fuzzy
 msgid "Send a notice"
 msgstr "新訊息"
 
-#: lib/noticeform.php:171
+#: lib/noticeform.php:173
 #, php-format
 msgid "What's up, %s?"
 msgstr ""
 
-#: lib/noticeform.php:190
+#: lib/noticeform.php:192
 msgid "Attach"
 msgstr ""
 
-#: lib/noticeform.php:194
+#: lib/noticeform.php:196
 msgid "Attach a file"
 msgstr ""
 
-#: lib/noticelist.php:420
+#: lib/noticeform.php:212
+msgid "Share your location"
+msgstr ""
+
+#: lib/noticelist.php:428
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "N"
 msgstr ""
 
-#: lib/noticelist.php:421
+#: lib/noticelist.php:429
 msgid "S"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "E"
 msgstr ""
 
-#: lib/noticelist.php:422
+#: lib/noticelist.php:430
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:428
+#: lib/noticelist.php:436
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelist.php:531
 #, fuzzy
 msgid "in context"
 msgstr "無內容"
 
-#: lib/noticelist.php:548
+#: lib/noticelist.php:556
 #, fuzzy
 msgid "Repeated by"
 msgstr "新增"
 
-#: lib/noticelist.php:577
+#: lib/noticelist.php:585
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:578
+#: lib/noticelist.php:586
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:620
+#: lib/noticelist.php:628
 #, fuzzy
 msgid "Notice repeated"
 msgstr "更新個人圖像"
diff --git a/plugins/APCPlugin.php b/plugins/APCPlugin.php
new file mode 100644 (file)
index 0000000..18409e2
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for APC variable cache
+ *
+ * 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  Cache
+ * @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')) {
+    // This check helps protect against security problems;
+    // your code file can't be executed directly from the web.
+    exit(1);
+}
+
+/**
+ * A plugin to use APC's variable cache for the cache interface
+ *
+ * New plugin interface lets us use alternative cache systems
+ * for caching. This one uses APC's variable cache.
+ *
+ * @category  Cache
+ * @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/
+ */
+
+class APCPlugin extends Plugin
+{
+    /**
+     * Get a value associated with a key
+     *
+     * The value should have been set previously.
+     *
+     * @param string &$key   in; Lookup key
+     * @param mixed  &$value out; value associated with key
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheGet(&$key, &$value)
+    {
+        $value = apc_fetch($key);
+        Event::handle('EndCacheGet', array($key, &$value));
+        return false;
+    }
+
+    /**
+     * Associate a value with a key
+     *
+     * @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 &$expiry  in; Expiry (passed through to Memcache)
+     * @param boolean &$success out; Whether the set was successful
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+    {
+        $success = apc_store($key, $value, ((is_null($expiry)) ? 0 : $expiry));
+
+        Event::handle('EndCacheSet', array($key, $value, $flag,
+                                           $expiry));
+        return false;
+    }
+
+    /**
+     * Delete a value associated with a key
+     *
+     * @param string  &$key     in; Key to lookup
+     * @param boolean &$success out; whether it worked
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheDelete(&$key, &$success)
+    {
+        $success = apc_delete($key);
+        Event::handle('EndCacheDelete', array($key));
+        return false;
+    }
+}
+
diff --git a/plugins/Authentication/AuthenticationPlugin.php b/plugins/Authentication/AuthenticationPlugin.php
deleted file mode 100644 (file)
index a76848b..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Superclass for plugins that do authentication and/or authorization
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * @category  Plugin
- * @package   StatusNet
- * @author    Craig Andrews <candrews@integralblue.com>
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://status.net/
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
-
-/**
- * Superclass for plugins that do authentication
- *
- * @category Plugin
- * @package  StatusNet
- * @author   Craig Andrews <candrews@integralblue.com>
- * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://status.net/
- */
-
-abstract class AuthenticationPlugin extends Plugin
-{
-    //is this plugin authoritative for authentication?
-    public $authoritative = false;
-    
-    //should accounts be automatically created after a successful login attempt?
-    public $autoregistration = false;
-
-    //can the user change their email address
-    public $password_changeable=true;
-
-    //unique name for this authentication provider
-    public $provider_name;
-
-    //------------Auth plugin should implement some (or all) of these methods------------\\
-    /**
-    * Check if a nickname/password combination is valid
-    * @param username
-    * @param password
-    * @return boolean true if the credentials are valid, false if they are invalid.
-    */
-    function checkPassword($username, $password)
-    {
-        return false;
-    }
-
-    /**
-    * Automatically register a user when they attempt to login with valid credentials.
-    * User::register($data) is a very useful method for this implementation
-    * @param username
-    * @return mixed instance of User, or false (if user couldn't be created)
-    */
-    function autoRegister($username)
-    {
-        $registration_data = array();
-        $registration_data['nickname'] = $username ;
-        return User::register($registration_data);
-    }
-
-    /**
-    * Change a user's password
-    * The old password has been verified to be valid by this plugin before this call is made
-    * @param username
-    * @param oldpassword
-    * @param newpassword
-    * @return boolean true if the password was changed, false if password changing failed for some reason
-    */
-    function changePassword($username,$oldpassword,$newpassword)
-    {
-        return false;
-    }
-
-    //------------Below are the methods that connect StatusNet to the implementing Auth plugin------------\\
-    function onInitializePlugin(){
-        if(!isset($this->provider_name)){
-            throw new Exception("must specify a provider_name for this authentication provider");
-        }
-    }
-
-    function onStartCheckPassword($nickname, $password, &$authenticatedUser){
-        //map the nickname to a username
-        $user_username = new User_username();
-        $user_username->username=$nickname;
-        $user_username->provider_name=$this->provider_name;
-        if($user_username->find() && $user_username->fetch()){
-            $username = $user_username->username;
-            $authenticated = $this->checkPassword($username, $password);
-            if($authenticated){
-                $authenticatedUser = User::staticGet('id', $user_username->user_id);
-                return false;
-            }
-        }else{
-            $user = User::staticGet('nickname', $nickname);
-            if($user){
-                //make sure a different provider isn't handling this nickname
-                $user_username = new User_username();
-                $user_username->username=$nickname;
-                if(!$user_username->find()){
-                    //no other provider claims this username, so it's safe for us to handle it
-                    $authenticated = $this->checkPassword($nickname, $password);
-                    if($authenticated){
-                        $authenticatedUser = User::staticGet('nickname', $nickname);
-                        User_username::register($authenticatedUser,$nickname,$this->provider_name);
-                        return false;
-                    }
-                }
-            }else{
-                if($this->autoregistration){
-                    $authenticated = $this->checkPassword($nickname, $password);
-                    if($authenticated){
-                        $user = $this->autoregister($nickname);
-                        if($user){
-                            $authenticatedUser = $user;
-                            User_username::register($authenticatedUser,$nickname,$this->provider_name);
-                            return false;
-                        }
-                    }
-                }
-            }
-        }
-        if($this->authoritative){
-            return false;
-        }else{
-            //we're not authoritative, so let other handlers try
-            return;
-        }
-    }
-
-    function onStartChangePassword($user,$oldpassword,$newpassword)
-    {
-        if($this->password_changeable){
-            $user_username = new User_username();
-            $user_username->user_id=$user->id;
-            $user_username->provider_name=$this->provider_name;
-            if($user_username->find() && $user_username->fetch()){
-                $authenticated = $this->checkPassword($user_username->username, $oldpassword);
-                if($authenticated){
-                    $result = $this->changePassword($user_username->username,$oldpassword,$newpassword);
-                    if($result){
-                        //stop handling of other handlers, because what was requested was done
-                        return false;
-                    }else{
-                        throw new Exception(_('Password changing failed'));
-                    }
-                }else{
-                    if($this->authoritative){
-                        //since we're authoritative, no other plugin could do this
-                        throw new Exception(_('Password changing failed'));
-                    }else{
-                        //let another handler try
-                        return null;
-                    }
-                }
-            }
-        }else{
-            if($this->authoritative){
-                //since we're authoritative, no other plugin could do this
-                throw new Exception(_('Password changing is not allowed'));
-            }
-        }
-    }
-
-    function onStartAccountSettingsPasswordMenuItem($widget)
-    {
-        if($this->authoritative && !$this->password_changeable){
-            //since we're authoritative, no other plugin could change passwords, so do not render the menu item
-            return false;
-        }
-    }
-
-    function onAutoload($cls)
-    {
-        switch ($cls)
-        {
-         case 'User_username':
-            require_once(INSTALLDIR.'/plugins/Authentication/User_username.php');
-            return false;
-         default:
-            return true;
-        }
-    }
-
-    function onCheckSchema() {
-        $schema = Schema::get();
-        $schema->ensureTable('user_username',
-                             array(new ColumnDef('provider_name', 'varchar',
-                                                 '255', false, 'PRI'),
-                                   new ColumnDef('username', 'varchar',
-                                                 '255', false, 'PRI'),
-                                   new ColumnDef('user_id', 'integer',
-                                                 null, false),
-                                   new ColumnDef('created', 'datetime',
-                                                 null, false),
-                                   new ColumnDef('modified', 'timestamp')));
-        return true;
-    }
-
-    function onUserDeleteRelated($user, &$tables)
-    {
-        $tables[] = 'User_username';
-        return true;
-    }
-}
-
diff --git a/plugins/Authentication/User_username.php b/plugins/Authentication/User_username.php
deleted file mode 100644 (file)
index 853fd5c..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-/**
- * Table Definition for user_username
- */
-require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-
-class User_username extends Memcached_DataObject
-{
-    ###START_AUTOCODE
-    /* the code below is auto generated do not remove the above tag */
-
-    public $__table = 'user_username';                     // table name
-    public $user_id;                        // int(4)  not_null
-    public $provider_name;                  // varchar(255)  primary_key not_null
-    public $username;                       // varchar(255)  primary_key not_null
-    public $created;                        // datetime()   not_null
-    public $modified;                       // timestamp()   not_null default_CURRENT_TIMESTAMP
-
-    /* Static get */
-    function staticGet($k,$v=null)
-    { return Memcached_DataObject::staticGet('User_username',$k,$v); }
-
-    /* the code above is auto generated do not remove the tag below */
-    ###END_AUTOCODE
-
-    /**
-    * Register a user with a username on a given provider
-    * @param User User object
-    * @param string username on the given provider
-    * @param provider_name string name of the provider
-    * @return mixed User_username instance if the registration succeeded, false if it did not
-    */
-    static function register($user, $username, $provider_name)
-    {
-        $user_username = new User_username();
-        $user_username->user_id = $user->id;
-        $user_username->provider_name = $provider_name;
-        $user_username->username = $username;
-        $user_username->created = DB_DataObject_Cast::dateTime();
-        if($user_username->insert()){
-            return $user_username;
-        }else{
-            return false;
-        }
-    }
-
-    function table() {
-        return array(
-            'user_id'     => DB_DATAOBJECT_INT,
-            'username'   => DB_DATAOBJECT_STR,
-            'provider_name'   => DB_DATAOBJECT_STR ,
-            'created'   => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
-        );
-    }
-
-    // now define the keys.
-    function keys() {
-        return array('provider_name', 'username');
-    }
-
-}
diff --git a/plugins/Authorization/AuthorizationPlugin.php b/plugins/Authorization/AuthorizationPlugin.php
deleted file mode 100644 (file)
index e4e046d..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Superclass for plugins that do authorization
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * @category  Plugin
- * @package   StatusNet
- * @author    Craig Andrews <candrews@integralblue.com>
- * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://status.net/
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
-
-/**
- * Superclass for plugins that do authorization
- *
- * @category Plugin
- * @package  StatusNet
- * @author   Craig Andrews <candrews@integralblue.com>
- * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://status.net/
- */
-
-abstract class AuthorizationPlugin extends Plugin
-{
-    //is this plugin authoritative for authorization?
-    public $authoritative = false;
-
-    //------------Auth plugin should implement some (or all) of these methods------------\\
-
-    /**
-    * Is a user allowed to log in?
-    * @param user
-    * @return boolean true if the user is allowed to login, false if explicitly not allowed to login, null if we don't explicitly allow or deny login
-    */
-    function loginAllowed($user) {
-        return null;
-    }
-
-    /**
-    * Does a profile grant the user a named role?
-    * @param profile
-    * @return boolean true if the profile has the role, false if not
-    */
-    function hasRole($profile, $name) {
-        return false;
-    }
-
-    //------------Below are the methods that connect StatusNet to the implementing Auth plugin------------\\
-    function onInitializePlugin(){
-
-    }
-
-    function onStartSetUser(&$user) {
-        $loginAllowed = $this->loginAllowed($user);
-        if($loginAllowed === true){
-            return;
-        }else if($loginAllowed === false){
-            $user = null;
-            return false;
-        }else{
-            if($this->authoritative) {
-                $user = null;
-                return false;
-            }else{
-                return;
-            }
-        }
-    }
-
-    function onStartSetApiUser(&$user) {
-        return $this->onStartSetUser(&$user);
-    }
-
-    function onStartHasRole($profile, $name, &$has_role) {
-        if($this->hasRole($profile, $name)){
-            $has_role = true;
-            return false;
-        }else{
-            if($this->authoritative) {
-                $has_role = false;
-                return false;
-            }else{
-                return;
-            }
-        }
-    }
-}
-
index 65d0f70e653a2ed4e82f3c2d223ca8242dd70f7c..f7f28b4d6c53209eaa411bb8721101383f381b75 100644 (file)
@@ -49,6 +49,18 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
         if(!$response) return;
         return current(json_decode($response)->results)->hashUrl;
     }
-}
 
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => sprintf('BitlyUrl (%s)', $this->shortenerName),
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:BitlyUrl',
+                            'rawdescription' =>
+                            sprintf(_m('Uses <a href="http://%1$s/">%1$s</a> URL-shortener service.'),
+                                    $this->shortenerName));
+
+        return true;
+    }
+}
 
index 655b0926b797d53392c41566e4f1b4f0fdcbd311..84a2cb6168e7752d2ea2489917c06ec6c927cb4a 100644 (file)
@@ -43,6 +43,8 @@ if (!defined('STATUSNET')) {
 
 class BlacklistPlugin extends Plugin
 {
+    const VERSION = STATUSNET_VERSION;
+
     public $nicknames = array();
     public $urls      = array();
 
@@ -200,4 +202,15 @@ class BlacklistPlugin extends Plugin
 
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Blacklist',
+                            'version' => self::VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Blacklist',
+                            'description' =>
+                            _m('Keep a blacklist of forbidden nickname and URL patterns.'));
+        return true;
+    }
 }
diff --git a/plugins/CacheLogPlugin.php b/plugins/CacheLogPlugin.php
new file mode 100644 (file)
index 0000000..4c47de8
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Logs cache 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  Cache
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    // This check helps protect against security problems;
+    // your code file can't be executed directly from the web.
+    exit(1);
+}
+
+/**
+ * Log cache access
+ *
+ * Note that since most caching plugins return false for StartCache*
+ * methods, you should add this plugin before them, i.e.
+ *
+ *     addPlugin('CacheLog');
+ *     addPlugin('XCache');
+ *
+ * @category  Cache
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+class CacheLogPlugin extends Plugin
+{
+    function onStartCacheGet(&$key, &$value)
+    {
+        $this->log(LOG_INFO, "Fetching key '$key'");
+        return true;
+    }
+
+    function onEndCacheGet($key, &$value)
+    {
+        if ($value === false) {
+            $this->log(LOG_INFO, "Cache MISS for key '$key'");
+        } else {
+            $this->log(LOG_INFO, "Cache HIT for key '$key'");
+        }
+        return true;
+    }
+
+    function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+    {
+        if (empty($value)) {
+            if (is_array($value)) {
+                $this->log(LOG_INFO, "Setting empty array for key '$key'");
+            } else if (is_null($value)) {
+                $this->log(LOG_INFO, "Setting null value for key '$key'");
+            } else if (is_string($value)) {
+                $this->log(LOG_INFO, "Setting empty string for key '$key'");
+            } else if (is_integer($value)) {
+                $this->log(LOG_INFO, "Setting integer 0 for key '$key'");
+            } else {
+                $this->log(LOG_INFO, "Setting empty value '$value' for key '$key'");
+            }
+        } else {
+            $this->log(LOG_INFO, "Setting non-empty value for key '$key'");
+        }
+        return true;
+    }
+
+    function onEndCacheSet($key, $value, $flag, $expiry)
+    {
+        $this->log(LOG_INFO, "Done setting cache value for key '$key'");
+        return true;
+    }
+
+    function onStartCacheDelete(&$key, &$success)
+    {
+        $this->log(LOG_INFO, "Deleting cache value for key '$key'");
+        return true;
+    }
+
+    function onEndCacheDelete($key)
+    {
+        $this->log(LOG_INFO, "Done deleting cache value for key '$key'");
+        return true;
+    }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'CacheLog',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:CacheLog',
+                            'description' =>
+                            _m('Log reads and writes to the cache'));
+        return true;
+    }
+}
+
index 428aafb024574a3e208973b7d43cdb6e1ea87827..818a11f77e19ce76abc51881ca392b928952c08e 100644 (file)
@@ -39,6 +39,7 @@ class CasAuthenticationPlugin extends AuthenticationPlugin
     public $server;
     public $port = 443;
     public $path = '';
+    public $takeOverLogin = false;
 
     function checkPassword($username, $password)
     {
@@ -56,8 +57,14 @@ class CasAuthenticationPlugin extends AuthenticationPlugin
          case 'CasloginAction':
             require_once(INSTALLDIR.'/plugins/CasAuthentication/' . strtolower(mb_substr($cls, 0, -6)) . '.php');
             return false;
-         default:
-            return parent::onAutoload($cls);
+        }
+    }
+
+    function onArgsInitialize(&$args)
+    {
+        if($this->takeOverLogin && $args['action'] == 'login')
+        {
+            $args['action'] = 'caslogin';
         }
     }
 
index 2ee54dc057150b631a963b342f5c2d8699709faa..c17a28e54a4097a1488e14ba06f181172988b8ab 100644 (file)
@@ -21,6 +21,9 @@ password_changeable*: must be set to false. This plugin does not support changin
 server*: CAS server to authentication against
 port (443): Port the CAS server listens on. Almost always 443
 path (): Path on the server to CAS. Usually blank.
+takeOverLogin (false): Take over the main login action. If takeOverLogin is
+    set, anytime the standard username/password login form would be shown,
+    a CAS login will be done instead.
 
 * required
 default values are in (parenthesis)
@@ -33,6 +36,7 @@ addPlugin('casAuthentication', array(
     'autoregistration'=>true,
     'server'=>'sso-cas.univ-rennes1.fr',
     'port'=>443,
-    'path'=>''
+    'path'=>'',
+    'takeOverLogin'=>true
 ));
 
index 39b2ef28767641e08322256fbca42cc70b9ccc12..de91bf24a12d2f9a8cfedf94b5518823ab56d94c 100644 (file)
@@ -32,6 +32,7 @@ if (!defined('STATUSNET')) {
 }
 
 define("FACEBOOK_CONNECT_SERVICE", 3);
+define('FACEBOOKPLUGIN_VERSION', '0.9');
 
 require_once INSTALLDIR . '/plugins/Facebook/facebookutil.php';
 
@@ -554,4 +555,18 @@ class FacebookPlugin extends Plugin
         return true;
     }
 
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Facebook',
+                            'version' => FACEBOOKPLUGIN_VERSION,
+                            'author' => 'Zach Copley',
+                            'homepage' => 'http://status.net/wiki/Plugin:Facebook',
+                            'rawdescription' =>
+                            _m('The Facebook plugin allows you to integrate ' .
+                               'your StatusNet instance with ' .
+                               '<a href="http://facebook.com/">Facebook</a> ' .
+                               'and Facebook Connect.'));
+        return true;
+    }
+
 }
index 016e8e8e0d4931d888b68d8051107d36045fc143..440706cbc3fdb5543001003e88e2bc9721414192 100644 (file)
@@ -82,7 +82,8 @@ class Facebook {
 
 
     if (isset($this->fb_params['friends'])) {
-      $this->api_client->friends_list = explode(',', $this->fb_params['friends']);
+      $this->api_client->friends_list =
+        array_filter(explode(',', $this->fb_params['friends']));
     }
     if (isset($this->fb_params['added'])) {
       $this->api_client->added = $this->fb_params['added'];
@@ -215,11 +216,15 @@ class Facebook {
   // Invalidate the session currently being used, and clear any state associated
   // with it. Note that the user will still remain logged into Facebook.
   public function expire_session() {
-    if ($this->api_client->auth_expireSession()) {
+    try {
+      if ($this->api_client->auth_expireSession()) {
+        $this->clear_cookie_state();
+        return true;
+      } else {
+        return false;
+      }
+    } catch (Exception $e) {
       $this->clear_cookie_state();
-      return true;
-    } else {
-      return false;
     }
   }
 
@@ -249,10 +254,14 @@ class Facebook {
     if (!$this->in_fb_canvas() && isset($_COOKIE[$this->api_key . '_user'])) {
        $cookies = array('user', 'session_key', 'expires', 'ss');
        foreach ($cookies as $name) {
-         setcookie($this->api_key . '_' . $name, false, time() - 3600);
+         setcookie($this->api_key . '_' . $name,
+                   false,
+                   time() - 3600,
+                   '',
+                   $this->base_domain);
          unset($_COOKIE[$this->api_key . '_' . $name]);
        }
-       setcookie($this->api_key, false, time() - 3600);
+       setcookie($this->api_key, false, time() - 3600, '', $this->base_domain);
        unset($_COOKIE[$this->api_key]);
      }
 
index e79a2ca3433819126fef76d29ea6251dbdaceb76..ed4762215bf53cec4211ea05b30037e2f221e34a 100644 (file)
@@ -60,7 +60,7 @@ class FacebookDesktop extends Facebook {
 
   public function set_session_secret($session_secret) {
     $this->secret = $session_secret;
-    $this->api_client->secret = $session_secret;
+    $this->api_client->use_session_secret($session_secret);
   }
 
   public function require_login() {
diff --git a/plugins/Facebook/facebook/facebook_mobile.php b/plugins/Facebook/facebook/facebook_mobile.php
new file mode 100644 (file)
index 0000000..5ee7f4e
--- /dev/null
@@ -0,0 +1,260 @@
+<?php
+// Copyright 2004-2009 Facebook. All Rights Reserved.
+//
+// +---------------------------------------------------------------------------+
+// | Facebook Platform PHP5 client                                             |
+// +---------------------------------------------------------------------------+
+// | Copyright (c) 2007 Facebook, Inc.                                         |
+// | All rights reserved.                                                      |
+// |                                                                           |
+// | Redistribution and use in source and binary forms, with or without        |
+// | modification, are permitted provided that the following conditions        |
+// | are met:                                                                  |
+// |                                                                           |
+// | 1. Redistributions of source code must retain the above copyright         |
+// |    notice, this list of conditions and the following disclaimer.          |
+// | 2. Redistributions in binary form must reproduce the above copyright      |
+// |    notice, this list of conditions and the following disclaimer in the    |
+// |    documentation and/or other materials provided with the distribution.   |
+// |                                                                           |
+// | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR      |
+// | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
+// | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.   |
+// | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,          |
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT  |
+// | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF  |
+// | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.         |
+// +---------------------------------------------------------------------------+
+// | For help with this library, contact developers-help@facebook.com          |
+// +---------------------------------------------------------------------------+
+//
+/**
+ *  This class extends and modifies the "Facebook" class to better suit wap
+ *  apps. Since there is no javascript support, we need to use server redirect
+ *  to implement Facebook connect functionalities such as authenticate,
+ *  authorize, feed form etc.. This library provide many helper functions for
+ *  wap developer to locate the right wap url. The url here is targed at
+ *  facebook wap site or wap-friendly url.
+ */
+class FacebookMobile extends Facebook {
+  // the application secret, which differs from the session secret
+
+  public function __construct($api_key, $secret, $generate_session_secret=false) {
+    parent::__construct($api_key, $secret, $generate_session_secret);
+  }
+
+  public function redirect($url) {
+    header('Location: '. $url);
+  }
+
+  public function get_m_url($action, $params) {
+    $page = parent::get_facebook_url('m'). '/' .$action;
+    foreach($params as $key => $val) {
+      if (!$val) {
+        unset($params[$key]);
+      }
+    }
+    return $page . '?' . http_build_query($params);
+  }
+
+  public function get_www_url($action, $params) {
+    $page = parent::get_facebook_url('www'). '/' .$action;
+    foreach($params as $key => $val) {
+      if (!$val) {
+        unset($params[$key]);
+      }
+    }
+    return $page . '?' . http_build_query($params);
+  }
+
+  public function get_add_url($next=null) {
+
+    return $this->get_m_url('add.php', array('api_key' => $this->api_key,
+                                             'next'    => $next));
+  }
+
+  public function get_tos_url($next=null, $cancel = null, $canvas=null) {
+    return $this->get_m_url('tos.php', array('api_key' => $this->api_key,
+                                             'v'       => '1.0',
+                                             'next'    => $next,
+                                             'canvas'  => $canvas,
+                                             'cancel'   => $cancel));
+  }
+
+  public function get_logout_url($next=null) {
+    $params = array('api_key'     => $this->api_key,
+                    'session_key' => $this->api_client->session_key,
+                   );
+
+    if ($next) {
+      $params['connect_next'] = 1;
+      $params['next'] = $next;
+    }
+
+    return $this->get_m_url('logout.php', $params);
+  }
+  public function get_register_url($next=null, $cancel_url=null) {
+    return $this->get_m_url('r.php',
+      array('fbconnect' => 1,
+            'api_key' => $this->api_key,
+            'next' => $next ? $next : parent::current_url(),
+            'cancel_url' => $cancel_url ? $cancel_url : parent::current_url()));
+  }
+  /**
+   * These set of fbconnect style url redirect back to the application current
+   * page when the action is done. Developer can also use the non fbconnect
+   * style url and provide their own redirect link by giving the right parameter
+   * to $next and/or $cancel_url
+   */
+  public function get_fbconnect_register_url() {
+    return $this->get_register_url(parent::current_url(), parent::current_url());
+  }
+  public function get_fbconnect_tos_url() {
+    return $this->get_tos_url(parent::current_url(), parent::current_url(), $this->in_frame());
+  }
+
+  public function get_fbconnect_logout_url() {
+    return $this->get_logout_url(parent::current_url());
+  }
+
+  public function logout_user() {
+    $this->user = null;
+  }
+
+  public function get_prompt_permissions_url($ext_perm,
+                                             $next=null,
+                                             $cancel_url=null) {
+
+    return $this->get_www_url('connect/prompt_permissions.php',
+      array('api_key' => $this->api_key,
+            'ext_perm' => $ext_perm,
+            'next' => $next ? $next : parent::current_url(),
+            'cancel' => $cancel_url ? $cancel_url : parent::current_url(),
+            'display' => 'wap'));
+
+  }
+
+  /**
+   * support both prompt_permissions.php and authorize.php for now.
+   * authorized.php is to be deprecate though.
+   */
+  public function get_extended_permission_url($ext_perm,
+                                              $next=null,
+                                              $cancel_url=null) {
+    $next = $next ? $next : parent::current_url();
+    $cancel_url = $cancel_url ? $cancel_url : parent::current_url();
+
+    return $this->get_m_url('authorize.php',
+                      array('api_key' => $this->api_key,
+                            'ext_perm' => $ext_perm,
+                            'next' => $next,
+                            'cancel_url' => $cancel_url));
+
+  }
+
+  public function render_prompt_feed_url($action_links=NULL,
+                                         $target_id=NULL,
+                                         $message='',
+                                         $user_message_prompt='',
+                                         $caption=NULL,
+                                         $callback ='',
+                                         $cancel='',
+                                         $attachment=NULL,
+                                         $preview=true) {
+
+    $params = array('api_key'     => $this->api_key,
+                    'session_key' => $this->api_client->session_key,
+                   );
+    if (!empty($attachment)) {
+      $params['attachment'] = urlencode(json_encode($attachment));
+    } else {
+      $attachment = new stdClass();
+      $app_display_info = $this->api_client->admin_getAppProperties(array('application_name',
+                                                                          'callback_url',
+                                                                          'description',
+                                                                          'logo_url'));
+      $app_display_info = $app_display_info;
+      $attachment->name = $app_display_info['application_name'];
+      $attachment->caption = !empty($caption) ? $caption : 'Just see what\'s new!';
+      $attachment->description = $app_display_info['description'];
+      $attachment->href = $app_display_info['callback_url'];
+      if (!empty($app_display_info['logo_url'])) {
+        $logo = new stdClass();
+        $logo->type = 'image';
+        $logo->src = $app_display_info['logo_url'];
+        $logo->href = $app_display_info['callback_url'];
+        $attachment->media = array($logo);
+      }
+      $params['attachment'] = urlencode(json_encode($attachment));
+    }
+    $params['preview'] = $preview;
+    $params['message'] = $message;
+    $params['user_message_prompt'] = $user_message_prompt;
+    if (!empty($callback)) {
+      $params['callback'] = $callback;
+    } else {
+      $params['callback'] = $this->current_url();
+    }
+    if (!empty($cancel)) {
+      $params['cancel'] = $cancel;
+    } else {
+      $params['cancel'] = $this->current_url();
+    }
+
+    if (!empty($target_id)) {
+      $params['target_id'] = $target_id;
+    }
+    if (!empty($action_links)) {
+      $params['action_links'] = urlencode(json_encode($action_links));
+    }
+
+    $params['display'] = 'wap';
+    header('Location: '. $this->get_www_url('connect/prompt_feed.php', $params));
+  }
+
+//use template_id
+  public function render_feed_form_url($template_id=NULL,
+                                       $template_data=NULL,
+                                       $user_message=NULL,
+                                       $body_general=NULL,
+                                       $user_message_prompt=NULL,
+                                       $target_id=NULL,
+                                       $callback=NULL,
+                                       $cancel=NULL,
+                                       $preview=true) {
+
+    $params = array('api_key' => $this->api_key);
+    $params['preview'] = $preview;
+    if (isset($template_id) && $template_id) {
+      $params['template_id'] = $template_id;
+    }
+    $params['message'] = $user_message ? $user_message['value'] : '';
+    if (isset($body_general) && $body_general) {
+      $params['body_general'] = $body_general;
+    }
+    if (isset($user_message_prompt) && $user_message_prompt) {
+      $params['user_message_prompt'] = $user_message_prompt;
+    }
+    if (isset($callback) && $callback) {
+      $params['callback'] = $callback;
+    } else {
+      $params['callback'] = $this->current_url();
+    }
+    if (isset($cancel) && $cancel) {
+      $params['cancel'] = $cancel;
+    } else {
+      $params['cancel'] = $this->current_url();
+    }
+    if (isset($template_data) && $template_data) {
+      $params['template_data'] = $template_data;
+    }
+    if (isset($target_id) && $target_id) {
+      $params['to_ids'] = $target_id;
+    }
+    $params['display'] = 'wap';
+    header('Location: '. $this->get_www_url('connect/prompt_feed.php', $params));
+  }
+}
index 55cb7fb86a9a7f23b4a2f6a44ae9c5bb733dcddd..fa1088cd00bffedbcd3d7af4593b5d4e998b7c1f 100755 (executable)
@@ -56,6 +56,8 @@ class FacebookRestClient {
   private $call_as_apikey;
   private $use_curl_if_available;
   private $format = null;
+  private $using_session_secret = false;
+  private $rawData = null;
 
   const BATCH_MODE_DEFAULT = 0;
   const BATCH_MODE_SERVER_PARALLEL = 0;
@@ -76,7 +78,10 @@ class FacebookRestClient {
     $this->last_call_id = 0;
     $this->call_as_apikey = '';
     $this->use_curl_if_available = true;
-    $this->server_addr  = Facebook::get_facebook_url('api') . '/restserver.php';
+    $this->server_addr =
+      Facebook::get_facebook_url('api') . '/restserver.php';
+    $this->photo_server_addr =
+      Facebook::get_facebook_url('api-photo') . '/restserver.php';
 
     if (!empty($GLOBALS['facebook_config']['debug'])) {
       $this->cur_id = 0;
@@ -128,6 +133,16 @@ function toggleDisplay(id, type) {
     $this->user = $uid;
   }
 
+
+  /**
+   * Switch to use the session secret instead of the app secret,
+   * for desktop and unsecured environment
+   */
+  public function use_session_secret($session_secret) {
+    $this->secret = $session_secret;
+    $this->using_session_secret = true;
+  }
+
   /**
    * Normally, if the cURL library/PHP extension is available, it is used for
    * HTTP transactions.  This allows that behavior to be overridden, falling
@@ -270,25 +285,35 @@ function toggleDisplay(id, type) {
   /**
    * Returns the session information available after current user logs in.
    *
-   * @param string $auth_token             the token returned by
-   *                                       auth_createToken or passed back to
-   *                                       your callback_url.
-   * @param bool $generate_session_secret  whether the session returned should
-   *                                       include a session secret
+   * @param string $auth_token the token returned by auth_createToken or
+   *               passed back to your callback_url.
+   * @param bool $generate_session_secret whether the session returned should
+   *             include a session secret
+   * @param string $host_url the connect site URL for which the session is
+   *               being generated.  This parameter is optional, unless
+   *               you want Facebook to determine which of several base domains
+   *               to choose from.  If this third argument isn't provided but
+   *               there are several base domains, the first base domain is
+   *               chosen.
    *
    * @return array  An assoc array containing session_key, uid
    */
-  public function auth_getSession($auth_token, $generate_session_secret=false) {
+  public function auth_getSession($auth_token,
+                                  $generate_session_secret = false,
+                                  $host_url = null) {
     if (!$this->pending_batch()) {
-      $result = $this->call_method('facebook.auth.getSession',
-          array('auth_token' => $auth_token,
-                'generate_session_secret' => $generate_session_secret));
+      $result = $this->call_method(
+        'facebook.auth.getSession',
+        array('auth_token' => $auth_token,
+              'generate_session_secret' => $generate_session_secret,
+              'host_url' => $host_url));
       $this->session_key = $result['session_key'];
 
-    if (!empty($result['secret']) && !$generate_session_secret) {
-      // desktop apps have a special secret
-      $this->secret = $result['secret'];
-    }
+      if (!empty($result['secret']) && !$generate_session_secret) {
+        // desktop apps have a special secret
+        $this->secret = $result['secret'];
+      }
+
       return $result;
     }
   }
@@ -519,13 +544,34 @@ function toggleDisplay(id, type) {
       return $this->call_upload_method('facebook.events.create',
         array('event_info' => $event_info),
         $file,
-        Facebook::get_facebook_url('api-photo') . '/restserver.php');
+        $this->photo_server_addr);
     } else {
       return $this->call_method('facebook.events.create',
         array('event_info' => $event_info));
     }
   }
 
+  /**
+   * Invites users to an event. If a session user exists, the session user
+   * must have permissions to invite friends to the event and $uids must contain
+   * a list of friend ids. Otherwise, the event must have been
+   * created by the app and $uids must contain users of the app.
+   * This method requires the 'create_event' extended permission to
+   * invite people on behalf of a user.
+   *
+   * @param $eid   the event id
+   * @param $uids  an array of users to invite
+   * @param $personal_message  a string containing the user's message
+   *                           (text only)
+   *
+   */
+  public function events_invite($eid, $uids, $personal_message) {
+    return $this->call_method('facebook.events.invite',
+                              array('eid' => $eid,
+                                    'uids' => $uids,
+                                    'personal_message', $personal_message));
+  }
+
   /**
    * Edits an existing event. Only works for events where application is admin.
    *
@@ -540,7 +586,7 @@ function toggleDisplay(id, type) {
       return $this->call_upload_method('facebook.events.edit',
         array('eid' => $eid, 'event_info' => $event_info),
         $file,
-        Facebook::get_facebook_url('api-photo') . '/restserver.php');
+        $this->photo_server_addr);
     } else {
       return $this->call_method('facebook.events.edit',
         array('eid' => $eid,
@@ -576,21 +622,7 @@ function toggleDisplay(id, type) {
         array('url' => $url));
   }
 
-  /**
-   * Lets you insert text strings in their native language into the Facebook
-   * Translations database so they can be translated.
-   *
-   * @param array $native_strings  An array of maps, where each map has a 'text'
-   *                               field and a 'description' field.
-   *
-   * @return int  Number of strings uploaded.
-   */
-  public function &fbml_uploadNativeStrings($native_strings) {
-    return $this->call_method('facebook.fbml.uploadNativeStrings',
-        array('native_strings' => json_encode($native_strings)));
-  }
-
-  /**
+ /**
    * Associates a given "handle" with FBML markup so that the handle can be
    * used within the fb:ref FBML tag. A handle is unique within an application
    * and allows an application to publish identical FBML to many user profiles
@@ -668,7 +700,44 @@ function toggleDisplay(id, type) {
                               array('tag_names' => json_encode($tag_names)));
   }
 
+  /**
+   * Gets the best translations for native strings submitted by an application
+   * for translation. If $locale is not specified, only native strings and their
+   * descriptions are returned. If $all is true, then unapproved translations
+   * are returned as well, otherwise only approved translations are returned.
+   *
+   * A mapping of locale codes -> language names is available at
+   * http://wiki.developers.facebook.com/index.php/Facebook_Locales
+   *
+   * @param string $locale the locale to get translations for, or 'all' for all
+   *                       locales, or 'en_US' for native strings
+   * @param bool   $all    whether to return all or only approved translations
+   *
+   * @return array (locale, array(native_strings, array('best translation
+   *                available given enough votes or manual approval', approval
+   *                                                                  status)))
+   * @error API_EC_PARAM
+   * @error API_EC_PARAM_BAD_LOCALE
+   */
+  public function &intl_getTranslations($locale = 'en_US', $all = false) {
+    return $this->call_method('facebook.intl.getTranslations',
+                              array('locale' => $locale,
+                                    'all'    => $all));
+  }
 
+  /**
+   * Lets you insert text strings in their native language into the Facebook
+   * Translations database so they can be translated.
+   *
+   * @param array $native_strings  An array of maps, where each map has a 'text'
+   *                               field and a 'description' field.
+   *
+   * @return int  Number of strings uploaded.
+   */
+  public function &intl_uploadNativeStrings($native_strings) {
+    return $this->call_method('facebook.intl.uploadNativeStrings',
+        array('native_strings' => json_encode($native_strings)));
+  }
 
   /**
    * This method is deprecated for calls made on behalf of users. This method
@@ -1248,6 +1317,87 @@ function toggleDisplay(id, type) {
               'test_mode' => $test_mode)), true);
   }
 
+  /**
+   * Gifts API
+   */
+
+  /**
+   * Get Gifts associated with an app
+   *
+   * @return             array of gifts
+   */
+  public function gifts_get() {
+    return json_decode(
+        $this->call_method('facebook.gifts.get',
+                           array()),
+        true
+        );
+  }
+
+  /*
+   * Update gifts stored by an app
+   *
+   * @param array containing gift_id => gift_data to be updated
+   * @return array containing gift_id => true/false indicating success
+   *                                     in updating that gift
+   */
+  public function gifts_update($update_array) {
+    return json_decode(
+      $this->call_method('facebook.gifts.update',
+                         array('update_str' => json_encode($update_array))
+                        ),
+      true
+    );
+  }
+
+  /**
+   * Dashboard API
+   */
+
+  /**
+   * Set the news for the specified user.
+   *
+   * @param int    $uid     The user for whom you are setting news for
+   * @param string $news    Text of news to display
+   *
+   * @return bool   Success
+   */
+  public function dashboard_setNews($uid, $news) {
+    return $this->call_method('facebook.dashboard.setNews',
+                              array('uid'  => $uid,
+                                    'news' => $news)
+                             );
+  }
+
+  /**
+   * Get the current news of the specified user.
+   *
+   * @param int    $uid     The user to get the news of
+   *
+   * @return string   The text of the current news for the user
+   */
+  public function dashboard_getNews($uid) {
+    return json_decode(
+      $this->call_method('facebook.dashboard.getNews',
+                         array('uid' => $uid)
+                        ), true);
+  }
+
+  /**
+   * Set the news for the specified user.
+   *
+   * @param int    $uid     The user you are clearing the news of
+   *
+   * @return bool   Success
+   */
+  public function dashboard_clearNews($uid) {
+    return $this->call_method('facebook.dashboard.clearNews',
+                              array('uid' => $uid)
+                             );
+  }
+
+
+
   /**
    * Creates a note with the specified title and content.
    *
@@ -1795,14 +1945,20 @@ function toggleDisplay(id, type) {
                               $start_time = 0,
                               $end_time = 0,
                               $limit = 30,
-                              $filter_key = '') {
+                              $filter_key = '',
+                              $exportable_only = false,
+                              $metadata = null,
+                              $post_ids = null) {
     $args = array(
       'viewer_id'  => $viewer_id,
       'source_ids' => $source_ids,
       'start_time' => $start_time,
       'end_time'   => $end_time,
       'limit'      => $limit,
-      'filter_key' => $filter_key);
+      'filter_key' => $filter_key,
+      'exportable_only' => $exportable_only,
+      'metadata' => $metadata,
+      'post_ids' => $post_ids);
     return $this->call_method('facebook.stream.get', $args);
   }
 
@@ -1949,97 +2105,6 @@ function toggleDisplay(id, type) {
               'options' => json_encode($options)));
   }
 
-  /**
-   * Get all the marketplace categories.
-   *
-   * @return array  A list of category names
-   */
-  function marketplace_getCategories() {
-    return $this->call_method('facebook.marketplace.getCategories',
-        array());
-  }
-
-  /**
-   * Get all the marketplace subcategories for a particular category.
-   *
-   * @param  category  The category for which we are pulling subcategories
-   *
-   * @return array A list of subcategory names
-   */
-  function marketplace_getSubCategories($category) {
-    return $this->call_method('facebook.marketplace.getSubCategories',
-        array('category' => $category));
-  }
-
-  /**
-   * Get listings by either listing_id or user.
-   *
-   * @param listing_ids   An array of listing_ids (optional)
-   * @param uids          An array of user ids (optional)
-   *
-   * @return array  The data for matched listings
-   */
-  function marketplace_getListings($listing_ids, $uids) {
-    return $this->call_method('facebook.marketplace.getListings',
-        array('listing_ids' => $listing_ids, 'uids' => $uids));
-  }
-
-  /**
-   * Search for Marketplace listings.  All arguments are optional, though at
-   * least one must be filled out to retrieve results.
-   *
-   * @param category     The category in which to search (optional)
-   * @param subcategory  The subcategory in which to search (optional)
-   * @param query        A query string (optional)
-   *
-   * @return array  The data for matched listings
-   */
-  function marketplace_search($category, $subcategory, $query) {
-    return $this->call_method('facebook.marketplace.search',
-        array('category' => $category,
-              'subcategory' => $subcategory,
-              'query' => $query));
-  }
-
-  /**
-   * Remove a listing from Marketplace.
-   *
-   * @param listing_id  The id of the listing to be removed
-   * @param status      'SUCCESS', 'NOT_SUCCESS', or 'DEFAULT'
-   *
-   * @return bool  True on success
-   */
-  function marketplace_removeListing($listing_id,
-                                     $status='DEFAULT',
-                                     $uid=null) {
-    return $this->call_method('facebook.marketplace.removeListing',
-        array('listing_id' => $listing_id,
-              'status' => $status,
-              'uid' => $uid));
-  }
-
-  /**
-   * Create/modify a Marketplace listing for the loggedinuser.
-   *
-   * @param int              listing_id  The id of a listing to be modified, 0
-   *                                     for a new listing.
-   * @param show_on_profile  bool        Should we show this listing on the
-   *                                     user's profile
-   * @param listing_attrs    array       An array of the listing data
-   *
-   * @return int  The listing_id (unchanged if modifying an existing listing).
-   */
-  function marketplace_createListing($listing_id,
-                                     $show_on_profile,
-                                     $attrs,
-                                     $uid=null) {
-    return $this->call_method('facebook.marketplace.createListing',
-        array('listing_id' => $listing_id,
-              'show_on_profile' => $show_on_profile,
-              'listing_attrs' => json_encode($attrs),
-              'uid' => $uid));
-  }
-
   /////////////////////////////////////////////////////////////////////////////
   // Data Store API
 
@@ -2875,6 +2940,35 @@ function toggleDisplay(id, type) {
        array('properties' => json_encode($properties)));
   }
 
+  /**
+   * Sets href and text for a Live Stream Box xid's via link
+   *
+   * @param  string  $xid       xid of the Live Stream
+   * @param  string  $via_href  Href for the via link
+   * @param  string  $via_text  Text for the via link
+   *
+   * @return boolWhether the set was successful
+   */
+  public function admin_setLiveStreamViaLink($xid, $via_href, $via_text) {
+    return $this->call_method('facebook.admin.setLiveStreamViaLink',
+                              array('xid'      => $xid,
+                                    'via_href' => $via_href,
+                                    'via_text' => $via_text));
+  }
+
+  /**
+   * Gets href and text for a Live Stream Box xid's via link
+   *
+   * @param  string  $xid  xid of the Live Stream
+   *
+   * @return Array  Associative array with keys 'via_href' and 'via_text'
+   *                False if there was an error.
+   */
+  public function admin_getLiveStreamViaLink($xid) {
+    return $this->call_method('facebook.admin.getLiveStreamViaLink',
+                              array('xid' => $xid));
+  }
+
   /**
    * Returns the allocation limit value for a specified integration point name
    * Integration point names are defined in lib/api/karma/constants.php in the
@@ -3012,6 +3106,7 @@ function toggleDisplay(id, type) {
         $params['call_as_apikey'] = $this->call_as_apikey;
       }
       $data = $this->post_request($method, $params);
+      $this->rawData = $data;
       $result = $this->convert_result($data, $method, $params);
       if (is_array($result) && isset($result['error_code'])) {
         throw new FacebookRestClientException($result['error_msg'],
@@ -3053,6 +3148,16 @@ function toggleDisplay(id, type) {
     return $this->format;
   }
 
+  /**
+   * Returns the raw JSON or XML output returned by the server in the most
+   * recent API call.
+   *
+   * @return string
+   */
+   public function getRawData() {
+     return $this->rawData;
+   }
+
   /**
    * Calls the specified file-upload POST method with the specified parameters
    *
@@ -3144,6 +3249,10 @@ function toggleDisplay(id, type) {
     if ($this->call_as_apikey) {
       $get['call_as_apikey'] = $this->call_as_apikey;
     }
+    if ($this->using_session_secret) {
+      $get['ss'] = '1';
+    }
+
     $get['method'] = $method;
     $get['session_key'] = $this->session_key;
     $get['api_key'] = $this->api_key;
@@ -3241,7 +3350,7 @@ function toggleDisplay(id, type) {
       return $result;
   }
 
-  private function post_upload_request($method, $params, $file, $server_addr = null) {
+  protected function post_upload_request($method, $params, $file, $server_addr = null) {
     $server_addr = $server_addr ? $server_addr : $this->server_addr;
     list($get, $post) = $this->finalize_params($method, $params);
     $get_string = $this->create_url_string($get);
@@ -3345,6 +3454,8 @@ class FacebookAPIErrorCodes {
   const API_EC_VERSION = 12;
   const API_EC_INTERNAL_FQL_ERROR = 13;
   const API_EC_HOST_PUP = 14;
+  const API_EC_SESSION_SECRET_NOT_ALLOWED = 15;
+  const API_EC_HOST_READONLY = 16;
 
   /*
    * PARAMETER ERRORS
@@ -3372,6 +3483,8 @@ class FacebookAPIErrorCodes {
   const API_EC_PARAM_BAD_EID = 150;
   const API_EC_PARAM_UNKNOWN_CITY = 151;
   const API_EC_PARAM_BAD_PAGE_TYPE = 152;
+  const API_EC_PARAM_BAD_LOCALE = 170;
+  const API_EC_PARAM_BLOCKED_NOTIFICATION = 180;
 
   /*
    * USER PERMISSIONS ERRORS
@@ -3394,6 +3507,7 @@ class FacebookAPIErrorCodes {
   const API_EC_PERMISSION_EVENT = 290;
   const API_EC_PERMISSION_LARGE_FBML_TEMPLATE = 291;
   const API_EC_PERMISSION_LIVEMESSAGE = 292;
+  const API_EC_PERMISSION_CREATE_EVENT = 296;
   const API_EC_PERMISSION_RSVP_EVENT = 299;
 
   /*
@@ -3469,6 +3583,8 @@ class FacebookAPIErrorCodes {
   const FQL_EC_EXTENDED_PERMISSION = 612;
   const FQL_EC_RATE_LIMIT_EXCEEDED = 613;
   const FQL_EC_UNRESOLVED_DEPENDENCY = 614;
+  const FQL_EC_INVALID_SEARCH = 615;
+  const FQL_EC_CONTAINS_ERROR = 616;
 
   const API_EC_REF_SET_FAILED = 700;
 
@@ -3506,6 +3622,7 @@ class FacebookAPIErrorCodes {
    * EVENT API ERRORS
    */
   const API_EC_EVENT_INVALID_TIME = 1000;
+  const API_EC_EVENT_NAME_LOCKED  = 1001;
 
   /*
    * INFO BOX ERRORS
@@ -3566,6 +3683,21 @@ class FacebookAPIErrorCodes {
   const API_EC_COMMENTS_INVALID_POST = 1705;
   const API_EC_COMMENTS_INVALID_REMOVE = 1706;
 
+  /*
+   * GIFTS
+   */
+  const API_EC_GIFTS_UNKNOWN = 1900;
+
+  /*
+   * APPLICATION MORATORIUM ERRORS
+   */
+  const API_EC_DISABLED_ALL = 2000;
+  const API_EC_DISABLED_STATUS = 2001;
+  const API_EC_DISABLED_FEED_STORIES = 2002;
+  const API_EC_DISABLED_NOTIFICATIONS = 2003;
+  const API_EC_DISABLED_REQUESTS = 2004;
+  const API_EC_DISABLED_EMAIL = 2005;
+
   /**
    * This array is no longer maintained; to view the description of an error
    * code, please look at the message element of the API response or visit
index 24bf215fd9cf0e65f16d92f359d957cba8ec6bb0..bf9c037a579b791e240d99767005bcbe61d9aee1 100644 (file)
@@ -32,7 +32,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
 }
 
 require_once INSTALLDIR . '/plugins/Facebook/facebookutil.php';
-require_once INSTALLDIR . '/lib/noticeform.php';
+require_once INSTALLDIR . '/plugins/Facebook/facebooknoticeform.php';
 
 class FacebookAction extends Action
 {
@@ -294,63 +294,7 @@ class FacebookAction extends Action
         $app_props = $this->facebook->api_client->Admin_getAppProperties(array('icon_url'));
         $icon_url = $app_props['icon_url'];
 
-        $style = '<style>
-     .entry-title *,
-     .entry-content * {
-     font-size:14px;
-     font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
-     }
-     .entry-title a,
-     .entry-content a {
-     color:#002E6E;
-     }
-
-         .entry-title .vcard .photo {
-         float:left;
-         display:inline;
-     margin-right:11px;
-     margin-bottom:11px
-         }
-     .entry-title {
-     margin-bottom:11px;
-     }
-         .entry-title p.entry-content {
-         display:inline;
-     margin-left:5px;
-         }
-
-     div.entry-content {
-     clear:both;
-     }
-         div.entry-content dl,
-         div.entry-content dt,
-         div.entry-content dd {
-         display:inline;
-     text-transform:lowercase;
-         }
-
-         div.entry-content dd,
-     div.entry-content .device dt {
-     margin-left:0;
-     margin-right:5px;
-         }
-         div.entry-content dl.timestamp dt,
-     div.entry-content dl.response dt {
-         display:none;
-         }
-         div.entry-content dd a {
-         display:inline-block;
-         }
-
-     #facebook_statusnet_app {
-     text-indent:-9999px;
-     height:16px;
-     width:16px;
-     display:block;
-     background:url('.$icon_url.') no-repeat 0 0;
-     float:right;
-     }
-         </style>';
+        $style = '<style> .entry-title *, .entry-content * { font-size:14px; font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif; } .entry-title a, .entry-content a { color:#002E6E; } .entry-title .vcard .photo { float:left; display:inline; margin-right:11px; margin-bottom:11px } .entry-title { margin-bottom:11px; } .entry-title p.entry-content { display:inline; margin-left:5px; } div.entry-content { clear:both; } div.entry-content dl, div.entry-content dt, div.entry-content dd { display:inline; text-transform:lowercase; } div.entry-content dd, div.entry-content .device dt { margin-left:0; margin-right:5px; } div.entry-content dl.timestamp dt, div.entry-content dl.response dt { display:none; } div.entry-content dd a { display:inline-block; } #facebook_statusnet_app { text-indent:-9999px; height:16px; width:16px; display:block; background:url('.$icon_url.') no-repeat 0 0; float:right; } </style>';
 
         $this->xw->openMemory();
 
@@ -455,42 +399,6 @@ class FacebookAction extends Action
 
         common_broadcast_notice($notice);
 
-        // Also update the user's Facebook status
-        facebookBroadcastNotice($notice);
-
-    }
-
-}
-
-class FacebookNoticeForm extends NoticeForm
-{
-
-    var $post_action = null;
-
-    /**
-     * Constructor
-     *
-     * @param HTMLOutputter $out     output channel
-     * @param string        $action  action to return to, if any
-     * @param string        $content content to pre-fill
-     */
-
-    function __construct($out=null, $action=null, $content=null,
-        $post_action=null, $user=null)
-    {
-        parent::__construct($out, $action, $content, $user);
-        $this->post_action = $post_action;
-    }
-
-    /**
-     * Action of the form
-     *
-     * @return string URL of the action
-     */
-
-    function action()
-    {
-        return $this->post_action;
     }
 
 }
diff --git a/plugins/Facebook/facebooknoticeform.php b/plugins/Facebook/facebooknoticeform.php
new file mode 100644 (file)
index 0000000..5989147
--- /dev/null
@@ -0,0 +1,206 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for posting a notice from within the Facebook App. 
+ *
+ * This is a stripped down version of the normal NoticeForm (sans
+ * location stuff and media upload stuff). I'm not sure we can share the
+ * location (from FB) and they don't allow posting multipart form data
+ * to Facebook canvas pages, so that won't work anyway. --Zach
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Form
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR . '/lib/form.php';
+
+/**
+ * Form for posting a notice from within the Facebook app
+ *
+ * @category Form
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@status.net>
+ * @author   Zach Copey <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/
+ *
+ * @see      HTMLOutputter
+ */
+
+class FacebookNoticeForm extends Form
+{
+    /**
+     * Current action, used for returning to this page.
+     */
+
+    var $action = null;
+
+    /**
+     * Pre-filled content of the form
+     */
+
+    var $content = null;
+
+    /**
+     * The current user
+     */
+
+    var $user = null;
+
+    /**
+     * The notice being replied to
+     */
+
+    var $inreplyto = null;
+
+    /**
+     * Constructor
+     *
+     * @param HTMLOutputter $out     output channel
+     * @param string        $action  action to return to, if any
+     * @param string        $content content to pre-fill
+     */
+
+    function __construct($out=null, $action=null, $content=null, $post_action=null, $user=null, $inreplyto=null)
+    {
+        parent::__construct($out);
+
+        $this->action  = $action;
+        $this->post_action = $post_action;
+        $this->content = $content;
+        $this->inreplyto = $inreplyto;
+
+        if ($user) {
+            $this->user = $user;
+        } else {
+            $this->user = common_current_user();
+        }
+        
+        // Note: Facebook doesn't allow multipart/form-data posting to
+        // canvas pages, so don't try to set it--no file uploads, at
+        // least not this way.  It can be done using multiple servers
+        // and iFrames, but it's a pretty hacky process.
+    }
+
+    /**
+     * ID of the form
+     *
+     * @return string ID of the form
+     */
+
+    function id()
+    {
+        return 'form_notice';
+    }
+
+   /**
+     * Class of the form
+     *
+     * @return string class of the form
+     */
+
+    function formClass()
+    {
+        return 'form_notice';
+    }
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return $this->post_action;
+    }
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _('Send a notice'));
+    }
+
+    /**
+     * Data elements
+     *
+     * @return void
+     */
+
+    function formData()
+    {
+        if (Event::handle('StartShowNoticeFormData', array($this))) {
+            $this->out->element('label', array('for' => 'notice_data-text'),
+                                sprintf(_('What\'s up, %s?'), $this->user->nickname));
+            // XXX: vary by defined max size
+            $this->out->element('textarea', array('id' => 'notice_data-text',
+                                                  'cols' => 35,
+                                                  'rows' => 4,
+                                                  'name' => 'status_textarea'),
+                                ($this->content) ? $this->content : '');
+
+            $contentLimit = Notice::maxContent();
+
+            if ($contentLimit > 0) {
+                $this->out->elementStart('dl', 'form_note');
+                $this->out->element('dt', null, _('Available characters'));
+                $this->out->element('dd', array('id' => 'notice_text-count'),
+                                    $contentLimit);
+                $this->out->elementEnd('dl');
+            }
+
+            if ($this->action) {
+                $this->out->hidden('notice_return-to', $this->action, 'returnto');
+            }
+            $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto');
+
+            Event::handle('StartShowNoticeFormData', array($this));
+        }
+    }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->element('input', array('id' => 'notice_action-submit',
+                                           'class' => 'submit',
+                                           'name' => 'status_submit',
+                                           'type' => 'submit',
+                                           'value' => _('Send')));
+    }
+}
index 2ec6db6b8d2e80780b972fb6a21dedeece8f6ffd..ac532e18bf2682e086ab56b1134200e0cfbb8cd6 100644 (file)
@@ -138,21 +138,23 @@ function facebookBroadcastNotice($notice)
 
             $code = $e->getCode();
 
-            common_log(LOG_WARNING, 'Facebook returned error code ' .
-                       $code . ': ' . $e->getMessage());
-            common_log(LOG_WARNING,
-                       'Unable to update Facebook status for ' .
-                       "$user->nickname (user id: $user->id)!");
+            $msg = "Facebook returned error code $code: " .
+              $e->getMessage() . ' - ' .
+              "Unable to update Facebook status (notice $notice->id) " .
+              "for $user->nickname (user id: $user->id)!";
 
-            if ($code == 200 || $code == 250) {
+            common_log(LOG_WARNING, $msg);
 
+            if ($code == 100 || $code == 200 || $code == 250) {
+
+                // 100 The account is 'inactive' (probably - this is not well documented)
                 // 200 The application does not have permission to operate on the passed in uid parameter.
                 // 250 Updating status requires the extended permission status_update or publish_stream.
                 // see: http://wiki.developers.facebook.com/index.php/Users.setStatus#Example_Return_XML
 
                 remove_facebook_app($flink);
 
-            } else {
+        } else {
 
                 // Try sending again later.
 
index 857a9794d500526f773eee57bd7f3df9b2279f7e..e49e2a648a044d93d48b9a7eca1523a2f6032e38 100644 (file)
@@ -105,12 +105,11 @@ class FeedSubPlugin extends Plugin
         return true;
     }
 
-    /*
-    // auto increment seems to be broken
     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->ensureDataObject('Feedinfo');
+        $schema->ensureTable('feedinfo', Feedinfo::schemaDef());
         return true;
     }
-    */
 }
index fff66afe97a1d3a51a64f86a4c792d36172513c8..b166bd6e12e4b68796a484901d15d0eff69e67b7 100644 (file)
@@ -31,7 +31,7 @@ class FeedDBException extends FeedSubException
     }
 }
 
-class Feedinfo extends Plugin_DataObject
+class Feedinfo extends Memcached_DataObject
 {
     public $__table = 'feedinfo';
 
@@ -56,34 +56,90 @@ class Feedinfo extends Plugin_DataObject
         return parent::staticGet(__CLASS__, $k, $v);
     }
 
-    function tableDef()
+    /**
+     * 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()
     {
-        class_exists('Schema'); // autoload hack
-        // warning: the autoincrement doesn't seem to set.
-        // alter table feedinfo change column id id int(11) not null  auto_increment;
-        return new TableDef($this->__table,
-                            array(new ColumnDef('id', 'integer',
-                                                null, false, 'PRI', '0', null, 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 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);
index 30ff2c27881c7549e3e49402c7a978134a59ff51..01178f39c0f4c246089246ec792bf5476752daef 100644 (file)
@@ -116,4 +116,16 @@ class GeoURLPlugin extends Plugin
 
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'GeoURL',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:GeoURL',
+                            'rawdescription' =>
+                            _m('Ping <a href="http://geourl.org/">GeoURL</a> when '.
+                               'new geolocation-enhanced notices are posted.'));
+        return true;
+    }
 }
index 805166eaae0660c3c864eeea27026a6fe842feda..52cc9c97f94b48a52c7dcdaae09a3e0eb97b371c 100644 (file)
@@ -426,4 +426,16 @@ class GeonamesPlugin extends Plugin
 
         return $document->geoname;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Geonames',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Geonames',
+                            'rawdescription' =>
+                            _m('Uses <a href="http://geonames.org/">Geonames</a> service to get human-readable '.
+                               'names for locations based on user-provided lat/long pairs.'));
+        return true;
+    }
 }
index 6891ee6a7bf6ad9b8722d03a95eda7ca57515fcc..c646bf113b27223a015739fdfa061f8d25fc2ce1 100644 (file)
@@ -70,4 +70,16 @@ class GoogleAnalyticsPlugin extends Plugin
         $action->inlineScript($js1);
         $action->inlineScript($js2);
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'GoogleAnalytics',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:GoogleAnalytics',
+                            'rawdescription' =>
+                            _m('Use <a href="http://www.google.com/analytics/">Google Analytics</a>'.
+                               ' to track Web access.'));
+        return true;
+    }
 }
diff --git a/plugins/Imap/ImapPlugin.php b/plugins/Imap/ImapPlugin.php
new file mode 100644 (file)
index 0000000..0344442
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to add a StatusNet Facebook application
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   StatusNet
+ * @author    Zach Copley <zach@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);
+}
+
+/**
+ * IMAP plugin to allow StatusNet to grab incoming emails and handle them as new user posts
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Craig Andrews <candrews@integralblue.com
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class ImapPlugin extends Plugin
+{
+    public $mailbox;
+    public $user;
+    public $password;
+    public $poll_frequency = 60;
+    public static $instances = array();
+    public static $daemon_added = array();
+
+    function initialize(){
+        if(!isset($this->mailbox)){
+            throw new Exception("must specify a mailbox");
+        }
+        if(!isset($this->user)){
+            throw new Exception("must specify a user");
+        }
+        if(!isset($this->password)){
+            throw new Exception("must specify a password");
+        }
+        if(!isset($this->poll_frequency)){
+            throw new Exception("must specify a poll_frequency");
+        }
+
+        self::$instances[] = $this;
+        return true;
+    }
+
+    function cleanup(){
+        $index = array_search($this, self::$instances);
+        unset(self::$instances[$index]);
+        return true;
+    }
+
+    function onGetValidDaemons($daemons)
+    {
+        if(! self::$daemon_added){
+            array_push($daemons, INSTALLDIR .
+                       '/plugins/Imap/imapdaemon.php');
+            self::$daemon_added = true;
+        }
+        return true;
+    }
+}
diff --git a/plugins/Imap/README b/plugins/Imap/README
new file mode 100644 (file)
index 0000000..640a411
--- /dev/null
@@ -0,0 +1,32 @@
+The IMAP plugin allows for StatusNet to check a POP or IMAP mailbox for
+incoming mail containing user posts.
+
+Installation
+============
+addPlugin('imap', array(
+    'mailbox' => '...',
+    'user' => '...',
+    'password' => '...'
+));
+to the bottom of your config.php
+
+Also, make sure:
+$config['mail']['domain'] = 'yourdomain.example.net';
+is set in your config.php
+
+Create a catch-all account for your domain, and use this account with this
+plugin. Whenever a user sends a message to their personal notice posting
+address, the message should end up in this mailbox, and then the plugin daemon
+will pick it up and post the notice on the user's behalf.
+
+The daemon included with this plugin must be running. It will be started by
+the plugin along with their other daemons when you run scripts/startdaemons.sh.
+See the StatusNet README for more about queuing and daemons.
+
+Settings
+========
+mailbox*: the mailbox specifier.
+    See http://www.php.net/manual/en/function.imap-open.php for details
+user*: username to use when authenticating to the mailbox
+password*: password to use when authenticating to the mailbox
+poll_frequency: how often (in seconds) to check for new messages
diff --git a/plugins/Imap/imapdaemon.php b/plugins/Imap/imapdaemon.php
new file mode 100755 (executable)
index 0000000..a45c603
--- /dev/null
@@ -0,0 +1,147 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../..'));
+
+$shortoptions = 'fi::';
+$longoptions = array('id::', 'foreground');
+
+$helptext = <<<END_OF_IMAP_HELP
+Daemon script for receiving new notices from users via a mail box (IMAP, POP3, etc)
+
+    -i --id           Identity (default none)
+    -f --foreground   Stay in the foreground (default background)
+
+END_OF_IMAP_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+require_once INSTALLDIR . '/lib/common.php';
+require_once INSTALLDIR . '/lib/daemon.php';
+require_once INSTALLDIR.'/lib/mailhandler.php';
+
+class IMAPDaemon extends Daemon
+{   
+    function __construct($resource=null, $daemonize=true, $attrs)
+    {
+        parent::__construct($daemonize);
+
+        foreach ($attrs as $attr=>$value)
+        {
+            $this->$attr = $value;
+        }
+
+        $this->log(LOG_INFO, "INITIALIZE IMAPDaemon {" . $this->name() . "}");
+    }
+
+    function name()
+    {
+        return strtolower('imapdaemon.'.$this->user.'.'.crc32($this->mailbox));
+    }
+
+    function run()
+    {
+        $this->connect();
+        while(true)
+        {
+            if(imap_ping($this->conn) || $this->connect())
+            {
+                $this->check_mailbox();
+            }
+            sleep($this->poll_frequency);
+        }
+    }
+
+    function check_mailbox()
+    {
+        $count = imap_num_msg($this->conn);
+        $this->log(LOG_INFO, "Found $count messages");
+        if($count > 0){
+            $handler = new IMAPMailHandler();
+            for($i=1; $i <= $count; $i++)
+            {
+                $rawmessage = imap_fetchheader($this->conn, $count, FT_PREFETCHTEXT) . imap_body($this->conn, $i);
+                $handler->handle_message($rawmessage);
+                imap_delete($this->conn, $i);
+            }
+            imap_expunge($this->conn);
+            $this->log(LOG_INFO, "Finished processing messages");
+        }
+    }
+
+    function log($level, $msg)
+    {
+        $text = $this->name() . ': '.$msg;
+        common_log($level, $text);
+        if (!$this->daemonize)
+        {
+            $line = common_log_line($level, $text);
+            echo $line;
+            echo "\n";
+        }
+    }
+
+    function connect()
+    {
+        $this->conn = imap_open($this->mailbox, $this->user, $this->password);
+        if($this->conn){
+            $this->log(LOG_INFO, "Connected");
+            return true;
+        }else{
+            $this->log(LOG_INFO, "Failed to connect: " . imap_last_error());
+            return false;
+        }
+    }
+}
+
+class IMAPMailHandler extends MailHandler
+{
+    function error($from, $msg)
+    {
+        $this->log(LOG_INFO, "Error: $from $msg");
+        $headers['To'] = $from;
+        $headers['Subject'] = "Error";
+
+        return mail_send(array($from), $headers, $msg);
+    }
+}
+
+if (have_option('i', 'id')) {
+    $id = get_option_value('i', 'id');
+} else if (count($args) > 0) {
+    $id = $args[0];
+} else {
+    $id = null;
+}
+
+$foreground = have_option('f', 'foreground');
+
+foreach(ImapPlugin::$instances as $pluginInstance){
+
+    $daemon = new IMAPDaemon($id, !$foreground, array(
+        'mailbox' => $pluginInstance->mailbox,
+        'user' => $pluginInstance->user,
+        'password' => $pluginInstance->password,
+        'poll_frequency' => $pluginInstance->poll_frequency
+    ));
+
+    $daemon->runOnce();
+
+}
index 39967fe425ed70532c8f6447913980b24dfcf74e..c14fa21a9c66c74c35bb3d275662e3ab91673b29 100644 (file)
@@ -31,7 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/plugins/Authentication/AuthenticationPlugin.php';
 require_once 'Net/LDAP2.php';
 
 class LdapAuthenticationPlugin extends AuthenticationPlugin
@@ -75,8 +74,6 @@ class LdapAuthenticationPlugin extends AuthenticationPlugin
          case 'MemcacheSchemaCache':
             require_once(INSTALLDIR.'/plugins/LdapAuthentication/MemcacheSchemaCache.php');
             return false;
-         default:
-            return parent::onAutoload($cls);
         }
     }
     
index 5e759c3793045939857044d8ed5c5bff29a08855..e5e22c0ddeab1dbce49cae5443166fc87bfdcac9 100644 (file)
@@ -31,7 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/plugins/Authorization/AuthorizationPlugin.php';
 require_once 'Net/LDAP2.php';
 
 class LdapAuthorizationPlugin extends AuthorizationPlugin
@@ -53,7 +52,6 @@ class LdapAuthorizationPlugin extends AuthorizationPlugin
     public $attributes = array();
 
     function onInitializePlugin(){
-        parent::onInitializePlugin();
         if(!isset($this->host)){
             throw new Exception("must specify a host");
         }
index 4a6f1cdc79cdeca5746dbff4344f79c82e6b9a27..c3e37c0c0f358a76bde8bf9633992f947fe7c034 100644 (file)
@@ -46,9 +46,9 @@ class LilUrlPlugin extends UrlShortenerPlugin
 
     protected function shorten($url) {
         $data = array('longurl' => $url);
-        
+
         $responseBody = $this->http_post($this->serviceUrl,$data);
-        
+
         if (!$responseBody) return;
         $y = @simplexml_load_string($responseBody);
         if (!isset($y->body)) return;
@@ -57,5 +57,18 @@ class LilUrlPlugin extends UrlShortenerPlugin
             return strval($x['href']);
         }
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => sprintf('LilUrl (%s)', $this->shortenerName),
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:LilUrl',
+                            'rawdescription' =>
+                            sprintf(_m('Uses <a href="http://%1$s/">%1$s</a> URL-shortener service.'),
+                                    $this->shortenerName));
+
+        return true;
+    }
 }
 
index f220fff8f652b9edfbce3adc19d0b65dfb0256ea..15e57ab0e8e471b8e306ddcd7783f502589218f8 100644 (file)
@@ -231,4 +231,18 @@ class LinkbackPlugin extends Plugin
         return 'LinkbackPlugin/'.LINKBACKPLUGIN_VERSION .
           ' StatusNet/' . STATUSNET_VERSION;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Linkback',
+                            'version' => LINKBACKPLUGIN_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Linkback',
+                            'rawdescription' =>
+                            _m('Notify blog authors when their posts have been linked in '.
+                               'microblog notices using '.
+                               '<a href="http://www.hixie.ch/specs/pingback/pingback">Pingback</a> '.
+                               'or <a href="http://www.movabletype.org/docs/mttrackback.html">Trackback</a> protocols.'));
+        return true;
+    }
 }
index 93679e56c24496a7abae456048ddd066f62d3284..868933fd432461a887c0697c1d1681a1ab6d4a6e 100644 (file)
@@ -47,6 +47,8 @@ if (!defined('STATUSNET')) {
 
 class MapstractionPlugin extends Plugin
 {
+    const VERSION = STATUSNET_VERSION;
+
     /** provider name, one of:
      'cloudmade', 'google', 'microsoft', 'openlayers', 'yahoo' */
     public $provider = 'openlayers';
@@ -192,4 +194,17 @@ class MapstractionPlugin extends Plugin
 
         $action->elementEnd('div');
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Mapstraction',
+                            'version' => self::VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Mapstraction',
+                            'rawdescription' =>
+                            _m('Show maps of users\' and friends\' notices '.
+                               'with <a href="http://www.mapstraction.com/">Mapstraction</a> '.
+                               'JavaScript library.'));
+        return true;
+    }
 }
diff --git a/plugins/MemcachePlugin.php b/plugins/MemcachePlugin.php
new file mode 100644 (file)
index 0000000..5f93e9a
--- /dev/null
@@ -0,0 +1,191 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for memcache
+ *
+ * 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  Cache
+ * @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')) {
+    // This check helps protect against security problems;
+    // your code file can't be executed directly from the web.
+    exit(1);
+}
+
+/**
+ * A plugin to use memcache for the cache interface
+ *
+ * This used to be encoded as config-variable options in the core code;
+ * it's now broken out to a separate plugin. The same interface can be
+ * implemented by other plugins.
+ *
+ * @category  Cache
+ * @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/
+ */
+
+class MemcachePlugin extends Plugin
+{
+    private $_conn  = null;
+    public $servers = array('127.0.0.1;11211');
+
+    public $compressThreshold = 20480;
+    public $compressMinSaving = 0.2;
+
+    public $persistent = null;
+
+    /**
+     * Initialize the plugin
+     *
+     * Note that onStartCacheGet() may have been called before this!
+     *
+     * @return boolean flag value
+     */
+
+    function onInitializePlugin()
+    {
+        if (is_null($this->persistent)) {
+            $this->persistent = (php_sapi_name() == 'cli') ? false : true;
+        }
+        $this->_ensureConn();
+        return true;
+    }
+
+    /**
+     * Get a value associated with a key
+     *
+     * The value should have been set previously.
+     *
+     * @param string &$key   in; Lookup key
+     * @param mixed  &$value out; value associated with key
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheGet(&$key, &$value)
+    {
+        $this->_ensureConn();
+        $value = $this->_conn->get($key);
+        Event::handle('EndCacheGet', array($key, &$value));
+        return false;
+    }
+
+    /**
+     * Associate a value with a key
+     *
+     * @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 &$expiry  in; Expiry (passed through to Memcache)
+     * @param boolean &$success out; Whether the set was successful
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+    {
+        $this->_ensureConn();
+        $success = $this->_conn->set($key, $value, $flag, $expiry);
+        Event::handle('EndCacheSet', array($key, $value, $flag,
+                                           $expiry));
+        return false;
+    }
+
+    /**
+     * Delete a value associated with a key
+     *
+     * @param string  &$key     in; Key to lookup
+     * @param boolean &$success out; whether it worked
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheDelete(&$key, &$success)
+    {
+        $this->_ensureConn();
+        $success = $this->_conn->delete($key);
+        Event::handle('EndCacheDelete', array($key));
+        return false;
+    }
+
+    /**
+     * Ensure that a connection exists
+     *
+     * Checks the instance $_conn variable and connects
+     * if it is empty.
+     *
+     * @return void
+     */
+
+    private function _ensureConn()
+    {
+        if (empty($this->_conn)) {
+            $this->_conn = new Memcache();
+
+            if (is_array($this->servers)) {
+                foreach ($this->servers as $server) {
+                    list($host, $port) = explode(';', $server);
+                    if (empty($port)) {
+                        $port = 11211;
+                    }
+
+                    $this->_conn->addServer($host, $port, $this->persistent);
+                }
+            } else {
+                $this->_conn->addServer($this->servers, $this->persistent);
+                list($host, $port) = explode(';', $this->servers);
+                if (empty($port)) {
+                    $port = 11211;
+                }
+                $this->_conn->addServer($host, $port, $this->persistent);
+            }
+
+            // Compress items stored in the cache if they're over threshold in size
+            // (default 2KiB) and the compression would save more than min savings
+            // ratio (default 0.2).
+
+            // Allows the cache to store objects larger than 1MB (if they
+            // compress to less than 1MB), and improves cache memory efficiency.
+
+            $this->_conn->setCompressThreshold($this->compressThreshold,
+                                               $this->compressMinSaving);
+        }
+    }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Memcache',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou, Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:Memcache',
+                            'rawdescription' =>
+                            _m('Use <a href="http://memcached.org/">Memcached</a> to cache query results.'));
+        return true;
+    }
+}
+
index 71fade19a5767a41fd6b080f2aa01be3f8e6dd1b..718bfd163530d92db7ed03c16acd14de55d04cb2 100644 (file)
@@ -84,7 +84,7 @@ class MinifyPlugin extends Plugin
 
     function onStartScriptElement($action,&$src,&$type) {
         $url = parse_url($src);
-        if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment))
+        if( empty($url['scheme']) && empty($url['host']) && empty($url['query']) && empty($url['fragment']))
         {
             $src = $this->minifyUrl($src);
         }
diff --git a/plugins/Mollom/MollomPlugin.php b/plugins/Mollom/MollomPlugin.php
new file mode 100644 (file)
index 0000000..4c82c48
--- /dev/null
@@ -0,0 +1,893 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * Plugin to check submitted notices with Mollom
+ *
+ * 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/>.
+ *
+ * Mollom is a bayesian spam checker, wrapped into a webservice
+ * This plugin is based on the Drupal Mollom module
+ *
+ * @category  Plugin
+ * @package   Laconica
+ * @author    Brenda Wallace <brenda@cpan.org>
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ *
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+define('MOLLOMPLUGIN_VERSION', '0.1');
+define('MOLLOM_API_VERSION', '1.0');
+
+define('MOLLOM_ANALYSIS_UNKNOWN' , 0);
+define('MOLLOM_ANALYSIS_HAM'     , 1);
+define('MOLLOM_ANALYSIS_SPAM'    , 2);
+define('MOLLOM_ANALYSIS_UNSURE'  , 3);
+
+define('MOLLOM_MODE_DISABLED', 0);
+define('MOLLOM_MODE_CAPTCHA' , 1);
+define('MOLLOM_MODE_ANALYSIS', 2);
+
+define('MOLLOM_FALLBACK_BLOCK' , 0);
+define('MOLLOM_FALLBACK_ACCEPT', 1);
+
+define('MOLLOM_ERROR'   , 1000);
+define('MOLLOM_REFRESH' , 1100);
+define('MOLLOM_REDIRECT', 1200);
+
+/**
+ * Plugin to check submitted notices with Mollom
+ *
+ * Mollom is a bayesian spam filter provided by webservice.
+ *
+ * @category Plugin
+ * @package  Laconica
+ * @author   Brenda Wallace <shiny@cpan.org>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ *
+ * @see      Event
+ */
+
+
+
+class MollomPlugin extends Plugin
+{
+    public $public_key;
+    public $private_key;
+    public $servers;
+
+    function onStartNoticeSave($notice)
+    {
+      if ( $this->public_key ) {
+        //Check spam
+        $data = array(
+            'post_body'      => $notice->content,
+            'author_name'    => $profile->nickname,
+            'author_url'     => $profile->homepage,
+            'author_id'      => $profile->id,
+            'author_ip'      => $this->getClientIp(),
+        );
+        $response = $this->mollom('mollom.checkContent', $data);
+        if ($response['spam'] == MOLLOM_ANALYSIS_SPAM) {
+          throw new ClientException(_("Spam Detected"), 400);
+        }
+        if ($response['spam'] == MOLLOM_ANALYSIS_UNSURE) {
+          //if unsure, let through
+        }
+        if($response['spam'] == MOLLOM_ANALYSIS_HAM) {
+          // all good! :-)
+        }
+      }
+   
+      return true;
+    }
+
+    function getClientIP() {
+        if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+            // Note: order matters here; use proxy-forwarded stuff first
+            foreach (array('HTTP_X_FORWARDED_FOR', 'CLIENT-IP', 'REMOTE_ADDR') as $k) {
+                if (isset($_SERVER[$k])) {
+                    return $_SERVER[$k];
+                }
+            }
+        }
+        return '127.0.0.1';
+    }
+    /**
+      * Call a remote procedure at the Mollom server.  This function will
+      * automatically add the information required to authenticate against
+      * Mollom.
+      */
+    function mollom($method, $data = array()) {
+        if (!extension_loaded('xmlrpc')) {
+            if (!dl('xmlrpc.so')) {
+                common_log(LOG_ERR, "Can't pingback; xmlrpc extension not available.");
+            }
+        }
+    
+      // Construct the server URL:
+      $public_key = $this->public_key;
+      // Retrieve the list of Mollom servers from the database:
+      $servers = $this->servers;
+    
+      if ($servers == NULL) {
+        // Retrieve a list of valid Mollom servers from mollom.com:
+        $servers = $this->xmlrpc('http://xmlrpc.mollom.com/'. MOLLOM_API_VERSION, 'mollom.getServerList', $this->authentication());
+        
+        // Store the list of servers in the database:
+    // TODO!    variable_set('mollom_servers', $servers);
+      }
+      
+      if (is_array($servers)) {
+        // Send the request to the first server, if that fails, try the other servers in the list:
+        foreach ($servers as $server) { 
+          $auth = $this->authentication();
+          $data = array_merge($data, $auth);
+          $result = $this->xmlrpc($server .'/'. MOLLOM_API_VERSION, $method, $data);
+    
+          // Debug output:
+          if (isset($data['session_id'])) {
+            common_debug("called $method at server $server with session ID '". $data['session_id'] ."'");
+          }
+          else {
+            common_debug("called $method at server $server with no session ID");
+          }
+          
+          if ($errno = $this->xmlrpc_errno()) {
+            common_log(LOG_ERR, sprintf('Error @errno: %s - %s - %s - <pre>%s</pre>', $this->xmlrpc_errno(), $server, $this->xmlrpc_error_msg(), $method, print_r($data, TRUE)));
+    
+            if ($errno == MOLLOM_REFRESH) {
+              // Retrieve a list of valid Mollom servers from mollom.com:
+              $servers = $this->xmlrpc('http://xmlrpc.mollom.com/'. MOLLOM_API_VERSION, 'mollom.getServerList', $this->authentication());
+    
+              // Store the updated list of servers in the database:
+              //tODO variable_set('mollom_servers', $servers);
+            }
+            else if ($errno == MOLLOM_ERROR) {
+              return $result;
+            }
+            else if ($errno == MOLLOM_REDIRECT) {
+              // Do nothing, we select the next client automatically.
+            }
+    
+            // Reset the XMLRPC error:
+            $this->xmlrpc_error(0);  // FIXME: this is crazy.
+          }
+          else {
+            common_debug("Result = " . print_r($result, TRUE));
+            return $result;
+          }
+        }
+      }
+    
+      // If none of the servers worked, activate the fallback mechanism:
+      common_debug("none of the servers worked");
+    //   _mollom_fallback();
+      
+      // If everything failed, we reset the server list to force Mollom to request a new list:
+      //TODO variable_set('mollom_servers', array());
+    }
+
+    /**
+    * This function generate an array with all the information required to
+    * authenticate against Mollom. To prevent that requests are forged and
+    * that you are impersonated, each request is signed with a hash computed
+    * based on a private key and a timestamp.
+    *
+    * Both the client and the server share the secret key that is used to
+    * create the authentication hash based on a timestamp.  They both hash
+    * the timestamp with the secret key, and if the hashes match, the
+    * authenticity of the message has been validated.
+    *
+    * To avoid that someone can intercept a (hash, timestamp)-pair and
+    * use that to impersonate a client, Mollom will reject the request
+    * when the timestamp is more than 15 minutes off.
+    *
+    * Make sure your server's time is synchronized with the world clocks,
+    * and that you don't share your private key with anyone else.
+    */
+    private function authentication() {
+    
+      $public_key = $this->public_key;
+      $private_key = $this->private_key;
+    
+      // Generate a timestamp according to the dateTime format (http://www.w3.org/TR/xmlschema-2/#dateTime):
+      $time = gmdate("Y-m-d\TH:i:s.\\0\\0\\0O", time());
+    
+      // Calculate a HMAC-SHA1 according to RFC2104 (http://www.ietf.org/rfc/rfc2104.txt):
+      $hash =  base64_encode(
+      pack("H*", sha1((str_pad($private_key, 64, chr(0x00)) ^ (str_repeat(chr(0x5c), 64))) .
+      pack("H*", sha1((str_pad($private_key, 64, chr(0x00)) ^ (str_repeat(chr(0x36), 64))) .
+      $time))))
+      );
+    
+      // Store everything in an array. Elsewhere in the code, we'll add the
+      // acutal data before we pass it onto the XML-RPC library:
+      $data['public_key'] = $public_key;
+      $data['time'] = $time;
+      $data['hash'] = $hash;
+    
+      return $data;
+    }
+    
+
+    function xmlrpc($url) {
+      //require_once './includes/xmlrpc.inc';
+      $args = func_get_args();
+      return call_user_func_array(array('MollomPlugin', '_xmlrpc'), $args);
+    }
+    
+    /**
+    * Recursively turn a data structure into objects with 'data' and 'type' attributes.
+    *
+    * @param $data
+    *   The data structure.
+    * @param  $type
+    *   Optional type assign to $data.
+    * @return
+    *   Object.
+    */
+    function xmlrpc_value($data, $type = FALSE) {
+      $xmlrpc_value = new stdClass();
+      $xmlrpc_value->data = $data;
+      if (!$type) {
+        $type = $this->xmlrpc_value_calculate_type($xmlrpc_value);
+      }
+      $xmlrpc_value->type = $type;
+      if ($type == 'struct') {
+        // Turn all the values in the array into new xmlrpc_values
+        foreach ($xmlrpc_value->data as $key => $value) {
+          $xmlrpc_value->data[$key] = $this->xmlrpc_value($value);
+        }
+      }
+      if ($type == 'array') {
+        for ($i = 0, $j = count($xmlrpc_value->data); $i < $j; $i++) {
+          $xmlrpc_value->data[$i] = $this->xmlrpc_value($xmlrpc_value->data[$i]);
+        }
+      }
+      return $xmlrpc_value;
+    }
+
+    /**
+    * Map PHP type to XML-RPC type.
+    *
+    * @param $xmlrpc_value
+    *   Variable whose type should be mapped.
+    * @return
+    *   XML-RPC type as string.
+    * @see
+    *   http://www.xmlrpc.com/spec#scalars
+    */
+    function xmlrpc_value_calculate_type(&$xmlrpc_value) {
+      // http://www.php.net/gettype: Never use gettype() to test for a certain type [...] Instead, use the is_* functions.
+      if (is_bool($xmlrpc_value->data)) {
+        return 'boolean';
+      }
+      if (is_double($xmlrpc_value->data)) {
+        return 'double';
+      }
+      if (is_int($xmlrpc_value->data)) {
+          return 'int';
+      }
+      if (is_array($xmlrpc_value->data)) {
+        // empty or integer-indexed arrays are 'array', string-indexed arrays 'struct'
+        return empty($xmlrpc_value->data) || range(0, count($xmlrpc_value->data) - 1) === array_keys($xmlrpc_value->data) ? 'array' : 'struct';
+      }
+      if (is_object($xmlrpc_value->data)) {
+        if ($xmlrpc_value->data->is_date) {
+          return 'date';
+        }
+        if ($xmlrpc_value->data->is_base64) {
+          return 'base64';
+        }
+        $xmlrpc_value->data = get_object_vars($xmlrpc_value->data);
+        return 'struct';
+      }
+      // default
+      return 'string';
+    }
+
+/**
+ * Generate XML representing the given value.
+ *
+ * @param $xmlrpc_value
+ * @return
+ *   XML representation of value.
+ */
+function xmlrpc_value_get_xml($xmlrpc_value) {
+  switch ($xmlrpc_value->type) {
+    case 'boolean':
+      return '<boolean>'. (($xmlrpc_value->data) ? '1' : '0') .'</boolean>';
+      break;
+    case 'int':
+      return '<int>'. $xmlrpc_value->data .'</int>';
+      break;
+    case 'double':
+      return '<double>'. $xmlrpc_value->data .'</double>';
+      break;
+    case 'string':
+      // Note: we don't escape apostrophes because of the many blogging clients
+      // that don't support numerical entities (and XML in general) properly.
+      return '<string>'. htmlspecialchars($xmlrpc_value->data) .'</string>';
+      break;
+    case 'array':
+      $return = '<array><data>'."\n";
+      foreach ($xmlrpc_value->data as $item) {
+        $return .= '  <value>'. $this->xmlrpc_value_get_xml($item) ."</value>\n";
+      }
+      $return .= '</data></array>';
+      return $return;
+      break;
+    case 'struct':
+      $return = '<struct>'."\n";
+      foreach ($xmlrpc_value->data as $name => $value) {
+        $return .= "  <member><name>". htmlentities($name) ."</name><value>";
+        $return .= $this->xmlrpc_value_get_xml($value) ."</value></member>\n";
+      }
+      $return .= '</struct>';
+      return $return;
+      break;
+    case 'date':
+      return $this->xmlrpc_date_get_xml($xmlrpc_value->data);
+      break;
+    case 'base64':
+      return $this->xmlrpc_base64_get_xml($xmlrpc_value->data);
+      break;
+  }
+  return FALSE;
+}
+
+    /**
+    * Perform an HTTP request.
+    *
+    * This is a flexible and powerful HTTP client implementation. Correctly handles
+    * GET, POST, PUT or any other HTTP requests. Handles redirects.
+    *
+    * @param $url
+    *   A string containing a fully qualified URI.
+    * @param $headers
+    *   An array containing an HTTP header => value pair.
+    * @param $method
+    *   A string defining the HTTP request to use.
+    * @param $data
+    *   A string containing data to include in the request.
+    * @param $retry
+    *   An integer representing how many times to retry the request in case of a
+    *   redirect.
+    * @return
+    *   An object containing the HTTP request headers, response code, headers,
+    *   data and redirect status.
+    */
+    function http_request($url, $headers = array(), $method = 'GET', $data = NULL, $retry = 3) {
+      global $db_prefix;
+    
+      $result = new stdClass();
+    
+      // Parse the URL and make sure we can handle the schema.
+      $uri = parse_url($url);
+    
+      if ($uri == FALSE) {
+        $result->error = 'unable to parse URL';
+        return $result;
+      }
+    
+      if (!isset($uri['scheme'])) {
+        $result->error = 'missing schema';
+        return $result;
+      }
+    
+      switch ($uri['scheme']) {
+        case 'http':
+          $port = isset($uri['port']) ? $uri['port'] : 80;
+          $host = $uri['host'] . ($port != 80 ? ':'. $port : '');
+          $fp = @fsockopen($uri['host'], $port, $errno, $errstr, 15);
+          break;
+        case 'https':
+          // Note: Only works for PHP 4.3 compiled with OpenSSL.
+          $port = isset($uri['port']) ? $uri['port'] : 443;
+          $host = $uri['host'] . ($port != 443 ? ':'. $port : '');
+          $fp = @fsockopen('ssl://'. $uri['host'], $port, $errno, $errstr, 20);
+          break;
+        default:
+          $result->error = 'invalid schema '. $uri['scheme'];
+          return $result;
+      }
+    
+      // Make sure the socket opened properly.
+      if (!$fp) {
+        // When a network error occurs, we use a negative number so it does not
+        // clash with the HTTP status codes.
+        $result->code = -$errno;
+        $result->error = trim($errstr);
+    
+        // Mark that this request failed. This will trigger a check of the web
+        // server's ability to make outgoing HTTP requests the next time that
+        // requirements checking is performed.
+        // @see system_requirements()
+        //TODO variable_set('drupal_http_request_fails', TRUE);
+    
+        return $result;
+      }
+    
+      // Construct the path to act on.
+      $path = isset($uri['path']) ? $uri['path'] : '/';
+      if (isset($uri['query'])) {
+        $path .= '?'. $uri['query'];
+      }
+    
+      // Create HTTP request.
+      $defaults = array(
+        // RFC 2616: "non-standard ports MUST, default ports MAY be included".
+        // We don't add the port to prevent from breaking rewrite rules checking the
+        // host that do not take into account the port number.
+        'Host' => "Host: $host",
+        'User-Agent' => 'User-Agent: Drupal (+http://drupal.org/)',
+        'Content-Length' => 'Content-Length: '. strlen($data)
+      );
+    
+      // If the server url has a user then attempt to use basic authentication
+      if (isset($uri['user'])) {
+        $defaults['Authorization'] = 'Authorization: Basic '. base64_encode($uri['user'] . (!empty($uri['pass']) ? ":". $uri['pass'] : ''));
+      }
+    
+      // If the database prefix is being used by SimpleTest to run the tests in a copied
+      // database then set the user-agent header to the database prefix so that any
+      // calls to other Drupal pages will run the SimpleTest prefixed database. The
+      // user-agent is used to ensure that multiple testing sessions running at the
+      // same time won't interfere with each other as they would if the database
+      // prefix were stored statically in a file or database variable.
+      if (is_string($db_prefix) && preg_match("/^simpletest\d+$/", $db_prefix, $matches)) {
+        $defaults['User-Agent'] = 'User-Agent: ' . $matches[0];
+      }
+    
+      foreach ($headers as $header => $value) {
+        $defaults[$header] = $header .': '. $value;
+      }
+    
+      $request = $method .' '. $path ." HTTP/1.0\r\n";
+      $request .= implode("\r\n", $defaults);
+      $request .= "\r\n\r\n";
+      $request .= $data;
+    
+      $result->request = $request;
+    
+      fwrite($fp, $request);
+    
+      // Fetch response.
+      $response = '';
+      while (!feof($fp) && $chunk = fread($fp, 1024)) {
+        $response .= $chunk;
+      }
+      fclose($fp);
+    
+      // Parse response.
+      list($split, $result->data) = explode("\r\n\r\n", $response, 2);
+      $split = preg_split("/\r\n|\n|\r/", $split);
+    
+      list($protocol, $code, $text) = explode(' ', trim(array_shift($split)), 3);
+      $result->headers = array();
+    
+      // Parse headers.
+      while ($line = trim(array_shift($split))) {
+        list($header, $value) = explode(':', $line, 2);
+        if (isset($result->headers[$header]) && $header == 'Set-Cookie') {
+          // RFC 2109: the Set-Cookie response header comprises the token Set-
+          // Cookie:, followed by a comma-separated list of one or more cookies.
+          $result->headers[$header] .= ','. trim($value);
+        }
+        else {
+          $result->headers[$header] = trim($value);
+        }
+      }
+    
+      $responses = array(
+        100 => 'Continue', 101 => 'Switching Protocols',
+        200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content',
+        300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect',
+        400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed',
+        500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported'
+      );
+      // RFC 2616 states that all unknown HTTP codes must be treated the same as the
+      // base code in their class.
+      if (!isset($responses[$code])) {
+        $code = floor($code / 100) * 100;
+      }
+    
+      switch ($code) {
+        case 200: // OK
+        case 304: // Not modified
+          break;
+        case 301: // Moved permanently
+        case 302: // Moved temporarily
+        case 307: // Moved temporarily
+          $location = $result->headers['Location'];
+    
+          if ($retry) {
+            $result = drupal_http_request($result->headers['Location'], $headers, $method, $data, --$retry);
+            $result->redirect_code = $result->code;
+          }
+          $result->redirect_url = $location;
+    
+          break;
+        default:
+          $result->error = $text;
+      }
+    
+      $result->code = $code;
+      return $result;
+    }
+    
+    /**
+    * Construct an object representing an XML-RPC message.
+    *
+    * @param $message
+    *   String containing XML as defined at http://www.xmlrpc.com/spec
+    * @return
+    *   Object
+    */
+    function xmlrpc_message($message) {
+      $xmlrpc_message = new stdClass();
+      $xmlrpc_message->array_structs = array();   // The stack used to keep track of the current array/struct
+      $xmlrpc_message->array_structs_types = array(); // The stack used to keep track of if things are structs or array
+      $xmlrpc_message->current_struct_name = array();  // A stack as well
+      $xmlrpc_message->message = $message;
+      return $xmlrpc_message;
+    }
+
+    /**
+    * Parse an XML-RPC message. If parsing fails, the faultCode and faultString
+    * will be added to the message object.
+    *
+    * @param $xmlrpc_message
+    *   Object generated by xmlrpc_message()
+    * @return
+    *   TRUE if parsing succeeded; FALSE otherwise
+    */
+    function xmlrpc_message_parse(&$xmlrpc_message) {
+      // First remove the XML declaration
+      $xmlrpc_message->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $xmlrpc_message->message);
+      if (trim($xmlrpc_message->message) == '') {
+        return FALSE;
+      }
+      $xmlrpc_message->_parser = xml_parser_create();
+      // Set XML parser to take the case of tags into account.
+      xml_parser_set_option($xmlrpc_message->_parser, XML_OPTION_CASE_FOLDING, FALSE);
+      // Set XML parser callback functions
+      xml_set_element_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_tag_open'), array('MollomPlugin', 'xmlrpc_message_tag_close'));
+      xml_set_character_data_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_cdata'));
+      $this->xmlrpc_message_set($xmlrpc_message);
+      if (!xml_parse($xmlrpc_message->_parser, $xmlrpc_message->message)) {
+        return FALSE;
+      }
+      xml_parser_free($xmlrpc_message->_parser);
+      // Grab the error messages, if any
+      $xmlrpc_message = $this->xmlrpc_message_get();
+      if ($xmlrpc_message->messagetype == 'fault') {
+        $xmlrpc_message->fault_code = $xmlrpc_message->params[0]['faultCode'];
+        $xmlrpc_message->fault_string = $xmlrpc_message->params[0]['faultString'];
+      }
+      return TRUE;
+    }
+
+    /**
+    * Store a copy of the $xmlrpc_message object temporarily.
+    *
+    * @param $value
+    *   Object
+    * @return
+    *   The most recently stored $xmlrpc_message
+    */
+    function xmlrpc_message_set($value = NULL) {
+      static $xmlrpc_message;
+      if ($value) {
+        $xmlrpc_message = $value;
+      }
+      return $xmlrpc_message;
+    }
+
+    function xmlrpc_message_get() {
+      return $this->xmlrpc_message_set();
+    }
+
+    function xmlrpc_message_tag_open($parser, $tag, $attr) {
+      $xmlrpc_message = $this->xmlrpc_message_get();
+      $xmlrpc_message->current_tag_contents = '';
+      $xmlrpc_message->last_open = $tag;
+      switch ($tag) {
+        case 'methodCall':
+        case 'methodResponse':
+        case 'fault':
+          $xmlrpc_message->messagetype = $tag;
+          break;
+        // Deal with stacks of arrays and structs
+        case 'data':
+          $xmlrpc_message->array_structs_types[] = 'array';
+          $xmlrpc_message->array_structs[] = array();
+          break;
+        case 'struct':
+          $xmlrpc_message->array_structs_types[] = 'struct';
+          $xmlrpc_message->array_structs[] = array();
+          break;
+      }
+      $this->xmlrpc_message_set($xmlrpc_message);
+    }
+
+    function xmlrpc_message_cdata($parser, $cdata) {
+      $xmlrpc_message = $this->xmlrpc_message_get();
+      $xmlrpc_message->current_tag_contents .= $cdata;
+      $this->xmlrpc_message_set($xmlrpc_message);
+    }
+
+    function xmlrpc_message_tag_close($parser, $tag) {
+      $xmlrpc_message = $this->xmlrpc_message_get();
+      $value_flag = FALSE;
+      switch ($tag) {
+        case 'int':
+        case 'i4':
+          $value = (int)trim($xmlrpc_message->current_tag_contents);
+          $value_flag = TRUE;
+          break;
+        case 'double':
+          $value = (double)trim($xmlrpc_message->current_tag_contents);
+          $value_flag = TRUE;
+          break;
+        case 'string':
+          $value = $xmlrpc_message->current_tag_contents;
+          $value_flag = TRUE;
+          break;
+        case 'dateTime.iso8601':
+          $value = xmlrpc_date(trim($xmlrpc_message->current_tag_contents));
+          // $value = $iso->getTimestamp();
+          $value_flag = TRUE;
+          break;
+        case 'value':
+          // If no type is indicated, the type is string
+          // We take special care for empty values
+          if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open == 'value'))) {
+            $value = (string)$xmlrpc_message->current_tag_contents;
+            $value_flag = TRUE;
+          }
+          unset($xmlrpc_message->last_open);
+          break;
+        case 'boolean':
+          $value = (boolean)trim($xmlrpc_message->current_tag_contents);
+          $value_flag = TRUE;
+          break;
+        case 'base64':
+          $value = base64_decode(trim($xmlrpc_message->current_tag_contents));
+          $value_flag = TRUE;
+          break;
+        // Deal with stacks of arrays and structs
+        case 'data':
+        case 'struct':
+          $value = array_pop($xmlrpc_message->array_structs );
+          array_pop($xmlrpc_message->array_structs_types);
+          $value_flag = TRUE;
+          break;
+        case 'member':
+          array_pop($xmlrpc_message->current_struct_name);
+          break;
+        case 'name':
+          $xmlrpc_message->current_struct_name[] = trim($xmlrpc_message->current_tag_contents);
+          break;
+        case 'methodName':
+          $xmlrpc_message->methodname = trim($xmlrpc_message->current_tag_contents);
+          break;
+      }
+      if ($value_flag) {
+        if (count($xmlrpc_message->array_structs ) > 0) {
+          // Add value to struct or array
+          if ($xmlrpc_message->array_structs_types[count($xmlrpc_message->array_structs_types)-1] == 'struct') {
+            // Add to struct
+            $xmlrpc_message->array_structs [count($xmlrpc_message->array_structs )-1][$xmlrpc_message->current_struct_name[count($xmlrpc_message->current_struct_name)-1]] = $value;
+          }
+          else {
+            // Add to array
+            $xmlrpc_message->array_structs [count($xmlrpc_message->array_structs )-1][] = $value;
+          }
+        }
+        else {
+          // Just add as a parameter
+          $xmlrpc_message->params[] = $value;
+        }
+      }
+      if (!in_array($tag, array("data", "struct", "member"))) {
+        $xmlrpc_message->current_tag_contents = '';
+      }
+      $this->xmlrpc_message_set($xmlrpc_message);
+    }
+
+    /**
+    * Construct an object representing an XML-RPC request
+    *
+    * @param $method
+    *   The name of the method to be called
+    * @param $args
+    *   An array of parameters to send with the method.
+    * @return
+    *   Object
+    */
+    function xmlrpc_request($method, $args) {
+      $xmlrpc_request = new stdClass();
+      $xmlrpc_request->method = $method;
+      $xmlrpc_request->args = $args;
+      $xmlrpc_request->xml = <<<EOD
+    <?xml version="1.0"?>
+    <methodCall>
+    <methodName>{$xmlrpc_request->method}</methodName>
+    <params>
+    
+EOD;
+      foreach ($xmlrpc_request->args as $arg) {
+        $xmlrpc_request->xml .= '<param><value>';
+        $v = $this->xmlrpc_value($arg);
+        $xmlrpc_request->xml .= $this->xmlrpc_value_get_xml($v);
+        $xmlrpc_request->xml .= "</value></param>\n";
+      }
+      $xmlrpc_request->xml .= '</params></methodCall>';
+      return $xmlrpc_request;
+    }
+
+
+    function xmlrpc_error($code = NULL, $message = NULL, $reset = FALSE) {
+      static $xmlrpc_error;
+      if (isset($code)) {
+        $xmlrpc_error = new stdClass();
+        $xmlrpc_error->is_error = TRUE;
+        $xmlrpc_error->code = $code;
+        $xmlrpc_error->message = $message;
+      }
+      elseif ($reset) {
+        $xmlrpc_error = NULL;
+      }
+      return $xmlrpc_error;
+    }
+
+    function xmlrpc_error_get_xml($xmlrpc_error) {
+      return <<<EOD
+    <methodResponse>
+      <fault>
+      <value>
+        <struct>
+        <member>
+          <name>faultCode</name>
+          <value><int>{$xmlrpc_error->code}</int></value>
+        </member>
+        <member>
+          <name>faultString</name>
+          <value><string>{$xmlrpc_error->message}</string></value>
+        </member>
+        </struct>
+      </value>
+      </fault>
+    </methodResponse>
+    
+EOD;
+    }
+
+    function xmlrpc_date($time) {
+      $xmlrpc_date = new stdClass();
+      $xmlrpc_date->is_date = TRUE;
+      // $time can be a PHP timestamp or an ISO one
+      if (is_numeric($time)) {
+        $xmlrpc_date->year = gmdate('Y', $time);
+        $xmlrpc_date->month = gmdate('m', $time);
+        $xmlrpc_date->day = gmdate('d', $time);
+        $xmlrpc_date->hour = gmdate('H', $time);
+        $xmlrpc_date->minute = gmdate('i', $time);
+        $xmlrpc_date->second = gmdate('s', $time);
+        $xmlrpc_date->iso8601 = gmdate('Ymd\TH:i:s', $time);
+      }
+      else {
+        $xmlrpc_date->iso8601 = $time;
+        $time = str_replace(array('-', ':'), '', $time);
+        $xmlrpc_date->year = substr($time, 0, 4);
+        $xmlrpc_date->month = substr($time, 4, 2);
+        $xmlrpc_date->day = substr($time, 6, 2);
+        $xmlrpc_date->hour = substr($time, 9, 2);
+        $xmlrpc_date->minute = substr($time, 11, 2);
+        $xmlrpc_date->second = substr($time, 13, 2);
+      }
+      return $xmlrpc_date;
+    }
+
+    function xmlrpc_date_get_xml($xmlrpc_date) {
+      return '<dateTime.iso8601>'. $xmlrpc_date->year . $xmlrpc_date->month . $xmlrpc_date->day .'T'. $xmlrpc_date->hour .':'. $xmlrpc_date->minute .':'. $xmlrpc_date->second .'</dateTime.iso8601>';
+    }
+
+    function xmlrpc_base64($data) {
+      $xmlrpc_base64 = new stdClass();
+      $xmlrpc_base64->is_base64 = TRUE;
+      $xmlrpc_base64->data = $data;
+      return $xmlrpc_base64;
+    }
+
+    function xmlrpc_base64_get_xml($xmlrpc_base64) {
+      return '<base64>'. base64_encode($xmlrpc_base64->data) .'</base64>';
+    }
+
+    /**
+    * Execute an XML remote procedural call. This is private function; call xmlrpc()
+    * in common.inc instead of this function.
+    *
+    * @return
+    *   A $xmlrpc_message object if the call succeeded; FALSE if the call failed
+    */
+    function _xmlrpc() {
+      $args = func_get_args();
+      $url = array_shift($args);
+      $this->xmlrpc_clear_error();
+      if (is_array($args[0])) {
+        $method = 'system.multicall';
+        $multicall_args = array();
+        foreach ($args[0] as $call) {
+          $multicall_args[] = array('methodName' => array_shift($call), 'params' => $call);
+        }
+        $args = array($multicall_args);
+      }
+      else {
+        $method = array_shift($args);
+      }
+      $xmlrpc_request = $this->xmlrpc_request($method, $args);
+      $result = $this->http_request($url, array("Content-Type" => "text/xml"), 'POST', $xmlrpc_request->xml);
+      if ($result->code != 200) {
+        $this->xmlrpc_error($result->code, $result->error);
+        return FALSE;
+      }
+      $message = $this->xmlrpc_message($result->data);
+      // Now parse what we've got back
+      if (!$this->xmlrpc_message_parse($message)) {
+        // XML error
+        $this->xmlrpc_error(-32700, t('Parse error. Not well formed'));
+        return FALSE;
+      }
+      // Is the message a fault?
+      if ($message->messagetype == 'fault') {
+        $this->xmlrpc_error($message->fault_code, $message->fault_string);
+        return FALSE;
+      }
+      // Message must be OK
+      return $message->params[0];
+    }
+
+    /**
+    * Returns the last XML-RPC client error number
+    */
+    function xmlrpc_errno() {
+      $error = $this->xmlrpc_error();
+      return ($error != NULL ? $error->code : NULL);
+    }
+    
+    /**
+    * Returns the last XML-RPC client error message
+    */
+    function xmlrpc_error_msg() {
+      $error = xmlrpc_error();
+      return ($error != NULL ? $error->message : NULL);
+    }
+
+  /**
+  * Clears any previous error.
+  */
+  function xmlrpc_clear_error() {
+    $this->xmlrpc_error(NULL, NULL, TRUE);
+  }
+
+}
diff --git a/plugins/Mollom/README b/plugins/Mollom/README
new file mode 100644 (file)
index 0000000..2b8c2d8
--- /dev/null
@@ -0,0 +1,22 @@
+The mollom plugin uses mollom.com to filter SN notices for spam.
+
+== Dependencies ==
+Your webserver needs to have xmlrpc php extention loaded.
+This is called php5-xmlrpc in Debian/Ubuntu
+
+== Installation ==
+Add the following to your config.php
+<?php
+addPlugin('Mollom',
+    array(
+        'public_key' => '...',
+        'private_key' => '...',
+        'servers' => array('http://88.151.243.81', 'http://82.103.131.136')
+    )
+);
+
+?>
+
+replace '...' with your own public and private keys for your site, which you can get from mollom.com
+
+If you're using this plugin, i'd love to know about it -- shiny@cpan.org or shiny on freenode.
index a37d5465e84800f8780db2380d7649157c1eb12a..248afe3fa88e92e32c2782c5c907b45055345530 100644 (file)
@@ -70,7 +70,7 @@ class OpenIDPlugin extends Plugin
         $m->connect('index.php?action=finishopenidlogin', array('action' => 'finishopenidlogin'));
         $m->connect('index.php?action=finishaddopenid', array('action' => 'finishaddopenid'));
         $m->connect('main/openidserver', array('action' => 'openidserver'));
-        
+
         return true;
     }
 
@@ -101,11 +101,11 @@ class OpenIDPlugin extends Plugin
                                           'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
                                           'version' => '2.0'));
         $xrdsOutputter->element('Type', null, 'xri://$xrds*simple');
-        
+
         //consumer
         $xrdsOutputter->showXrdsService('http://specs.openid.net/auth/2.0/return_to',
                             common_local_url('finishopenidlogin'));
-                            
+
         //provider
         $xrdsOutputter->showXrdsService('http://specs.openid.net/auth/2.0/signon',
                             common_local_url('openidserver'),
@@ -308,4 +308,15 @@ class OpenIDPlugin extends Plugin
         $tables[] = 'User_openid_trustroot';
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'OpenID',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou, Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:OpenID',
+                            'rawdescription' =>
+                            _m('Use <a href="http://openid.net/">OpenID</a> to login to the site.'));
+        return true;
+    }
 }
index 44288945be2fcaf3a4bdb908b1fc0da9117df1e3..0b411b8f7f11ba9e10cfa932cb58407809dc0f18 100644 (file)
@@ -22,7 +22,7 @@ class User_openid_trustroot extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('User_openid_trustroot', $kv);
     }
index fefd098671269f25a983559206d5cd0355da1cb3..b353d725526920c22df02be716a374050159e7d4 100644 (file)
@@ -97,4 +97,16 @@ ENDOFPIWIK;
         $action->inlineScript($piwikCode2);
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'PiwikAnalytics',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Tobias Diekershoff, Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Piwik',
+                            'rawdescription' =>
+                            _m('Use <a href="http://piwik.org/">Piwik</a> Open Source Web analytics software.'));
+        return true;
+    }
+
 }
index 460550518c5be4bca34873bd6b31a5430fa8dd4a..bae6c529d3d62b6e9472c964defd3adc40741f8b 100644 (file)
@@ -31,6 +31,16 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
+/**
+ * Outputs 'powered by StatusNet' after site name
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Sarven Capadisli <csarven@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
 class PoweredByStatusNetPlugin extends Plugin
 {
     function onEndAddressData($action)
@@ -42,4 +52,15 @@ class PoweredByStatusNetPlugin extends Plugin
 
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'PoweredByStatusNet',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Sarven Capdaisli',
+                            'homepage' => 'http://status.net/wiki/Plugin:PoweredByStatusNet',
+                            'rawdescription' =>
+                            _m('Outputs powered by <a href="http://status.net/">StatusNet</a> after site name.'));
+        return true;
+    }
 }
index 76a438dd5e9ec9f41e98e1ba32ad9e49e6a298bd..ddba942e6d4ab7eb07a8b70306cf5e5f8849cae1 100644 (file)
@@ -56,5 +56,18 @@ class PtitUrlPlugin extends UrlShortenerPlugin
             return strval($xml['href']);
         }
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => sprintf('PtitUrl (%s)', $this->shortenerName),
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:PtitUrl',
+                            'rawdescription' =>
+                            sprintf(_m('Uses <a href="http://%1$s/">%1$s</a> URL-shortener service.'),
+                                    $this->shortenerName));
+
+        return true;
+    }
 }
 
index d15a869cba3b9f967736cb73e5f357f64cd5d4be..d9c047de85ed1761b78571208d08f6a89fb9d298 100644 (file)
@@ -95,14 +95,16 @@ class PubSubHubBubPlugin extends Plugin
         }
 
         //feed of each user that subscribes to the notice's author
-        $notice_inbox = new Notice_inbox();
-        $notice_inbox->notice_id = $notice->id;
-        if ($notice_inbox->find()) {
-            while ($notice_inbox->fetch()) {
-                $user = User::staticGet('id',$notice_inbox->user_id);
-                $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'rss'));
-                $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'atom'));
+
+        $ni = $notice->whoGets();
+
+        foreach (array_keys($ni) as $user_id) {
+            $user = User::staticGet('id', $user_id);
+            if (empty($user)) {
+                continue;
             }
+            $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'rss'));
+            $feeds[]=common_local_url('ApiTimelineUser',array('id' => $user->nickname, 'format'=>'atom'));
         }
 
         //feed of user replied to
diff --git a/plugins/RSSCloud/LoggingAggregator.php b/plugins/RSSCloud/LoggingAggregator.php
new file mode 100644 (file)
index 0000000..e37eed1
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+/**
+ * This test class pretends to be an RSS aggregator. It logs notifications
+ * from the cloud.
+ *
+ * PHP version 5
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     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/>.
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Dummy aggregator that acts as a proper notification handler. It
+ * doesn't do anything but respond correctly when notified via
+ * REST.  Mostly, this is just and action I used to develop the plugin
+ * and easily test things end-to-end. I'm leaving it in here as it
+ * may be useful for developing the plugin further.
+ *
+ * @category Plugin
+ * @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 LoggingAggregatorAction extends Action
+{
+
+    var $challenge = null;
+    var $url       = null;
+
+    /**
+     * Initialization.
+     *
+     * @param array $args Web and URL arguments
+     *
+     * @return boolean false if user doesn't exist
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $this->url       = $this->arg('url');
+        $this->challenge = $this->arg('challenge');
+
+        common_debug("args = " . var_export($this->args, true));
+        common_debug('url = ' . $this->url . ' challenge = ' . $this->challenge);
+
+        return true;
+    }
+
+    /**
+     * Handle the request
+     *
+     * @param array $args $_REQUEST data (unused)
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        parent::handle($args);
+
+        if (empty($this->url)) {
+            $this->showError('Hey, you have to provide a url parameter.');
+            return;
+        }
+
+        if (!empty($this->challenge)) {
+
+            // must be a GET
+
+            if ($_SERVER['REQUEST_METHOD'] != 'GET') {
+                $this->showError('This resource requires an HTTP GET.');
+                return;
+            }
+
+            header('Content-Type: text/xml');
+            echo $this->challenge;
+
+        } else {
+
+            // must be a POST
+
+            if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+                $this->showError('This resource requires an HTTP POST.');
+                return;
+            }
+
+            header('Content-Type: text/xml');
+            Echo "<notifyResult success='true' msg='Thanks for the update.' />\n";
+        }
+
+        $this->ip = $_SERVER['REMOTE_ADDR'];
+
+        common_log(LOG_INFO, 'RSSCloud Logging Aggregator - ' .
+                   $this->ip . ' claims the feed at ' .
+                   $this->url . ' has been updated.');
+    }
+
+    /**
+     * Show an XML error when things go badly
+     *
+     * @param string $msg the error message
+     *
+     * @return void
+     */
+
+    function showError($msg)
+    {
+        header('HTTP/1.1 400 Bad Request');
+        header('Content-Type: text/xml');
+        echo "<?xml version='1.0'?>\n";
+        echo "<notifyResult success='false' msg='$msg' />\n";
+    }
+
+}
\ No newline at end of file
diff --git a/plugins/RSSCloud/README b/plugins/RSSCloud/README
new file mode 100644 (file)
index 0000000..1237e3e
--- /dev/null
@@ -0,0 +1,54 @@
+This plugin enables RSSCloud (http://rsscloud.org/) publishing and
+subscription handling for RSS 2.0 profile feeds (i.e:
+http://SITE/PATH/api/statuses/user_timeline/USERNAME.rss). When the
+plugin is enabled, StatusNet acts as both the publisher and hub ('writer' and
+'cloud' in RSSCloud parlance), but only for local StatusNet feeds. It's
+not possible to use it as a general purpose hub -- for instance you can't
+subscribe and get updates to a Wordpress feed from StatusNet using this
+plugin.
+
+To use the plugin, add the following to your config.php:
+
+    addPlugin('RSSCloud');
+
+Enabling the plugin will add a <cloud> element to your RSS 2.0 profile feeds
+that looks like this:
+
+    <cloud domain="SITE" port="80" path="/main/rsscloud/request_notify"
+    registerProcedure="" protocol="http-post"/>
+
+Aggregators may subscribe by sending a proper REST RSSCloud subscription
+request (the optional 'domain' parameter with challenge is supported).
+Subscribing aggregators will be notified ('pinged') when users they have
+subscribed to post new notices. Currently, REST is the only protocol
+supported for notifications.
+
+Deamon
+------
+
+There's also a daemon for offline processing of queued notices with
+RSSCloud destinations, which will start automatically if/when you run
+scripts/startdaemons.sh.
+
+Notes
+-----
+
+- Again, only RSS 2.0 profile feeds may be subscribed to, and they have
+  to be the ones with user names in them, like:
+      http://SITE/PATH/api/statuses/user_timeline/USERNAME.rss
+- Subscriptions are deleted after three notification failures in a row
+  (not sure this is optimal).
+- The plugin includes a dummy LoggingAggregator class that can be used
+  for end-to-end testing.  You probably don't want to mess with it.
+
+TODO
+----
+
+- Figure out why the RSSCloudSubcription can't ->delete() or ->update()
+- Support pinging via XML-RPC and SOAP
+- Automatically delete subscriptions? Point of reference: Dave's hub
+  implementation auto-deletes them after 25 hours. WordPress never deletes them.
+- Support additional feed URL addresses for the same feed (e.g.: by numeric ID,
+  ?user_id=xxx, etc.)
+- Support additional feeds that make sense (e.g: replies)?
+- Possibly use "rssCloud" (like Dave) instead of "RSSCloud" everywhere
diff --git a/plugins/RSSCloud/RSSCloudNotifier.php b/plugins/RSSCloud/RSSCloudNotifier.php
new file mode 100644 (file)
index 0000000..d454691
--- /dev/null
@@ -0,0 +1,240 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class to ping an rssCloud endpoint when a feed has been updated
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+   *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   StatusNet
+ * @author    Zach Copley <zach@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 for notifying cloud-enabled RSS aggregators that StatusNet
+ * feeds have been updated.
+ *
+ * @category Plugin
+ * @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 RSSCloudNotifier
+{
+    const MAX_FAILURES = 3;
+
+    /**
+     * Send an HTTP GET to the notification handler with a
+     * challenge string to see if it repsonds correctly.
+     *
+     * @param string $endpoint URL of the notification handler
+     * @param string $feed     the feed being subscribed to
+     *
+     * @return boolean success
+     */
+    function challenge($endpoint, $feed)
+    {
+        $code   = common_confirmation_code(128);
+        $params = array('url' => $feed, 'challenge' => $code);
+        $url    = $endpoint . '?' . http_build_query($params);
+
+        try {
+            $client   = new HTTPClient();
+            $response = $client->get($url);
+        } catch (HTTP_Request2_Exception $e) {
+            common_log(LOG_INFO,
+                       'RSSCloud plugin - failure testing notify handler ' .
+                       $endpoint . ' - '  . $e->getMessage());
+            return false;
+        }
+
+        // Check response is betweet 200 and 299 and body contains challenge data
+
+        $status = $response->getStatus();
+        $body   = $response->getBody();
+
+        if ($status >= 200 && $status < 300) {
+
+            // NOTE: the spec says that the body must contain the string
+            // challenge.  It doesn't say that the body must contain the
+            // challenge string ONLY, although that seems to be the way
+            // the other implementors have interpreted it.
+
+            if (strpos($body, $code) !== false) {
+                common_log(LOG_INFO, 'RSSCloud plugin - ' .
+                           "success testing notify handler:  $endpoint");
+                return true;
+            } else {
+                common_log(LOG_INFO, 'RSSCloud plugin - ' .
+                          'challenge/repsonse failed for notify handler ' .
+                           $endpoint);
+                common_debug('body = ' . var_export($body, true));
+                return false;
+            }
+        } else {
+            common_log(LOG_INFO, 'RSSCloud plugin - ' .
+                       "failure testing notify handler:  $endpoint " .
+                       ' - got HTTP ' . $status);
+            common_debug('body = ' . var_export($body, true));
+            return false;
+        }
+    }
+
+    /**
+     * HTTP POST a notification that a feed has been updated
+     * ('ping the cloud').
+     *
+     * @param String $endpoint URL of the notification handler
+     * @param String $feed     the feed being subscribed to
+     *
+     * @return boolean success
+     */
+    function postUpdate($endpoint, $feed)
+    {
+
+        $headers  = array();
+        $postdata = array('url' => $feed);
+
+        try {
+            $client   = new HTTPClient();
+            $response = $client->post($endpoint, $headers, $postdata);
+        } catch (HTTP_Request2_Exception $e) {
+            common_log(LOG_INFO, 'RSSCloud plugin - failure notifying ' .
+                       $endpoint . ' that feed ' . $feed .
+                       ' has changed: ' . $e->getMessage());
+            return false;
+        }
+
+        $status = $response->getStatus();
+
+        if ($status >= 200 && $status < 300) {
+            common_log(LOG_INFO, 'RSSCloud plugin - success notifying ' .
+                       $endpoint . ' that feed ' . $feed . ' has changed.');
+            return true;
+        } else {
+            common_log(LOG_INFO, 'RSSCloud plugin - failure notifying ' .
+                       $endpoint . ' that feed ' . $feed .
+                       ' has changed: got HTTP ' . $status);
+            return false;
+        }
+    }
+
+    /**
+     * Notify all subscribers to a profile feed that it has changed.
+     *
+     * @param Profile $profile the profile whose feed has been
+     *        updated
+     *
+     * @return boolean success
+     */
+    function notify($profile)
+    {
+        $feed = common_path('api/statuses/user_timeline/') .
+          $profile->nickname . '.rss';
+
+        $cloudSub = new RSSCloudSubscription();
+
+        $cloudSub->subscribed = $profile->id;
+
+        if ($cloudSub->find()) {
+            while ($cloudSub->fetch()) {
+                $result = $this->postUpdate($cloudSub->url, $feed);
+                if ($result == false) {
+                    $this->handleFailure($cloudSub);
+                }
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Handle problems posting cloud notifications. Increment the failure
+     * count, or delete the subscription if the maximum number of failures
+     * is exceeded.
+     *
+     * XXX: Redo with proper DB_DataObject methods once I figure out what
+     * what the problem is with pluginized DB_DataObjects. -Z
+     *
+     * @param RSSCloudSubscription $cloudSub the subscription in question
+     *
+     * @return boolean success
+     */
+    function handleFailure($cloudSub)
+    {
+        $failCnt = $cloudSub->failures + 1;
+
+        if ($failCnt == self::MAX_FAILURES) {
+
+            common_log(LOG_INFO,
+                       'Deleting RSSCloud subcription ' .
+                       '(max failure count reached), profile: ' .
+                       $cloudSub->subscribed .
+                       ' handler: ' .
+                       $cloudSub->url);
+
+            // XXX: WTF! ->delete() doesn't work. Clearly, there are some issues with
+            // the DB_DataObject, or my understanding of it.  Have to drop into SQL.
+
+            // $result = $cloudSub->delete();
+
+            $qry = 'DELETE from rsscloud_subscription' .
+              ' WHERE subscribed = ' . $cloudSub->subscribed .
+              ' AND url = \'' . $cloudSub->url . '\'';
+
+            $result = $cloudSub->query($qry);
+
+            if (!$result) {
+                common_log_db_error($cloudSub, 'DELETE', __FILE__);
+                common_log(LOG_ERR, 'Could not delete RSSCloud subscription.');
+            }
+
+        } else {
+
+            common_debug('Updating failure count on RSSCloud subscription. ' .
+                         $failCnt);
+
+            $failCnt = $cloudSub->failures + 1;
+
+            // XXX: ->update() not working either, gar!
+
+            $qry = 'UPDATE rsscloud_subscription' .
+              ' SET failures = ' . $failCnt .
+              ' WHERE subscribed = ' . $cloudSub->subscribed .
+              ' AND url = \'' . $cloudSub->url . '\'';
+
+            $result = $cloudSub->query($qry);
+
+            if (!$result) {
+                common_log_db_error($cloudsub, 'UPDATE', __FILE__);
+                common_log(LOG_ERR,
+                           'Could not update failure ' .
+                           'count on RSSCloud subscription');
+            }
+        }
+    }
+
+}
+
diff --git a/plugins/RSSCloud/RSSCloudPlugin.php b/plugins/RSSCloud/RSSCloudPlugin.php
new file mode 100644 (file)
index 0000000..2de1626
--- /dev/null
@@ -0,0 +1,295 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to support RSSCloud
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+   *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   StatusNet
+ * @author    Zach Copley <zach@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);
+}
+
+define('RSSCLOUDPLUGIN_VERSION', '0.1');
+
+/**
+ * Plugin class for adding RSSCloud capabilities to StatusNet
+ *
+ * @category Plugin
+ * @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 RSSCloudPlugin extends Plugin
+{
+    /**
+     * Our friend, the constructor
+     *
+     * @return void
+     */
+    function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Setup the info for the subscription handler. Allow overriding
+     * to point at another cloud hub (not currently used).
+     *
+     * @return void
+     */
+
+    function onInitializePlugin()
+    {
+        $this->domain   = common_config('rsscloud', 'domain');
+        $this->port     = common_config('rsscloud', 'port');
+        $this->path     = common_config('rsscloud', 'path');
+        $this->funct    = common_config('rsscloud', 'function');
+        $this->protocol = common_config('rsscloud', 'protocol');
+
+        // set defaults
+
+        $local_server = parse_url(common_path('main/rsscloud/request_notify'));
+
+        if (empty($this->domain)) {
+            $this->domain = $local_server['host'];
+        }
+
+        if (empty($this->port)) {
+            $this->port = '80';
+        }
+
+        if (empty($this->path)) {
+            $this->path = $local_server['path'];
+        }
+
+        if (empty($this->funct)) {
+            $this->funct = '';
+        }
+
+        if (empty($this->protocol)) {
+            $this->protocol = 'http-post';
+        }
+    }
+
+    /**
+     * Add RSSCloud-related paths to the router table
+     *
+     * Hook for RouterInitialized event.
+     *
+     * @param Mapper &$m URL parser and mapper
+     *
+     * @return boolean hook return
+     */
+
+    function onRouterInitialized(&$m)
+    {
+        $m->connect('/main/rsscloud/request_notify',
+                    array('action' => 'RSSCloudRequestNotify'));
+
+        // XXX: This is just for end-to-end testing. Uncomment if you need to pretend
+        //      to be a cloud hub for some reason.
+        //$m->connect('/main/rsscloud/notify',
+        //            array('action' => 'LoggingAggregator'));
+
+        return true;
+    }
+
+    /**
+     * Automatically load the actions and libraries used by
+     * the RSSCloud plugin
+     *
+     * @param Class $cls the class
+     *
+     * @return boolean hook return
+     *
+     */
+
+    function onAutoload($cls)
+    {
+        switch ($cls)
+        {
+        case 'RSSCloudSubscription':
+            include_once INSTALLDIR . '/plugins/RSSCloud/RSSCloudSubscription.php';
+            return false;
+        case 'RSSCloudNotifier':
+            include_once INSTALLDIR . '/plugins/RSSCloud/RSSCloudNotifier.php';
+            return false;
+        case 'RSSCloudRequestNotifyAction':
+        case 'LoggingAggregatorAction':
+            include_once INSTALLDIR . '/plugins/RSSCloud/' .
+              mb_substr($cls, 0, -6) . '.php';
+            return false;
+        default:
+            return true;
+        }
+    }
+
+    /**
+     * Add a <cloud> element to the RSS feed (after the rss <channel>
+     * element is started).
+     *
+     * @param Action $action the ApiAction
+     *
+     * @return void
+     */
+
+    function onStartApiRss($action)
+    {
+        if (get_class($action) == 'ApiTimelineUserAction') {
+
+            $attrs = array('domain'            => $this->domain,
+                           'port'              => $this->port,
+                           'path'              => $this->path,
+                           'registerProcedure' => $this->funct,
+                           'protocol'          => $this->protocol);
+
+            // Dipping into XMLWriter to avoid a full end element (</cloud>).
+
+            $action->xw->startElement('cloud');
+            foreach ($attrs as $name => $value) {
+                $action->xw->writeAttribute($name, $value);
+            }
+
+            $action->xw->endElement();
+        }
+    }
+
+    /**
+     * Add an RSSCloud queue item for each notice
+     *
+     * @param Notice $notice      the notice
+     * @param array  &$transports the list of transports (queues)
+     *
+     * @return boolean hook return
+     */
+
+    function onStartEnqueueNotice($notice, &$transports)
+    {
+        array_push($transports, 'rsscloud');
+        return true;
+    }
+
+    /**
+     * broadcast the message when not using queuehandler
+     *
+     * @param Notice &$notice the notice
+     * @param array  $queue   destination queue
+     *
+     * @return boolean hook return
+     */
+
+    function onUnqueueHandleNotice(&$notice, $queue)
+    {
+        if (($queue == 'rsscloud') && ($this->_isLocal($notice))) {
+
+            common_debug('broadcasting rssCloud bound notice ' . $notice->id);
+
+            $profile = $notice->getProfile();
+
+            $notifier = new RSSCloudNotifier();
+            $notifier->notify($profile);
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Determine whether the notice was locally created
+     *
+     * @param Notice $notice the notice in question
+     *
+     * @return boolean locality
+     */
+
+    function _isLocal($notice)
+    {
+        return ($notice->is_local == Notice::LOCAL_PUBLIC ||
+                $notice->is_local == Notice::LOCAL_NONPUBLIC);
+    }
+
+    /**
+     * Create the rsscloud_subscription table if it's not
+     * already in the DB
+     *
+     * @return boolean hook return
+     */
+
+    function onCheckSchema()
+    {
+        $schema = Schema::get();
+        $schema->ensureTable('rsscloud_subscription',
+                             array(new ColumnDef('subscribed', 'integer',
+                                                 null, false, 'PRI'),
+                                   new ColumnDef('url', 'varchar',
+                                                 '255', false, 'PRI'),
+                                   new ColumnDef('failures', 'integer',
+                                                 null, false, null, 0),
+                                   new ColumnDef('created', 'datetime',
+                                                 null, false),
+                                   new ColumnDef('modified', 'timestamp',
+                                                 null, false, null,
+                                                 'CURRENT_TIMESTAMP',
+                                                 'on update CURRENT_TIMESTAMP')
+                                   ));
+         return true;
+    }
+
+    /**
+     * Add RSSCloudQueueHandler to the list of valid daemons to
+     * start
+     *
+     * @param array $daemons the list of daemons to run
+     *
+     * @return boolean hook return
+     *
+     */
+
+    function onGetValidDaemons($daemons)
+    {
+        array_push($daemons, INSTALLDIR .
+                   '/plugins/RSSCloud/RSSCloudQueueHandler.php');
+        return true;
+    }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'RSSCloud',
+                            'version' => RSSCLOUDPLUGIN_VERSION,
+                            'author' => 'Zach Copley',
+                            'homepage' => 'http://status.net/wiki/Plugin:RSSCloud',
+                            'rawdescription' =>
+                            _m('The RSSCloud plugin enables your StatusNet instance to publish ' .
+                               'real-time updates for profile RSS feeds using the ' .
+                               '<a href="http://rsscloud.org/">RSSCloud protocol</a>".'));
+
+        return true;
+    }
+
+}
+
diff --git a/plugins/RSSCloud/RSSCloudQueueHandler.php b/plugins/RSSCloud/RSSCloudQueueHandler.php
new file mode 100755 (executable)
index 0000000..693dd27
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../..'));
+
+$shortoptions = 'i::';
+$longoptions = array('id::');
+
+$helptext = <<<END_OF_ENJIT_HELP
+Daemon script for pushing new notices to RSSCloud subscribers.
+
+    -i --id           Identity (default none)
+
+END_OF_ENJIT_HELP;
+
+require_once INSTALLDIR . '/scripts/commandline.inc';
+require_once INSTALLDIR . '/lib/queuehandler.php';
+require_once INSTALLDIR . '/plugins/RSSCloud/RSSCloudNotifier.php';
+require_once INSTALLDIR . '/plugins/RSSCloud/RSSCloudSubscription.php';
+
+class RSSCloudQueueHandler extends QueueHandler
+{
+    var $notifier = null;
+
+    function transport()
+    {
+        return 'rsscloud';
+    }
+
+    function start()
+    {
+        $this->log(LOG_INFO, "INITIALIZE");
+        $this->notifier = new RSSCloudNotifier();
+        return true;
+    }
+
+    function handle_notice($notice)
+    {
+        $profile = $notice->getProfile();
+        return $this->notifier->notify($profile);
+    }
+
+    function finish()
+    {
+    }
+
+}
+
+if (have_option('i')) {
+    $id = get_option_value('i');
+} else if (have_option('--id')) {
+    $id = get_option_value('--id');
+} else if (count($args) > 0) {
+    $id = $args[0];
+} else {
+    $id = null;
+}
+
+$handler = new RSSCloudQueueHandler($id);
+
+$handler->runOnce();
diff --git a/plugins/RSSCloud/RSSCloudRequestNotify.php b/plugins/RSSCloud/RSSCloudRequestNotify.php
new file mode 100644 (file)
index 0000000..d76c08d
--- /dev/null
@@ -0,0 +1,347 @@
+<?php
+/**
+ * Action to let RSSCloud aggregators request update notification when
+ * user profile feeds change.
+ *
+ * PHP version 5
+ *
+ * @category Plugin
+ * @package  StatusNet
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     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/>.
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Action class to handle RSSCloud notification (subscription) requests
+ *
+ * @category Plugin
+ * @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 RSSCloudRequestNotifyAction extends Action
+{
+    /**
+     * Initialization.
+     *
+     * @param array $args Web and URL arguments
+     *
+     * @return boolean false if user doesn't exist
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $this->ip   = $_SERVER['REMOTE_ADDR'];
+        $this->port = $this->arg('port');
+        $this->path = $this->arg('path');
+
+        if ($this->path[0] != '/') {
+            $this->path = '/' . $this->path;
+        }
+
+        $this->protocol  = $this->arg('protocol');
+        $this->procedure = $this->arg('notifyProcedure');
+        $this->domain    = $this->arg('domain');
+
+        $this->feeds = $this->getFeeds();
+
+        return true;
+    }
+
+    /**
+     * Handle the request
+     *
+     * Checks for all the required parameters for a subscription,
+     * validates that the feed being subscribed to is real, and then
+     * saves the subsctiption.
+     *
+     * @param array $args $_REQUEST data (unused)
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        parent::handle($args);
+
+        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            $this->showResult(false, 'Request must be POST.');
+            return;
+        }
+
+        $missing = array();
+
+        if (empty($this->port)) {
+            $missing[] = 'port';
+        }
+
+        if (empty($this->path)) {
+            $missing[] = 'path';
+        }
+
+        if (empty($this->protocol)) {
+            $missing[] = 'protocol';
+        } else if (strtolower($this->protocol) != 'http-post') {
+            $msg = 'Only http-post notifications are supported at this time.';
+            $this->showResult(false, $msg);
+            return;
+        }
+
+        if (!isset($this->procedure)) {
+            $missing[] = 'notifyProcedure';
+        }
+
+        if (!empty($missing)) {
+            $msg = 'The following parameters were missing from the request body: ' .
+                implode(', ', $missing) . '.';
+            $this->showResult(false, $msg);
+            return;
+        }
+
+        if (empty($this->feeds)) {
+            $msg = 'You must provide at least one valid profile feed url ' .
+              '(url1, url2, url3 ... urlN).';
+            $this->showResult(false, $msg);
+            return;
+        }
+
+        // We have to validate everything before saving anything.
+        // We only return one success or failure no matter how
+        // many feeds the subscriber is trying to subscribe to
+
+        foreach ($this->feeds as $feed) {
+
+            if (!$this->validateFeed($feed)) {
+
+                $nh = $this->getNotifyUrl();
+                common_log(LOG_WARNING,
+                           "RSSCloud plugin - $nh tried to subscribe to invalid feed: $feed");
+
+                $msg = 'Feed subscription failed - Not a valid feed.';
+                $this->showResult(false, $msg);
+                return;
+            }
+
+            if (!$this->testNotificationHandler($feed)) {
+                $msg = 'Feed subscription failed - ' .
+                'notification handler doesn\'t respond correctly.';
+                $this->showResult(false, $msg);
+                return;
+            }
+
+        }
+
+        foreach ($this->feeds as $feed) {
+            $this->saveSubscription($feed);
+        }
+
+        // XXX: What to do about deleting stale subscriptions?
+        // 25 hours seems harsh. WordPress doesn't ever remove
+        // subscriptions.
+
+        $msg = 'Thanks for the subscription. ' .
+          'When the feed(s) update(s) we\'ll notify you.';
+
+        $this->showResult(true, $msg);
+    }
+
+    /**
+     * Validate that the requested feed is one we serve
+     * up via RSSCloud.
+     *
+     * @param string $feed the feed in question
+     *
+     * @return void
+     */
+
+    function validateFeed($feed)
+    {
+        $user = $this->userFromFeed($feed);
+
+        if (empty($user)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Pull all of the urls (url1, url2, url3...urlN) that
+     * the subscriber wants to subscribe to.
+     *
+     * @return array $feeds the list of feeds
+     */
+
+    function getFeeds()
+    {
+        $feeds = array();
+
+        while (list($key, $feed) = each($this->args)) {
+            if (preg_match('/^url\d*$/', $key)) {
+                $feeds[] = $feed;
+            }
+        }
+
+        return $feeds;
+    }
+
+    /**
+     * Test that a notification handler is there and is reponding
+     * correctly.  This is called before adding a subscription.
+     *
+     * @param string $feed the feed to verify
+     *
+     * @return boolean success result
+     */
+
+    function testNotificationHandler($feed)
+    {
+        $notifyUrl = $this->getNotifyUrl();
+
+        $notifier = new RSSCloudNotifier();
+
+        if (isset($this->domain)) {
+
+            // 'domain' param set, so we have to use GET and send a challenge
+
+            common_log(LOG_INFO,
+                       'RSSCloud plugin - Testing notification handler with challenge: ' .
+                       $notifyUrl);
+            return $notifier->challenge($notifyUrl, $feed);
+
+        } else {
+            common_log(LOG_INFO, 'RSSCloud plugin - Testing notification handler: ' .
+                       $notifyUrl);
+
+            return $notifier->postUpdate($notifyUrl, $feed);
+        }
+    }
+
+    /**
+     * Build the URL for the notification handler based on the
+     * parameters passed in with the subscription request.
+     *
+     * @return string notification handler url
+     */
+
+    function getNotifyUrl()
+    {
+        if (isset($this->domain)) {
+            return 'http://' . $this->domain . ':' . $this->port . $this->path;
+        } else {
+            return 'http://' . $this->ip . ':' . $this->port . $this->path;
+        }
+    }
+
+    /**
+     * Uses the nickname part of the subscribed feed URL to figure out
+     * whethere there's really a user with such a feed.  Used to
+     * validate feeds before adding a subscription.
+     *
+     * @param string $feed the feed in question
+     *
+     * @return boolean success
+     */
+
+    function userFromFeed($feed)
+    {
+        // We only do profile feeds
+
+        $path  = common_path('api/statuses/user_timeline/');
+        $valid = '%^' . $path . '(?<nickname>.*)\.rss$%';
+
+        if (preg_match($valid, $feed, $matches)) {
+            $user = User::staticGet('nickname', $matches['nickname']);
+            if (!empty($user)) {
+                return $user;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Save an RSSCloud subscription
+     *
+     * @param string $feed a valid profile feed
+     *
+     * @return boolean success result
+     */
+
+    function saveSubscription($feed)
+    {
+        $user = $this->userFromFeed($feed);
+
+        $notifyUrl = $this->getNotifyUrl();
+
+        $sub = RSSCloudSubscription::getSubscription($user->id, $notifyUrl);
+
+        if ($sub) {
+            common_log(LOG_INFO, "RSSCloud plugin - $notifyUrl refreshed subscription" .
+                         " to user $user->nickname (id: $user->id).");
+        } else {
+
+            $sub = new RSSCloudSubscription();
+
+            $sub->subscribed = $user->id;
+            $sub->url        = $notifyUrl;
+            $sub->created    = common_sql_now();
+
+            if (!$sub->insert()) {
+                common_log_db_error($sub, 'INSERT', __FILE__);
+                return false;
+            }
+
+            common_log(LOG_INFO, "RSSCloud plugin - $notifyUrl subscribed" .
+                       " to user $user->nickname (id: $user->id)");
+        }
+
+        return true;
+    }
+
+    /**
+     * Show an XML message indicating the subscription
+     * was successful or failed.
+     *
+     * @param boolean $success whether it was good or bad
+     * @param string  $msg     the message to output
+     *
+     * @return boolean success result
+     */
+
+    function showResult($success, $msg)
+    {
+        $this->startXML();
+        $this->elementStart('notifyResult',
+                            array('success' => ($success) ? 'true' : 'false',
+                                  'msg'     => $msg));
+        $this->endXML();
+    }
+
+}
+
diff --git a/plugins/RSSCloud/RSSCloudSubscription.php b/plugins/RSSCloud/RSSCloudSubscription.php
new file mode 100644 (file)
index 0000000..396c604
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Table Definition for rsscloud_subscription
+ */
+
+require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
+
+class RSSCloudSubscription extends Memcached_DataObject {
+
+    var $__table='rsscloud_subscription'; // table name
+    var $subscribed;                      // int    primary key user id
+    var $url;                             // string primary key
+    var $failures;                        // int
+    var $created;                         // datestamp()
+    var $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
+
+    function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('DataObjects_Grp',$k,$v); }
+
+    function table()
+    {
+
+        $db = $this->getDatabaseConnection();
+        $dbtype = $db->phptype;
+
+        $cols = array('subscribed' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+                      'url'        => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+                      'failures'   => DB_DATAOBJECT_INT,
+                      'created'    => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
+                      'modified'  => ($dbtype == 'mysql' || $dbtype == 'mysqli') ?
+                      DB_DATAOBJECT_MYSQLTIMESTAMP + DB_DATAOBJECT_NOTNULL :
+                      DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
+                      );
+
+        return $cols;
+    }
+
+    function keys()
+    {
+        return array('subscribed' => 'N', 'url' => 'N');
+    }
+
+    static function getSubscription($subscribed, $url)
+    {
+        $sub = new RSSCloudSubscription();
+        $sub->whereAdd("subscribed = $subscribed");
+        $sub->whereAdd("url = '$url'");
+        $sub->limit(1);
+
+        if ($sub->find()) {
+            $sub->fetch();
+            return $sub;
+        }
+
+        return false;
+    }
+
+}
index a810b716531586ba85ee33d993d59bec0454c03c..89640f5beb25c7e41db6c4a3dceeb2569fa326cb 100644 (file)
@@ -154,14 +154,11 @@ class RealtimePlugin extends Plugin
         // Add to inbox timelines
         // XXX: do a join
 
-        $inbox = new Notice_inbox();
-        $inbox->notice_id = $notice->id;
+        $ni = $notice->whoGets();
 
-        if ($inbox->find()) {
-            while ($inbox->fetch()) {
-                $user = User::staticGet('id', $inbox->user_id);
-                $paths[] = array('all', $user->nickname);
-            }
+        foreach (array_keys($ni) as $user_id) {
+            $user = User::staticGet('id', $user_id);
+            $paths[] = array('all', $user->nickname);
         }
 
         // Add to the replies timeline
@@ -310,8 +307,7 @@ class RealtimePlugin extends Plugin
 
     function _getScripts()
     {
-        return array('plugins/Realtime/realtimeupdate.js',
-                     'plugins/Realtime/json2.js');
+        return array('plugins/Realtime/realtimeupdate.js');
     }
 
     function _updateInitialize($timeline, $user_id)
diff --git a/plugins/Realtime/json2.js b/plugins/Realtime/json2.js
deleted file mode 100644 (file)
index 7e27df5..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
-    http://www.JSON.org/json2.js
-    2009-04-16
-
-    Public Domain.
-
-    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
-    See http://www.JSON.org/js.html
-
-    This file creates a global JSON object containing two methods: stringify
-    and parse.
-
-        JSON.stringify(value, replacer, space)
-            value       any JavaScript value, usually an object or array.
-
-            replacer    an optional parameter that determines how object
-                        values are stringified for objects. It can be a
-                        function or an array of strings.
-
-            space       an optional parameter that specifies the indentation
-                        of nested structures. If it is omitted, the text will
-                        be packed without extra whitespace. If it is a number,
-                        it will specify the number of spaces to indent at each
-                        level. If it is a string (such as '\t' or '&nbsp;'),
-                        it contains the characters used to indent at each level.
-
-            This method produces a JSON text from a JavaScript value.
-
-            When an object value is found, if the object contains a toJSON
-            method, its toJSON method will be called and the result will be
-            stringified. A toJSON method does not serialize: it returns the
-            value represented by the name/value pair that should be serialized,
-            or undefined if nothing should be serialized. The toJSON method
-            will be passed the key associated with the value, and this will be
-            bound to the object holding the key.
-
-            For example, this would serialize Dates as ISO strings.
-
-                Date.prototype.toJSON = function (key) {
-                    function f(n) {
-                        // Format integers to have at least two digits.
-                        return n < 10 ? '0' + n : n;
-                    }
-
-                    return this.getUTCFullYear()   + '-' +
-                         f(this.getUTCMonth() + 1) + '-' +
-                         f(this.getUTCDate())      + 'T' +
-                         f(this.getUTCHours())     + ':' +
-                         f(this.getUTCMinutes())   + ':' +
-                         f(this.getUTCSeconds())   + 'Z';
-                };
-
-            You can provide an optional replacer method. It will be passed the
-            key and value of each member, with this bound to the containing
-            object. The value that is returned from your method will be
-            serialized. If your method returns undefined, then the member will
-            be excluded from the serialization.
-
-            If the replacer parameter is an array of strings, then it will be
-            used to select the members to be serialized. It filters the results
-            such that only members with keys listed in the replacer array are
-            stringified.
-
-            Values that do not have JSON representations, such as undefined or
-            functions, will not be serialized. Such values in objects will be
-            dropped; in arrays they will be replaced with null. You can use
-            a replacer function to replace those with JSON values.
-            JSON.stringify(undefined) returns undefined.
-
-            The optional space parameter produces a stringification of the
-            value that is filled with line breaks and indentation to make it
-            easier to read.
-
-            If the space parameter is a non-empty string, then that string will
-            be used for indentation. If the space parameter is a number, then
-            the indentation will be that many spaces.
-
-            Example:
-
-            text = JSON.stringify(['e', {pluribus: 'unum'}]);
-            // text is '["e",{"pluribus":"unum"}]'
-
-
-            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
-            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
-
-            text = JSON.stringify([new Date()], function (key, value) {
-                return this[key] instanceof Date ?
-                    'Date(' + this[key] + ')' : value;
-            });
-            // text is '["Date(---current time---)"]'
-
-
-        JSON.parse(text, reviver)
-            This method parses a JSON text to produce an object or array.
-            It can throw a SyntaxError exception.
-
-            The optional reviver parameter is a function that can filter and
-            transform the results. It receives each of the keys and values,
-            and its return value is used instead of the original value.
-            If it returns what it received, then the structure is not modified.
-            If it returns undefined then the member is deleted.
-
-            Example:
-
-            // Parse the text. Values that look like ISO date strings will
-            // be converted to Date objects.
-
-            myData = JSON.parse(text, function (key, value) {
-                var a;
-                if (typeof value === 'string') {
-                    a =
-/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
-                    if (a) {
-                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
-                            +a[5], +a[6]));
-                    }
-                }
-                return value;
-            });
-
-            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
-                var d;
-                if (typeof value === 'string' &&
-                        value.slice(0, 5) === 'Date(' &&
-                        value.slice(-1) === ')') {
-                    d = new Date(value.slice(5, -1));
-                    if (d) {
-                        return d;
-                    }
-                }
-                return value;
-            });
-
-
-    This is a reference implementation. You are free to copy, modify, or
-    redistribute.
-
-    This code should be minified before deployment.
-    See http://javascript.crockford.com/jsmin.html
-
-    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
-    NOT CONTROL.
-*/
-
-/*jslint evil: true */
-
-/*global JSON */
-
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
-    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
-    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
-    lastIndex, length, parse, prototype, push, replace, slice, stringify,
-    test, toJSON, toString, valueOf
-*/
-
-// Create a JSON object only if one does not already exist. We create the
-// methods in a closure to avoid creating global variables.
-
-if (!this.JSON) {
-    JSON = {};
-}
-(function () {
-
-    function f(n) {
-        // Format integers to have at least two digits.
-        return n < 10 ? '0' + n : n;
-    }
-
-    if (typeof Date.prototype.toJSON !== 'function') {
-
-        Date.prototype.toJSON = function (key) {
-
-            return this.getUTCFullYear()   + '-' +
-                 f(this.getUTCMonth() + 1) + '-' +
-                 f(this.getUTCDate())      + 'T' +
-                 f(this.getUTCHours())     + ':' +
-                 f(this.getUTCMinutes())   + ':' +
-                 f(this.getUTCSeconds())   + 'Z';
-        };
-
-        String.prototype.toJSON =
-        Number.prototype.toJSON =
-        Boolean.prototype.toJSON = function (key) {
-            return this.valueOf();
-        };
-    }
-
-    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        gap,
-        indent,
-        meta = {    // table of character substitutions
-            '\b': '\\b',
-            '\t': '\\t',
-            '\n': '\\n',
-            '\f': '\\f',
-            '\r': '\\r',
-            '"' : '\\"',
-            '\\': '\\\\'
-        },
-        rep;
-
-
-    function quote(string) {
-
-// If the string contains no control characters, no quote characters, and no
-// backslash characters, then we can safely slap some quotes around it.
-// Otherwise we must also replace the offending characters with safe escape
-// sequences.
-
-        escapable.lastIndex = 0;
-        return escapable.test(string) ?
-            '"' + string.replace(escapable, function (a) {
-                var c = meta[a];
-                return typeof c === 'string' ? c :
-                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-            }) + '"' :
-            '"' + string + '"';
-    }
-
-
-    function str(key, holder) {
-
-// Produce a string from holder[key].
-
-        var i,          // The loop counter.
-            k,          // The member key.
-            v,          // The member value.
-            length,
-            mind = gap,
-            partial,
-            value = holder[key];
-
-// If the value has a toJSON method, call it to obtain a replacement value.
-
-        if (value && typeof value === 'object' &&
-                typeof value.toJSON === 'function') {
-            value = value.toJSON(key);
-        }
-
-// If we were called with a replacer function, then call the replacer to
-// obtain a replacement value.
-
-        if (typeof rep === 'function') {
-            value = rep.call(holder, key, value);
-        }
-
-// What happens next depends on the value's type.
-
-        switch (typeof value) {
-        case 'string':
-            return quote(value);
-
-        case 'number':
-
-// JSON numbers must be finite. Encode non-finite numbers as null.
-
-            return isFinite(value) ? String(value) : 'null';
-
-        case 'boolean':
-        case 'null':
-
-// If the value is a boolean or null, convert it to a string. Note:
-// typeof null does not produce 'null'. The case is included here in
-// the remote chance that this gets fixed someday.
-
-            return String(value);
-
-// If the type is 'object', we might be dealing with an object or an array or
-// null.
-
-        case 'object':
-
-// Due to a specification blunder in ECMAScript, typeof null is 'object',
-// so watch out for that case.
-
-            if (!value) {
-                return 'null';
-            }
-
-// Make an array to hold the partial results of stringifying this object value.
-
-            gap += indent;
-            partial = [];
-
-// Is the value an array?
-
-            if (Object.prototype.toString.apply(value) === '[object Array]') {
-
-// The value is an array. Stringify every element. Use null as a placeholder
-// for non-JSON values.
-
-                length = value.length;
-                for (i = 0; i < length; i += 1) {
-                    partial[i] = str(i, value) || 'null';
-                }
-
-// Join all of the elements together, separated with commas, and wrap them in
-// brackets.
-
-                v = partial.length === 0 ? '[]' :
-                    gap ? '[\n' + gap +
-                            partial.join(',\n' + gap) + '\n' +
-                                mind + ']' :
-                          '[' + partial.join(',') + ']';
-                gap = mind;
-                return v;
-            }
-
-// If the replacer is an array, use it to select the members to be stringified.
-
-            if (rep && typeof rep === 'object') {
-                length = rep.length;
-                for (i = 0; i < length; i += 1) {
-                    k = rep[i];
-                    if (typeof k === 'string') {
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            } else {
-
-// Otherwise, iterate through all of the keys in the object.
-
-                for (k in value) {
-                    if (Object.hasOwnProperty.call(value, k)) {
-                        v = str(k, value);
-                        if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
-                        }
-                    }
-                }
-            }
-
-// Join all of the member texts together, separated with commas,
-// and wrap them in braces.
-
-            v = partial.length === 0 ? '{}' :
-                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
-                        mind + '}' : '{' + partial.join(',') + '}';
-            gap = mind;
-            return v;
-        }
-    }
-
-// If the JSON object does not yet have a stringify method, give it one.
-
-    if (typeof JSON.stringify !== 'function') {
-        JSON.stringify = function (value, replacer, space) {
-
-// The stringify method takes a value and an optional replacer, and an optional
-// space parameter, and returns a JSON text. The replacer can be a function
-// that can replace values, or an array of strings that will select the keys.
-// A default replacer method can be provided. Use of the space parameter can
-// produce text that is more easily readable.
-
-            var i;
-            gap = '';
-            indent = '';
-
-// If the space parameter is a number, make an indent string containing that
-// many spaces.
-
-            if (typeof space === 'number') {
-                for (i = 0; i < space; i += 1) {
-                    indent += ' ';
-                }
-
-// If the space parameter is a string, it will be used as the indent string.
-
-            } else if (typeof space === 'string') {
-                indent = space;
-            }
-
-// If there is a replacer, it must be a function or an array.
-// Otherwise, throw an error.
-
-            rep = replacer;
-            if (replacer && typeof replacer !== 'function' &&
-                    (typeof replacer !== 'object' ||
-                     typeof replacer.length !== 'number')) {
-                throw new Error('JSON.stringify');
-            }
-
-// Make a fake root object containing our value under the key of ''.
-// Return the result of stringifying the value.
-
-            return str('', {'': value});
-        };
-    }
-
-
-// If the JSON object does not yet have a parse method, give it one.
-
-    if (typeof JSON.parse !== 'function') {
-        JSON.parse = function (text, reviver) {
-
-// The parse method takes a text and an optional reviver function, and returns
-// a JavaScript value if the text is a valid JSON text.
-
-            var j;
-
-            function walk(holder, key) {
-
-// The walk method is used to recursively walk the resulting structure so
-// that modifications can be made.
-
-                var k, v, value = holder[key];
-                if (value && typeof value === 'object') {
-                    for (k in value) {
-                        if (Object.hasOwnProperty.call(value, k)) {
-                            v = walk(value, k);
-                            if (v !== undefined) {
-                                value[k] = v;
-                            } else {
-                                delete value[k];
-                            }
-                        }
-                    }
-                }
-                return reviver.call(holder, key, value);
-            }
-
-
-// Parsing happens in four stages. In the first stage, we replace certain
-// Unicode characters with escape sequences. JavaScript handles many characters
-// incorrectly, either silently deleting them, or treating them as line endings.
-
-            cx.lastIndex = 0;
-            if (cx.test(text)) {
-                text = text.replace(cx, function (a) {
-                    return '\\u' +
-                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-                });
-            }
-
-// In the second stage, we run the text against regular expressions that look
-// for non-JSON patterns. We are especially concerned with '()' and 'new'
-// because they can cause invocation, and '=' because it can cause mutation.
-// But just to be safe, we want to reject all unexpected forms.
-
-// We split the second stage into 4 regexp operations in order to work around
-// crippling inefficiencies in IE's and Safari's regexp engines. First we
-// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
-// replace all simple value tokens with ']' characters. Third, we delete all
-// open brackets that follow a colon or comma or that begin the text. Finally,
-// we look to see that the remaining characters are only whitespace or ']' or
-// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
-
-            if (/^[\],:{}\s]*$/.
-test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
-replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
-replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
-
-// In the third stage we use the eval function to compile the text into a
-// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
-// in JavaScript: it can begin a block or an object literal. We wrap the text
-// in parens to eliminate the ambiguity.
-
-                j = eval('(' + text + ')');
-
-// In the optional fourth stage, we recursively walk the new structure, passing
-// each name/value pair to a reviver function for possible transformation.
-
-                return typeof reviver === 'function' ?
-                    walk({'': j}, '') : j;
-            }
-
-// If the text is not JSON parseable, then a SyntaxError is thrown.
-
-            throw new SyntaxError('JSON.parse');
-        };
-    }
-}());
index db118dbb810dcf5ce946fc5b066e68ef7ff64ecc..3665214f85710c603f811763c78e08a7e7afe5e1 100644 (file)
@@ -62,9 +62,8 @@ class RecaptchaPlugin extends Plugin
 
     function onEndRegistrationFormData($action)
     {
-        $action->style('#recaptcha_area{float:left;}');
         $action->elementStart('li');
-        $action->raw('<label for="recaptcha_area">Captcha</label>');
+        $action->raw('<label for="recaptcha">Captcha</label>');
         if($this->checkssl() === true) {
             $action->raw(recaptcha_get_html($this->public_key), null, true);
         } else { 
index d48283b2ee1d3ac5f7a6b4a876c187dbf877e792..d157ea067cf70def1d750451b63d6e93473dd3ae 100644 (file)
@@ -31,8 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/plugins/Authentication/AuthenticationPlugin.php';
-
 class ReverseUsernameAuthenticationPlugin extends AuthenticationPlugin
 {
     //---interface implementation---//
index 6e361aafbefb898326a90b296e3b6788e535e6c4..913741226b4302cd2c63bc09f439659fe9a89d68 100644 (file)
@@ -1,8 +1,12 @@
 <?php
-/*
+/**
  * StatusNet - the distributed open-source microblogging tool
  * Copyright (C) 2009, 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
  *
  * 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>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
  */
 
-/**
- * @package SamplePlugin
- * @maintainer Your Name <you@example.com>
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) {
+if (!defined('STATUSNET')) {
     // This check helps protect against security problems;
     // your code file can't be executed directly from the web.
     exit(1);
 }
 
+/**
+ * Sample plugin main class
+ *
+ * Each plugin requires a main class to interact with the StatusNet system.
+ *
+ * The main class usually extends the Plugin class that comes with StatusNet.
+ *
+ * The class has standard-named methods that will be called when certain events
+ * happen in the code base. These methods have names like 'onX' where X is an
+ * event name (see EVENTS.txt for the list of available events). Event handlers
+ * have pre-defined arguments, based on which event they're handling. A typical
+ * event handler:
+ *
+ *    function onSomeEvent($paramA, &$paramB)
+ *    {
+ *        if ($paramA == 'jed') {
+ *            throw new Exception(sprintf(_m("Invalid parameter %s"), $paramA));
+ *        }
+ *        $paramB = 'spock';
+ *        return true;
+ *    }
+ *
+ * Event handlers must return a boolean value. If they return false, all other
+ * event handlers for this event (in other plugins) will be skipped, and in some
+ * cases the default processing for that event would be skipped. This is great for
+ * replacing the default action of an event.
+ *
+ * If the handler returns true, processing of other event handlers and the default
+ * processing will continue. This is great for extending existing functionality.
+ *
+ * If the handler throws an exception, processing will stop, and the exception's
+ * error will be shown to the user.
+ *
+ * To install a plugin (like this one), site admins add the following code to
+ * their config.php file:
+ *
+ *     addPlugin('Sample');
+ *
+ * Plugins must be installed in one of the following directories:
+ *
+ *     local/plugins/{$pluginclass}.php
+ *     local/plugins/{$name}/{$pluginclass}.php
+ *     local/{$pluginclass}.php
+ *     local/{$name}/{$pluginclass}.php
+ *     plugins/{$pluginclass}.php
+ *     plugins/{$name}/{$pluginclass}.php
+ *
+ * Here, {$name} is the name of the plugin, like 'Sample', and {$pluginclass} is
+ * the name of the main class, like 'SamplePlugin'. Plugins that are part of the
+ * main StatusNet distribution go in 'plugins' and third-party or local ones go
+ * in 'local'.
+ *
+ * Simple plugins can be implemented as a single module. Others are more complex
+ * and require additional modules; these should use their own directory, like
+ * 'local/plugins/{$name}/'. All files related to the plugin, including images,
+ * JavaScript, CSS, external libraries or PHP modules should go in the plugin
+ * directory.
+ *
+ * @category  Sample
+ * @package   StatusNet
+ * @author    Brion Vibber <brionv@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
 class SamplePlugin extends Plugin
 {
-    function onInitializePlugin()
+    /**
+     * Plugins are configured using public instance attributes. To set
+     * their values, site administrators use this syntax:
+     *
+     * addPlugin('Sample', array('attr1' => 'foo', 'attr2' => 'bar'));
+     *
+     * The same plugin class can be initialized multiple times with different
+     * arguments:
+     *
+     * addPlugin('EmailNotify', array('sendTo' => 'evan@status.net'));
+     * addPlugin('EmailNotify', array('sendTo' => 'brionv@status.net'));
+     *
+     */
+
+    public $attr1 = null;
+    public $attr2 = null;
+
+    /**
+     * Initializer for this plugin
+     *
+     * Plugins overload this method to do any initialization they need,
+     * like connecting to remote servers or creating paths or so on.
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+
+    function initialize()
+    {
+        return true;
+    }
+
+    /**
+     * Cleanup for this plugin
+     *
+     * Plugins overload this method to do any cleanup they need,
+     * like disconnecting from remote servers or deleting temp files or so on.
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+
+    function cleanup()
     {
-        // Event handlers normally return true to indicate that all is well.
-        //
-        // Returning false will cancel further processing of any other
-        // plugins or core code hooking the same event.
         return true;
     }
 
     /**
-     * Hook for RouterInitialized event.
+     * Database schema setup
+     *
+     * Plugins can add their own tables to the StatusNet database. Plugins
+     * should use StatusNet's schema interface to add or delete tables. The
+     * ensureTable() method provides an easy way to ensure a table's structure
+     * and availability.
+     *
+     * By default, the schema is checked every time StatusNet is run (say, when
+     * a Web page is hit). Admins can configure their systems to only check the
+     * schema when the checkschema.php script is run, greatly improving performance.
+     * However, they need to remember to run that script after installing or
+     * upgrading a plugin!
+     *
+     * @see Schema
+     * @see ColumnDef
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+
+    function onCheckSchema()
+    {
+        $schema = Schema::get();
+
+        // For storing user-submitted flags on profiles
+
+        $schema->ensureTable('user_greeting_count',
+                             array(new ColumnDef('user_id', 'integer', null,
+                                                 true, 'PRI'),
+                                   new ColumnDef('greeting_count', 'integer')));
+
+        return true;
+    }
+
+    /**
+     * Load related modules when needed
+     *
+     * Most non-trivial plugins will require extra modules to do their work. Typically
+     * these include data classes, action classes, widget classes, or external libraries.
+     *
+     * This method receives a class name and loads the PHP file related to that class. By
+     * tradition, action classes typically have files named for the action, all lower-case.
+     * Data classes are in files with the data class name, initial letter capitalized.
+     *
+     * Note that this method will be called for *all* overloaded classes, not just ones
+     * in this plugin! So, make sure to return true by default to let other plugins, and
+     * the core code, get a chance.
+     *
+     * @param string $cls Name of the class to be loaded
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+
+    function onAutoload($cls)
+    {
+        $dir = dirname(__FILE__);
+
+        switch ($cls)
+        {
+        case 'HelloAction':
+            include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
+            return false;
+        case 'User_greeting_count':
+            include_once $dir . '/'.$cls.'.php';
+            return false;
+        default:
+            return true;
+        }
+    }
+
+    /**
+     * Map URLs to actions
+     *
+     * This event handler lets the plugin map URLs on the site to actions (and
+     * thus an action handler class). Note that the action handler class for an
+     * action will be named 'FoobarAction', where action = 'foobar'. The class
+     * must be loaded in the onAutoload() method.
      *
      * @param Net_URL_Mapper $m path-to-action mapper
-     * @return boolean hook return
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
      */
 
     function onRouterInitialized($m)
     {
-        $m->connect(':nickname/samples',
-                    array('action' => 'showsamples'),
-                    array('feed' => '[A-Za-z0-9_-]+'));
-        $m->connect('settings/sample',
-                    array('action' => 'samplesettings'));
+        $m->connect('main/hello',
+                    array('action' => 'hello'));
+        return true;
+    }
+
+    /**
+     * Modify the default menu to link to our custom action
+     *
+     * Using event handlers, it's possible to modify the default UI for pages
+     * almost without limit. In this method, we add a menu item to the default
+     * primary menu for the interface to link to our action.
+     *
+     * The Action class provides a rich set of events to hook, as well as output
+     * methods.
+     *
+     * @param Action $action The current action handler. Use this to
+     *                       do any output.
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     *
+     * @see Action
+     */
+
+    function onEndPrimaryNav($action)
+    {
+        // common_local_url() gets the correct URL for the action name
+        // we provide
+
+        $action->menuItem(common_local_url('hello'),
+                          _m('Hello'), _m('A warm greeting'), false, 'nav_hello');
+        return true;
+    }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Sample',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Brion Vibber, Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:Sample',
+                            'rawdescription' =>
+                            _m('A sample plugin to show basics of development for new hackers.'));
         return true;
     }
 }
diff --git a/plugins/Sample/User_greeting_count.php b/plugins/Sample/User_greeting_count.php
new file mode 100644 (file)
index 0000000..d9a5977
--- /dev/null
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Data class for counting greetings
+ *
+ * PHP version 5
+ *
+ * @category Data
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     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/>.
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
+
+/**
+ * Data class for counting greetings
+ *
+ * We use the DB_DataObject framework for data classes in StatusNet. Each
+ * table maps to a particular data class, making it easier to manipulate
+ * data.
+ *
+ * Data classes should extend Memcached_DataObject, the (slightly misnamed)
+ * extension of DB_DataObject that provides caching, internationalization,
+ * and other bits of good functionality to StatusNet-specific data classes.
+ *
+ * @category Action
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * @see      DB_DataObject
+ */
+
+class User_greeting_count extends Memcached_DataObject
+{
+    public $__table = 'user_greeting_count'; // table name
+    public $user_id;                         // int(4)  primary_key not_null
+    public $greeting_count;                  // int(4)
+
+    /**
+     * Get an instance by key
+     *
+     * This is a utility method to get a single instance with a given key value.
+     *
+     * @param string $k Key to use to lookup (usually 'user_id' for this class)
+     * @param mixed  $v Value to lookup
+     *
+     * @return User_greeting_count object found, or null for no hits
+     *
+     */
+
+    function staticGet($k, $v=null)
+    {
+        return Memcached_DataObject::staticGet('User_greeting_count', $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('user_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+                     'greeting_count' => DB_DATAOBJECT_INT);
+    }
+
+    /**
+     * 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('user_id' => 'K');
+    }
+
+    /**
+     * 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();
+    }
+
+    /**
+     * Magic formula for non-autoincrementing integer primary keys
+     *
+     * If a table has a single integer column as its primary key, DB_DataObject
+     * assumes that the column is auto-incrementing and makes a sequence table
+     * to do this incrementation. Since we don't need this for our class, we
+     * overload this method and return the magic formula that DB_DataObject needs.
+     *
+     * @return array magic three-false array that stops auto-incrementing.
+     */
+
+    function sequenceKey()
+    {
+        return array(false, false, false);
+    }
+
+    /**
+     * Increment a user's greeting count and return instance
+     *
+     * This method handles the ins and outs of creating a new greeting_count for a
+     * user or fetching the existing greeting count and incrementing its value.
+     *
+     * @param integer $user_id ID of the user to get a count for
+     *
+     * @return User_greeting_count instance for this user, with count already incremented.
+     */
+
+    static function inc($user_id)
+    {
+        $gc = User_greeting_count::staticGet('user_id', $user_id);
+
+        if (empty($gc)) {
+
+            $gc = new User_greeting_count();
+
+            $gc->user_id        = $user_id;
+            $gc->greeting_count = 1;
+
+            $result = $gc->insert();
+
+            if (!$result) {
+                throw Exception(sprintf(_m("Could not save new greeting count for %d"),
+                                        $user_id));
+            }
+
+        } else {
+
+            $orig = clone($gc);
+
+            $gc->greeting_count++;
+
+            $result = $gc->update($orig);
+
+            if (!$result) {
+                throw Exception(sprintf(_m("Could not increment greeting count for %d"),
+                                        $user_id));
+            }
+        }
+
+        return $gc;
+    }
+}
diff --git a/plugins/Sample/hello.php b/plugins/Sample/hello.php
new file mode 100644 (file)
index 0000000..0cfd8a1
--- /dev/null
@@ -0,0 +1,166 @@
+<?php
+/**
+ * Give a warm greeting to our friendly user
+ *
+ * PHP version 5
+ *
+ * @category Sample
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     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/>.
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Give a warm greeting to our friendly user
+ *
+ * This sample action shows some basic ways of doing output in an action
+ * class.
+ *
+ * Action classes have several output methods that they override from
+ * the parent class.
+ *
+ * @category Sample
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ */
+
+class HelloAction extends Action
+{
+    var $user = null;
+    var $gc   = null;
+
+    /**
+     * Take arguments for running
+     *
+     * This method is called first, and it lets the action class get
+     * all its arguments and validate them. It's also the time
+     * to fetch any relevant data from the database.
+     *
+     * Action classes should run parent::prepare($args) as the first
+     * line of this method to make sure the default argument-processing
+     * happens.
+     *
+     * @param array $args $_REQUEST args
+     *
+     * @return boolean success flag
+     */
+
+    function prepare($args)
+    {
+        parent::prepare($args);
+
+        $this->user = common_current_user();
+
+        if (!empty($this->user)) {
+            $this->gc = User_greeting_count::inc($this->user->id);
+        }
+
+        return true;
+    }
+
+    /**
+     * Handle request
+     *
+     * This is the main method for handling a request. Note that
+     * most preparation should be done in the prepare() method;
+     * by the time handle() is called the action should be
+     * more or less ready to go.
+     *
+     * @param array $args $_REQUEST args; handled in prepare()
+     *
+     * @return void
+     */
+
+    function handle($args)
+    {
+        parent::handle($args);
+
+        $this->showPage();
+    }
+
+    /**
+     * Title of this page
+     *
+     * Override this method to show a custom title.
+     *
+     * @return string Title of the page
+     */
+
+    function title()
+    {
+        if (empty($this->user)) {
+            return _m('Hello');
+        } else {
+            return sprintf(_m('Hello, %s'), $this->user->nickname);
+        }
+    }
+
+    /**
+     * 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.
+     *
+     * @return void
+     */
+
+    function showContent()
+    {
+        if (empty($this->user)) {
+            $this->element('p', array('class' => 'greeting'),
+                           _m('Hello, stranger!'));
+        } else {
+            $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).'),
+                                   $this->gc->greeting_count));
+        }
+    }
+
+    /**
+     * Return true if read only.
+     *
+     * Some actions only read from the database; others read and write.
+     * The simple database load-balancer built into StatusNet will
+     * direct read-only actions to database mirrors (if they are configured),
+     * and read-write actions to the master database.
+     *
+     * This defaults to false to avoid data integrity issues, but you
+     * should make sure to overload it for performance gains.
+     *
+     * @param array $args other arguments, if RO/RW status depends on them.
+     *
+     * @return boolean is read only action?
+     */
+
+    function isReadOnly($args)
+    {
+        return false;
+    }
+}
index 45b745b07d0000a50860ef5042c084d5c280f2e5..6eac7dbb1e37cb15a7154aa600fe7d73ba0ef105 100644 (file)
@@ -47,5 +47,18 @@ class SimpleUrlPlugin extends UrlShortenerPlugin
     protected function shorten($url) {
         return $this->http_get(sprintf($this->serviceUrl,urlencode($url)));
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => sprintf('SimpleUrl (%s)', $this->shortenerName),
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:SimpleUrl',
+                            'rawdescription' =>
+                            sprintf(_m('Uses <a href="http://%1$s/">%1$s</a> URL-shortener service.'),
+                                    $this->shortenerName));
+
+        return true;
+    }
 }
 
index 18aa8034ca1e47737f021c67133f678e7750d740..80625c5b70e8bff693f2273d964d849e1830e429 100644 (file)
@@ -22,13 +22,13 @@ if (!defined('STATUSNET')) {
 define('TEMPLATEPLUGIN_VERSION', '0.1');
 
 class TemplatePlugin extends Plugin {
-  
+
   var $blocks = array();
-  
+
   function __construct() {
     parent::__construct();
   }
-  
+
   // capture the RouterInitialized event
   // and connect a new API method
   // for updating the template
@@ -37,8 +37,7 @@ class TemplatePlugin extends Plugin {
       'action'      => 'template',
     ));
   }
-  
-  
+
   // <%styles%>
   // <%scripts%>
   // <%search%>
@@ -50,18 +49,18 @@ class TemplatePlugin extends Plugin {
     $act->extraHead();
     $this->blocks['head'] = $act->xw->flush();
     $act->showStylesheets();
-    $this->blocks['styles'] = $act->xw->flush();    
+    $this->blocks['styles'] = $act->xw->flush();
     $act->showScripts();
-    $this->blocks['scripts'] = $act->xw->flush();    
+    $this->blocks['scripts'] = $act->xw->flush();
     $act->showFeeds();
-    $this->blocks['feeds'] = $act->xw->flush();    
+    $this->blocks['feeds'] = $act->xw->flush();
     $act->showOpenSearch();
-    $this->blocks['search'] = $act->xw->flush();    
+    $this->blocks['search'] = $act->xw->flush();
     $act->showDescription();
     $this->blocks['description'] = $act->xw->flush();
     return false;
   }
-  
+
   // <%bodytext%>
   function onStartShowContentBlock( &$act ) {
     $this->clear_xmlWriter($act);
@@ -70,7 +69,7 @@ class TemplatePlugin extends Plugin {
   function onEndShowContentBlock( &$act ) {
     $this->blocks['bodytext'] = $act->xw->flush();
   }
-  
+
   // <%localnav%>
   function onStartShowLocalNavBlock( &$act ) {
     $this->clear_xmlWriter($act);
@@ -79,7 +78,7 @@ class TemplatePlugin extends Plugin {
   function onEndShowLocalNavBlock( &$act ) {
     $this->blocks['localnav'] = $act->xw->flush();
   }
-  
+
   // <%export%>
   function onStartShowExportData( &$act ) {
     $this->clear_xmlWriter($act);
@@ -88,7 +87,7 @@ class TemplatePlugin extends Plugin {
   function onEndShowExportData( &$act ) {
     $this->blocks['export'] = $act->xw->flush();
   }
-  
+
   // <%subscriptions%>
   // <%subscribers%>
   // <%groups%>
@@ -149,7 +148,7 @@ class TemplatePlugin extends Plugin {
     }
     return false;
   }
-  
+
   // <%logo%>
   // <%nav%>
   // <%notice%>
@@ -170,7 +169,7 @@ class TemplatePlugin extends Plugin {
     $this->blocks['noticeform'] = $act->xw->flush();
     return false;
   }
-  
+
   // <%secondarynav%>
   // <%licenses%>
   function onStartShowFooter( &$act ) {
@@ -181,19 +180,19 @@ class TemplatePlugin extends Plugin {
     $this->blocks['licenses'] = $act->xw->flush();
     return false;
   }
-  
+
   // capture the EndHTML event
   // and include the template
   function onEndEndHTML($act) {
-    
+
     global $action, $tags;
-    
+
     // set the action and title values
     $vars = array(
       'action'=>$action,
       'title'=>$act->title(). " - ". common_config('site', 'name')
     );
-    
+
     // use the PHP template
     // unless statusnet config:
     //   $config['template']['mode'] = 'html';
@@ -203,55 +202,55 @@ class TemplatePlugin extends Plugin {
       include $tpl_file;
       return;
     }
-    
+
     $tpl_file = $this->templateFolder() . '/index.html';
-    
+
     // read the static template
     $output = file_get_contents( $tpl_file );
-    
+
     $tags = array();
-    
+
     // get a list of the <%tags%> in the template
     $pattern='/<%([a-z]+)%>/';
-    
+
     if ( 1 <= preg_match_all( $pattern, $output, $found ))
       $tags[] = $found;
-    
+
     // for each found tag, set its value from the rendered blocks
     foreach( $tags[0][1] as $pos=>$tag ) {
       if (isset($this->blocks[$tag]))
         $vars[$tag] = $this->blocks[$tag];
-        
+
       // didn't find a block for the tag
       elseif (!isset($vars[$tag]))
         $vars[$tag] = '';
     }
-    
+
     // replace the tags in the template
     foreach( $vars as $key=>$val )
       $output = str_replace( '<%'.$key.'%>', $val, $output );
-    
+
     echo $output;
-    
+
     return true;
-    
+
   }
   function templateFolder() {
     return 'tpl';
   }
-  
+
   // catching the StartShowHTML event to halt the rendering
   function onStartShowHTML( &$act ) {
     $this->clear_xmlWriter($act);
     return true;
   }
-  
+
   // clear the xmlWriter
   function clear_xmlWriter( &$act ) {
     $act->xw->openMemory();
     $act->xw->setIndent(true);
   }
-  
+
 }
 
 /**
@@ -267,7 +266,7 @@ class TemplatePlugin extends Plugin {
  * @link     http://megapump.com/
  *
  */
+
 class TemplateAction extends Action
 {
 
@@ -275,54 +274,65 @@ class TemplateAction extends Action
     parent::prepare($args);
     return true;
   }
-  
+
   function handle($args) {
-    
+
     parent::handle($args);
-    
+
     if (!isset($_SERVER['PHP_AUTH_USER'])) {
-      
+
       // not authenticated, show login form
       header('WWW-Authenticate: Basic realm="StatusNet API"');
-      
+
       // cancelled the browser login form
       $this->clientError(_('Authentication error!'), $code = 401);
-      
+
     } else {
-      
+
       $nick = $_SERVER['PHP_AUTH_USER'];
       $pass = $_SERVER['PHP_AUTH_PW'];
-      
+
       // check username and password
       $user = common_check_user($nick,$pass);
-      
+
       if ($user) {
-        
+
         // verify that user is admin
         if (!($user->id == 1))
           $this->clientError(_('Only User #1 can update the template.'), $code = 401);
-        
+
         // open the old template
         $tpl_file = $this->templateFolder() . '/index.html';
         $fp = fopen( $tpl_file, 'w+' );
-        
+
         // overwrite with the new template
         fwrite($fp, $this->arg('template'));
         fclose($fp);
-        
+
         header('HTTP/1.1 200 OK');
         header('Content-type: text/plain');
         print "Template Updated!";
-        
+
       } else {
-        
+
         // bad username and password
         $this->clientError(_('Authentication error!'), $code = 401);
-        
+
       }
-      
+
     }
   }
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'Template',
+                            'version' => TEMPLATEPLUGIN_VERSION,
+                            'author' => 'Brian Hendrickson',
+                            'homepage' => 'http://status.net/wiki/Plugin:Template',
+                            'rawdescription' =>
+                            _m('Use an HTML template for Web output.'));
+        return true;
+    }
+
 }
 
 /**
index 6ced9afdc511d750e7a2d5bcf872fa315bcb95b4..e2d494a7bda4c4ebf2c7714c7a31259b8e7ee18b 100644 (file)
@@ -57,4 +57,16 @@ class TightUrlPlugin extends UrlShortenerPlugin
             return strval($xml['href']);
         }
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => sprintf('TightUrl (%s)', $this->shortenerName),
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Craig Andrews',
+                            'homepage' => 'http://status.net/wiki/Plugin:TightUrl',
+                            'rawdescription' =>
+                            sprintf(_m('Uses <a href="http://%1$s/">%1$s</a> URL-shortener service.'),
+                                    $this->shortenerName));
+        return true;
+    }
 }
index de1181903e805142da3b3538687644a6c5847fd7..a87ee2894a77c443e0b9496f26270d963d7be188 100644 (file)
@@ -31,6 +31,8 @@ if (!defined('STATUSNET')) {
 
 require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
 
+define('TWITTERBRIDGEPLUGIN_VERSION', '0.9');
+
 /**
  * Plugin for sending and importing Twitter statuses
  *
@@ -189,4 +191,17 @@ class TwitterBridgePlugin extends Plugin
         return true;
     }
 
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'TwitterBridge',
+                            'version' => TWITTERBRIDGEPLUGIN_VERSION,
+                            'author' => 'Zach Copley',
+                            'homepage' => 'http://status.net/wiki/Plugin:TwitterBridge',
+                            'rawdescription' =>
+                            _m('The Twitter "bridge" plugin allows you to integrate ' .
+                               'your StatusNet instance with ' .
+                               '<a href="http://twitter.com/">Twitter</a>.'));
+        return true;
+    }
+
 }
index b4ca12be23bee66796c2d186db7329058ee20517..36732ce46a528f4defba455cf11aa6cd753ed544 100755 (executable)
@@ -268,19 +268,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
 
         }
 
-        if (!Notice_inbox::pkeyGet(array('notice_id' => $notice->id,
-                                         'user_id' => $flink->user_id))) {
-            // Add to inbox
-            $inbox = new Notice_inbox();
-
-            $inbox->user_id   = $flink->user_id;
-            $inbox->notice_id = $notice->id;
-            $inbox->created   = $notice->created;
-            $inbox->source    = NOTICE_INBOX_SOURCE_GATEWAY; // From a private source
-
-            $inbox->insert();
-
-        }
+        Inbox::insertNotice($flink->user_id, $notice->id);
 
         $notice->blowCaches();
 
index 602a5bfa881d20c6739b71269a09fcc6b87f2803..a33869c19ea2be076c4db748a100a1fb9e268b3f 100644 (file)
@@ -102,20 +102,20 @@ class UserFlagPlugin extends Plugin
 
     function onAutoload($cls)
     {
-        switch ($cls)
+        switch (strtolower($cls))
         {
-        case 'FlagprofileAction':
-        case 'AdminprofileflagAction':
-        case 'ClearflagAction':
+        case 'flagprofileaction':
+        case 'adminprofileflagaction':
+        case 'clearflagaction':
             include_once INSTALLDIR.'/plugins/UserFlag/' .
               strtolower(mb_substr($cls, 0, -6)) . '.php';
             return false;
-        case 'FlagProfileForm':
-        case 'ClearFlagForm':
+        case 'flagprofileform':
+        case 'clearflagform':
             include_once INSTALLDIR.'/plugins/UserFlag/' . strtolower($cls . '.php');
             return false;
-        case 'User_flag_profile':
-            include_once INSTALLDIR.'/plugins/UserFlag/'.$cls.'.php';
+        case 'user_flag_profile':
+            include_once INSTALLDIR.'/plugins/UserFlag/'.ucfirst(strtolower($cls)).'.php';
             return false;
         default:
             return true;
@@ -258,4 +258,39 @@ class UserFlagPlugin extends Plugin
         }
         return true;
     }
+
+    /**
+     * Ensure that flag entries for a profile are deleted
+     * along with the profile when deleting users.
+     * This prevents breakage of the admin profile flag UI.
+     *
+     * @param Profile $profile
+     * @param array &$related list of related tables; entries
+     *              with matching profile_id will be deleted.
+     *
+     * @return boolean hook result
+     */
+
+    function onProfileDeleteRelated($profile, &$related)
+    {
+        $related[] = 'user_flag_profile';
+        return true;
+    }
+
+    /**
+     * Ensure that flag entries created by a user are deleted
+     * when that user gets deleted.
+     *
+     * @param User $user
+     * @param array &$related list of related tables; entries
+     *              with matching user_id will be deleted.
+     *
+     * @return boolean hook result
+     */
+
+    function onUserDeleteRelated($user, &$related)
+    {
+        $related[] = 'user_flag_profile';
+        return true;
+    }
 }
index 658259452436aae780d56956ffe9841c7bf79391..bc4251cf7f11010d62128c4d196e0cd9602c86c7 100644 (file)
@@ -89,6 +89,17 @@ class User_flag_profile extends Memcached_DataObject
         return array('profile_id' => 'N', 'user_id' => 'N');
     }
 
+    /**
+     * return key definitions for DB_DataObject
+     *
+     * @return array key definitions
+     */
+
+    function keyTypes()
+    {
+        return $this->keys();
+    }
+
     /**
      * Get a single object with multiple keys
      *
@@ -97,7 +108,7 @@ class User_flag_profile extends Memcached_DataObject
      * @return User_flag_profile found object or null
      */
 
-    function &pkeyGet($kv)
+    function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('User_flag_profile', $kv);
     }
index 334fc13ba1f03cce143c113376af9f2d0a482ba9..c6c976b8f46849cd79150d1c8d19295857475aa0 100644 (file)
@@ -31,8 +31,6 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-define('WIKIHASHTAGSPLUGIN_VERSION', '0.1');
-
 /**
  * Plugin to use WikiHashtags
  *
@@ -47,6 +45,8 @@ define('WIKIHASHTAGSPLUGIN_VERSION', '0.1');
 
 class WikiHashtagsPlugin extends Plugin
 {
+    const VERSION = '0.1';
+
     function __construct($code=null)
     {
         parent::__construct();
@@ -99,4 +99,15 @@ class WikiHashtagsPlugin extends Plugin
 
         return true;
     }
+
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'WikiHashtags',
+                            'version' => self::VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:WikiHashtags',
+                            'rawdescription' =>
+                            _m('Gets hashtag descriptions from <a href="http://hashtags.wikia.com/">WikiHashtags</a>.'));
+        return true;
+    }
 }
diff --git a/plugins/XCachePlugin.php b/plugins/XCachePlugin.php
new file mode 100644 (file)
index 0000000..03cb0c0
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for XCache variable cache
+ *
+ * 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  Cache
+ * @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')) {
+    // This check helps protect against security problems;
+    // your code file can't be executed directly from the web.
+    exit(1);
+}
+
+/**
+ * A plugin to use XCache's variable cache for the cache interface
+ *
+ * New plugin interface lets us use alternative cache systems
+ * for caching. This one uses XCache's variable cache.
+ *
+ * @category  Cache
+ * @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/
+ */
+
+class XCachePlugin extends Plugin
+{
+    /**
+     * Get a value associated with a key
+     *
+     * The value should have been set previously.
+     *
+     * @param string &$key   in; Lookup key
+     * @param mixed  &$value out; value associated with key
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheGet(&$key, &$value)
+    {
+        if (!xcache_isset($key)) {
+            $value = false;
+        } else {
+            $value = xcache_get($key);
+            $value = unserialize($value);
+        }
+        Event::handle('EndCacheGet', array($key, &$value));
+        return false;
+    }
+
+    /**
+     * Associate a value with a key
+     *
+     * @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 &$expiry  in; Expiry (passed through to Memcache)
+     * @param boolean &$success out; Whether the set was successful
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+    {
+        $success = xcache_set($key, serialize($value));
+
+        Event::handle('EndCacheSet', array($key, $value, $flag,
+                                           $expiry));
+        return false;
+    }
+
+    /**
+     * Delete a value associated with a key
+     *
+     * @param string  &$key     in; Key to lookup
+     * @param boolean &$success out; whether it worked
+     *
+     * @return boolean hook success
+     */
+
+    function onStartCacheDelete(&$key, &$success)
+    {
+        $success = xcache_unset($key);
+        Event::handle('EndCacheDelete', array($key));
+        return false;
+    }
+}
+
index 329caf472407a4764d5b017a2dfedc5f9cba0cb3..8b62a3a96783d7a7442326f33007d4f859e8d4f3 100755 (executable)
@@ -128,6 +128,8 @@ function console_help()
 if (CONSOLE_INTERACTIVE) {
     print "StatusNet interactive PHP console... type ctrl+D or enter 'exit' to exit.\n";
     $prompt = common_config('site', 'name') . '> ';
+} else {
+    $prompt = '';
 }
 while (!feof(STDIN)) {
     $line = read_input_line($prompt);
index 1266a9700b674ca58f76551b5417eee55cac5667..882d744564dbb4c4398cf9741fe7d6eafc90d739 100644 (file)
@@ -41,9 +41,12 @@ require_once INSTALLDIR.'/scripts/commandline.inc';
 function newUser($i)
 {
     global $userprefix;
-    User::register(array('nickname' => sprintf('%s%d', $userprefix, $i),
-                         'password' => sprintf('password%d', $i),
-                         'fullname' => sprintf('Test User %d', $i)));
+    $user = User::register(array('nickname' => sprintf('%s%d', $userprefix, $i),
+                                 'password' => sprintf('password%d', $i),
+                                 'fullname' => sprintf('Test User %d', $i)));
+    if (!empty($user)) {
+        $user->free();
+    }
 }
 
 function newNotice($i, $tagmax)
@@ -73,6 +76,9 @@ function newNotice($i, $tagmax)
     }
 
     $notice = Notice::saveNew($user->id, $content, 'system');
+
+    $user->free();
+    $notice->free();
 }
 
 function newSub($i)
@@ -106,6 +112,9 @@ function newSub($i)
     }
 
     subs_subscribe_to($from, $to);
+
+    $from->free();
+    $to->free();
 }
 
 function main($usercount, $noticeavg, $subsavg, $tagmax)
index b4e4d9f08df7d5a1610a772eeffb3d9f31c62993..3b1ef96a1e898617e86d56870f5c328106239bcc 100755 (executable)
@@ -27,266 +27,9 @@ as STDIN.
 END_OF_HELP;
 
 require_once INSTALLDIR.'/scripts/commandline.inc';
-
-require_once(INSTALLDIR . '/lib/mail.php');
-require_once(INSTALLDIR . '/lib/mediafile.php');
-require_once('Mail/mimeDecode.php');
-
-# FIXME: we use both Mail_mimeDecode and mailparse
-# Need to move everything to mailparse
-
-class MailerDaemon
-{
-    function __construct()
-    {
-    }
-
-    function handle_message($fname='php://stdin')
-    {
-        list($from, $to, $msg, $attachments) = $this->parse_message($fname);
-        if (!$from || !$to || !$msg) {
-            $this->error(null, _('Could not parse message.'));
-        }
-        common_log(LOG_INFO, "Mail from $from to $to with ".count($attachments) .' attachment(s): ' .substr($msg, 0, 20));
-        $user = $this->user_from($from);
-        if (!$user) {
-            $this->error($from, _('Not a registered user.'));
-            return false;
-        }
-        if (!$this->user_match_to($user, $to)) {
-            $this->error($from, _('Sorry, that is not your incoming email address.'));
-            return false;
-        }
-        if (!$user->emailpost) {
-            $this->error($from, _('Sorry, no incoming email allowed.'));
-            return false;
-        }
-        $response = $this->handle_command($user, $from, $msg);
-        if ($response) {
-            return true;
-        }
-        $msg = $this->cleanup_msg($msg);
-        $msg = common_shorten_links($msg);
-        if (Notice::contentTooLong($msg)) {
-            $this->error($from, sprintf(_('That\'s too long. '.
-                                          'Max notice size is %d chars.'),
-                                        Notice::maxContent()));
-        }
-
-        $mediafiles = array();
-
-        foreach($attachments as $attachment){
-
-            $mf = null;
-
-            try {
-                $mf = MediaFile::fromFileHandle($attachment, $user);
-            } catch(ClientException $ce) {
-                $this->error($from, $ce->getMessage());
-            }
-
-            $msg .= ' ' . $mf->shortUrl();
-
-            array_push($mediafiles, $mf);
-            fclose($attachment);
-        }
-
-        $err = $this->add_notice($user, $msg, $mediafiles);
-
-        if (is_string($err)) {
-            $this->error($from, $err);
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    function error($from, $msg)
-    {
-        file_put_contents("php://stderr", $msg . "\n");
-        exit(1);
-    }
-
-    function user_from($from_hdr)
-    {
-        $froms = mailparse_rfc822_parse_addresses($from_hdr);
-        if (!$froms) {
-            return null;
-        }
-        $from = $froms[0];
-        $addr = common_canonical_email($from['address']);
-        $user = User::staticGet('email', $addr);
-        if (!$user) {
-            $user = User::staticGet('smsemail', $addr);
-        }
-        return $user;
-    }
-
-    function user_match_to($user, $to_hdr)
-    {
-        $incoming = $user->incomingemail;
-        $tos = mailparse_rfc822_parse_addresses($to_hdr);
-        foreach ($tos as $to) {
-            if (strcasecmp($incoming, $to['address']) == 0) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    function handle_command($user, $from, $msg)
-    {
-        $inter = new CommandInterpreter();
-        $cmd = $inter->handle_command($user, $msg);
-        if ($cmd) {
-            $cmd->execute(new MailChannel($from));
-            return true;
-        }
-        return false;
-    }
-
-    function respond($from, $to, $response)
-    {
-
-        $headers['From'] = $to;
-        $headers['To'] = $from;
-        $headers['Subject'] = "Command complete";
-
-        return mail_send(array($from), $headers, $response);
-    }
-
-    function log($level, $msg)
-    {
-        common_log($level, 'MailDaemon: '.$msg);
-    }
-
-    function add_notice($user, $msg, $mediafiles)
-    {
-        try {
-            $notice = Notice::saveNew($user->id, $msg, 'mail');
-        } catch (Exception $e) {
-            $this->log(LOG_ERR, $e->getMessage());
-            return $e->getMessage();
-        }
-        foreach($mediafiles as $mf){
-            $mf->attachToNotice($notice);
-        }
-        common_broadcast_notice($notice);
-        $this->log(LOG_INFO,
-                   'Added notice ' . $notice->id . ' from user ' . $user->nickname);
-        return true;
-    }
-
-    function parse_message($fname)
-    {
-        $contents = file_get_contents($fname);
-        $parsed = Mail_mimeDecode::decode(array('input' => $contents,
-                                                'include_bodies' => true,
-                                                'decode_headers' => true,
-                                                'decode_bodies' => true));
-        if (!$parsed) {
-            return null;
-        }
-
-        $from = $parsed->headers['from'];
-
-        $to = $parsed->headers['to'];
-
-        $type = $parsed->ctype_primary . '/' . $parsed->ctype_secondary;
-
-        $attachments = array();
-
-        $this->extract_part($parsed,$msg,$attachments);
-
-        return array($from, $to, $msg, $attachments);
-    }
-
-    function extract_part($parsed,&$msg,&$attachments){
-        if ($parsed->ctype_primary == 'multipart') {
-            if($parsed->ctype_secondary == 'alternative'){
-                $altmsg = $this->extract_msg_from_multipart_alternative_part($parsed);
-                if(!empty($altmsg)) $msg = $altmsg;
-            }else{
-                foreach($parsed->parts as $part){
-                    $this->extract_part($part,$msg,$attachments);
-                }
-            }
-        } else if ($parsed->ctype_primary == 'text'
-            && $parsed->ctype_secondary=='plain') {
-            $msg = $parsed->body;
-            if(strtolower($parsed->ctype_parameters['charset']) != "utf-8"){
-                $msg = utf8_encode($msg);
-            }
-        }else if(!empty($parsed->body)){
-            if(common_config('attachments', 'uploads')){
-                //only save attachments if uploads are enabled
-                $attachment = tmpfile();
-                fwrite($attachment, $parsed->body);
-                $attachments[] = $attachment;
-            }
-        }
-    }
-
-    function extract_msg_from_multipart_alternative_part($parsed){
-        foreach ($parsed->parts as $part) {
-            $this->extract_part($part,$msg,$attachments);
-        }
-        //we don't want any attachments that are a result of this parsing
-        return $msg;
-    }
-
-    function unsupported_type($type)
-    {
-        $this->error(null, "Unsupported message type: " . $type);
-    }
-
-    function cleanup_msg($msg)
-    {
-        $lines = explode("\n", $msg);
-
-        $output = '';
-
-        foreach ($lines as $line) {
-            // skip quotes
-            if (preg_match('/^\s*>.*$/', $line)) {
-                continue;
-            }
-            // skip start of quote
-            if (preg_match('/^\s*On.*wrote:\s*$/', $line)) {
-                continue;
-            }
-            // probably interesting to someone, not us
-            if (preg_match('/^\s*Sent via/', $line)) {
-                continue;
-            }
-            if (preg_match('/^\s*Sent from my/', $line)) {
-                continue;
-            }
-
-            // skip everything after a sig
-            if (preg_match('/^\s*--+\s*$/', $line) ||
-                preg_match('/^\s*__+\s*$/', $line))
-            {
-                break;
-            }
-            // skip everything after Outlook quote
-            if (preg_match('/^\s*-+\s*Original Message\s*-+\s*$/', $line)) {
-                break;
-            }
-            // skip everything after weird forward
-            if (preg_match('/^\s*Begin\s+forward/', $line)) {
-                break;
-            }
-
-            $output .= ' ' . $line;
-        }
-
-        preg_replace('/\s+/', ' ', $output);
-        return trim($output);
-    }
-}
+require_once INSTALLDIR.'/lib/mailhandler.php';
 
 if (common_config('emailpost', 'enabled')) {
-    $md = new MailerDaemon();
-    $md->handle_message('php://stdin');
+    $mh = new MailHandler();
+    $mh->handle_message(file_get_contents('php://stdin'));
 }
index 90e7331ca476c0736169e03f161e1e58f5ae6c5e..c790f1f349715f04c77c958887490ab239418951 100755 (executable)
@@ -25,7 +25,7 @@ DIR=`php $SDIR/getpiddir.php`
 
 for f in jabberhandler ombhandler publichandler smshandler pinghandler \
         xmppconfirmhandler xmppdaemon twitterhandler facebookhandler \
-        twitterstatusfetcher synctwitterfriends pluginhandler; do
+        twitterstatusfetcher synctwitterfriends pluginhandler rsscloudhandler; do
 
        FILES="$DIR/$f.*.pid"
        for ff in "$FILES" ; do
diff --git a/scripts/updatelocation.php b/scripts/updatelocation.php
new file mode 100644 (file)
index 0000000..4110660
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a 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/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+
+$shortoptions = 'i:n:af';
+$longoptions = array('id=', 'nickname=', 'all', 'force');
+
+$helptext = <<<END_OF_UPDATELOCATION_HELP
+updatelocation.php [options]
+set the location for a profile
+
+  -i --id       ID of user to update
+  -n --nickname nickname of the user to update
+  -f --force    force update even if user already has a location
+  -a --all      update all
+
+END_OF_UPDATELOCATION_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+try {
+    $user = null;
+
+    if (have_option('i', 'id')) {
+        $id = get_option_value('i', 'id');
+        $user = User::staticGet('id', $id);
+        if (empty($user)) {
+            throw new Exception("Can't find user with id '$id'.");
+        }
+        updateLocation($user);
+    } else if (have_option('n', 'nickname')) {
+        $nickname = get_option_value('n', 'nickname');
+        $user = User::staticGet('nickname', $nickname);
+        if (empty($user)) {
+            throw new Exception("Can't find user with nickname '$nickname'");
+        }
+        updateLocation($user);
+    } else if (have_option('a', 'all')) {
+        $user = new User();
+        if ($user->find()) {
+            while ($user->fetch()) {
+                updateLocation($user);
+            }
+        }
+    } else {
+        show_help();
+        exit(1);
+    }
+} catch (Exception $e) {
+    print $e->getMessage()."\n";
+    exit(1);
+}
+
+function updateLocation($user)
+{
+    $profile = $user->getProfile();
+
+    if (empty($profile)) {
+        throw new Exception("User has no profile: " . $user->nickname);
+    }
+
+    if (empty($profile->location)) {
+        if (have_option('v', 'verbose')) {
+            print "No location string for '".$user->nickname."'\n";
+        }
+        return;
+    }
+
+    if (!empty($profile->location_id) && !have_option('f', 'force')) {
+        if (have_option('v', 'verbose')) {
+            print "Location ID already set for '".$user->nickname."'\n";
+        }
+        return;
+    }
+
+    $loc = Location::fromName($profile->location);
+
+    if (empty($loc)) {
+        if (have_option('v', 'verbose')) {
+            print "No structured location for string '".$profile->location."' for user '".$user->nickname."'\n";
+        }
+        return;
+    } else {
+        $orig = clone($profile);
+
+        $profile->lat         = $loc->lat;
+        $profile->lon         = $loc->lon;
+        $profile->location_id = $loc->location_id;
+        $profile->location_ns = $loc->location_ns;
+
+        $result = $profile->update($orig);
+
+        if (!$result) {
+            common_log_db_error($profile, 'UPDATE', __FILE__);
+        }
+
+        if (!have_option('q', 'quiet')) {
+            print "Location ID " . $profile->location_id . " set for user " . $user->nickname . "\n";
+        }
+    }
+
+    $profile->free();
+    unset($loc);
+    unset($profile);
+
+    return;
+}
index 29c7ee963f8a85577e982d7022ebbeb6d74968a3..cdacb9a62989493a579b7456561ae1a384304c47 100644 (file)
@@ -554,20 +554,53 @@ width:81.5%;
 margin-bottom:0;
 line-height:1.618;
 }
-.form_notice #notice_data-attach_selected code {
+.form_notice #notice_data-attach_selected code,
+.form_notice #notice_data-geo_name {
 float:left;
-width:90%;
+width:80%;
 display:block;
-font-size:1.1em;
-line-height:1.8;
 overflow:auto;
+margin-right:2.5%;
+}
+.form_notice #notice_data-attach_selected code {
+font-size:1.1em;
 }
-.form_notice #notice_data-attach_selected button {
+.form_notice #notice_data-attach_selected button.close,
+.form_notice #notice_data-geo_selected button.close {
 float:right;
 font-size:0.8em;
 }
 
-button.close {
+.form_notice #notice_data-geo_selected button.minimize {
+float:left;
+}
+
+.form_notice #notice_data-geo_wrap label {
+position:absolute;
+top:25px;
+right:4px;
+left:auto;
+cursor:pointer;
+width:16px;
+height:16px;
+display:block;
+}
+.form_notice #notice_data-geo_wrap input {
+display:none;
+}
+.form_notice #notice_data-geo_wrap label {
+font-weight:normal;
+font-size:1em;
+margin-bottom:0;
+text-indent:-9999px;
+}
+.form_notice #notice_data-geo_name {
+display:block;
+padding-left:21px;
+}
+
+button.close,
+button.minimize {
 width:16px;
 height:16px;
 text-indent:-9999px;
@@ -1295,11 +1328,9 @@ padding-right:30px;
 .hentry .entry-content p {
 margin-bottom:18px;
 }
-.system_notice ul,
-.instructions ul,
-.hentry entry-content ol,
+.hentry .entry-content ol,
 .hentry .entry-content ul {
-list-style-position:inside;
+margin-left:1.795%;
 }
 .hentry .entry-content li {
 margin-bottom:18px;
@@ -1308,6 +1339,31 @@ margin-bottom:18px;
 margin-left:18px;
 }
 
+#content #plugin_authors {
+min-width:122px;
+}
+#content thead th {
+text-align:left;
+}
+#content tbody th {
+vertical-align:top;
+text-align:left;
+font-weight:normal;
+padding-top:11px;
+padding-right:18px;
+}
+#content tbody tr {
+border-top-width:1px;
+border-top-style:dotted;
+}
+#content td {
+padding:11px 18px 11px 0;
+vertical-align:top;
+}
+#content td:last-child {
+padding-right:0;
+}
+
 /* TOP_POSTERS */
 .section tbody td {
 padding-right:18px;
@@ -1444,6 +1500,7 @@ margin-left:0;
 width:auto;
 }
 
+.system_notice ul,
 .instructions ul {
 list-style-position:inside;
 }
diff --git a/theme/base/images/icons/icon_geo.png b/theme/base/images/icons/icon_geo.png
new file mode 100644 (file)
index 0000000..8df2456
Binary files /dev/null and b/theme/base/images/icons/icon_geo.png differ
index 417327881cca88cf17a416642ea8ad15d0589a0e..06202a047b40daed0f0ceec269d9025232de4dc6 100644 (file)
Binary files a/theme/base/images/icons/icons-01.gif and b/theme/base/images/icons/icons-01.gif differ
index 3fe05eb3dd6520c4b6b1a489fc65a9d272644bc0..726062e473f17b2b5c06c2803835800b3c4f0518 100644 (file)
@@ -228,9 +228,21 @@ 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:100%;
+height:10.5em;
 position:relative;
 float:left;
 padding-top:18px;
@@ -446,120 +458,156 @@ border-right:0;
 border-top:0;
 }
 
-#form_notice {
-width:505px;
+.form_notice {
+width:515px;
 line-height:1;
 position:absolute;
 top:200px;
 left:20px;
 z-index:9;
 }
-#form_notice fieldset {
+.form_notice fieldset {
 border:0;
-padding:0 0 50px 0;
+padding:0;
+position:relative;
 }
-#form_notice legend {
+.form_notice legend {
 display:none;
 }
-#form_notice textarea {
+.form_notice textarea {
 float:left;
-width:505px;
-height:45px;
+border-radius:7px;
+-moz-border-radius:7px;
+-webkit-border-radius:7px;
+width:80.789%;
+height:67px;
 line-height:1.5;
-padding:5px;
-border-width:1px;
+padding:7px 7px 16px 7px;
+position:relative;
+z-index:2;
 }
-#form_notice label {
+.form_notice label {
 display:block;
 float:left;
 font-size:1.3em;
 margin-bottom:7px;
 }
-#form_notice #notice_submit label {
-display:none;
-}
-#form_notice label[for=notice_data-attach],
-#form_notice #notice_data-attach {
+.form_notice label[for=notice_data-attach],
+.form_notice #notice_data-attach {
 position:absolute;
-top:87px;
+top:25px;
+right:10.5%;
 cursor:pointer;
 }
-#form_notice label[for=notice_data-attach] {
+.form_notice label[for=notice_data-attach] {
 text-indent:-9999px;
-left:82%;
 width:16px;
 height:16px;
 }
-#form_notice #notice_data-attach {
-left:40%;
+.form_notice #notice_data-attach {
 padding:0;
 height:16px;
 }
-
-#form_notice .form_note {
+.form_notice .form_note {
 position:absolute;
-top:-10px;
-right:-10px;
+bottom:2px;
+right:21.715%;
 z-index:9;
-font-family:Georgia, serif;
-font-size:1.7em;
 }
-#form_notice .form_note dt {
+.form_notice .form_note dt {
 font-weight:bold;
 display:none;
 }
-#notice_text-count {
+.form_notice #notice_text-count {
 font-weight:bold;
 line-height:1.15;
 padding:1px 2px;
 }
-
-#form_notice #notice_action-submit {
+.form_notice #notice_action-submit {
 width:14%;
-height:35px;
-padding-top:0;
-padding-bottom:0;
+height:47px;
+padding:0;
 position:absolute;
-bottom:10px;
-right:-10px;
+bottom:0;
+right:0;
 }
-#form_notice label[for=to] {
+.form_notice label[for=to] {
 margin-top:7px;
 }
-#form_notice select[id=to] {
+.form_notice select[id=to] {
 margin-bottom:7px;
 margin-left:18px;
 float:left;
+max-width:322px;
 }
-#form_notice .error,
-#form_notice .success {
+.form_notice .error,
+.form_notice .success {
 float:left;
 clear:both;
-width:83.5%;
+width:81.5%;
 margin-bottom:0;
 line-height:1.618;
-position:absolute;
-top:87px;
-left:0;
 }
-#form_notice #notice_data-attach_selected code {
+.form_notice #notice_data-attach_selected code,
+.form_notice #notice_data-geo_name {
 float:left;
-width:90%;
+width:80%;
 display:block;
-font-size:1.1em;
-line-height:1.8;
 overflow:auto;
+margin-right:2.5%;
+}
+.form_notice #notice_data-attach_selected code {
+font-size:1.1em;
 }
-#form_notice #notice_data-attach_selected button {
+.form_notice #notice_data-attach_selected button.close,
+.form_notice #notice_data-geo_selected button.close {
 float:right;
 font-size:0.8em;
 }
 
+.form_notice #notice_data-geo_selected button.minimize {
+float:left;
+}
+
+.form_notice #notice_data-geo_wrap label {
+position:absolute;
+top:25px;
+right:4px;
+left:auto;
+cursor:pointer;
+width:16px;
+height:16px;
+display:block;
+}
+.form_notice #notice_data-geo_wrap input {
+display:none;
+}
+.form_notice #notice_data-geo_wrap label {
+font-weight:normal;
+font-size:1em;
+margin-bottom:0;
+text-indent:-9999px;
+}
+.form_notice #notice_data-geo_name {
+display:block;
+padding-left:21px;
+}
+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 {
 position:relative;
-width:67.702%;
+width:68%;
 min-height:123px;
 float:left;
 margin-bottom:18px;
@@ -586,7 +634,8 @@ margin-bottom:18px;
 .entity_profile .entity_location,
 .entity_profile .entity_url,
 .entity_profile .entity_note,
-.entity_profile .entity_tags {
+.entity_profile .entity_tags,
+.entity_profile .entity_aliases {
 margin-left:113px;
 margin-bottom:4px;
 }
@@ -595,35 +644,44 @@ margin-bottom:4px;
 .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 {
+.entity_profile .fn,
+.entity_profile .nickname {
+font-size:1.1em;
+font-weight:bold;
+}
+.entity_profile .fn:before {
 content: "(";
 font-weight:normal;
 }
-.entity_profile .entity_fn dd:after {
+.entity_profile .fn:after {
 content: ")";
 font-weight:normal;
 }
-
-.entity_profile dt {
-display:none;
+.entity_profile .nickname:after,
+.entity_profile .nickname:before {
+content:"";
 }
+.entity_profile dt,
 .entity_profile h2 {
 display:none;
 }
+.entity_profile .role {
+margin-left:11px;
+font-style:italic;
+}
 /* entity_profile */
 
 
 /*entity_actions*/
 .entity_actions {
 float:right;
-margin-left:4.35%;
-max-width:25%;
+margin-left:2%;
+margin-bottom:18px;
+min-width:21%;
 }
 .entity_actions h2 {
 display:none;
@@ -632,7 +690,7 @@ display:none;
 list-style-type:none;
 }
 .entity_actions li {
-margin-bottom:4px;
+margin-bottom:7px;
 }
 .entity_actions li:first-child {
 border-top:0;
@@ -650,40 +708,95 @@ display:block;
 text-align:left;
 width:100%;
 }
-.entity_actions a,
-.entity_nudge p,
-.entity_remote_subscribe {
+.entity_actions a {
 text-decoration:none;
 font-weight:bold;
 display:block;
 }
+.entity_actions a,
+.entity_actions input {
+border-radius:4px;
+-moz-border-radius:4px;
+-webkit-border-radius:4px;
+}
 
-.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_actions a,
+.entity_actions input,
+.entity_actions p {
+border-width:2px;
+border-style:solid;
+padding-left:23px;
 }
 
-.entity_edit a,
-.entity_send-a-message a,
-.entity_nudge p {
-padding:4px 4px 4px 23px;
+.entity_actions a,
+.entity_actions p {
+padding:2px 4px 1px 26px;
 }
 
-.entity_remote_subscribe {
-padding:4px;
-border-width:2px;
+.entity_actions .accept {
+margin-bottom:18px;
+}
+
+.entity_send-a-message button {
+position:absolute;
+top:3px;
+right:3px;
+}
+
+.entity_send-a-message .form_notice {
+position:absolute;
+top:34px;
+right:-1px;
+padding:1.795%;
+width:92%;
+z-index:2;
+ border-radius:7px;
+-moz-border-radius:7px;
+-webkit-border-radius:7px;
+border-width:1px;
 border-style:solid;
+}
+.entity_send-a-message .form_notice legend {
+display:block;
+margin-bottom:11px;
+}
+
+.entity_send-a-message .form_notice label,
+.entity_send-a-message .form_notice select {
+display:none;
+}
+.entity_send-a-message .form_notice input.submit {
+text-align:center;
+}
+
+.entity_moderation {
+position:relative;
+}
+.entity_moderation p {
 border-radius:4px;
 -moz-border-radius:4px;
 -webkit-border-radius:4px;
+font-weight:bold;
+padding-bottom:2px;
+margin-bottom:7px;
 }
-.entity_actions .accept {
-margin-bottom:18px;
+.entity_moderation ul {
+display:none;
+}
+.entity_moderation:hover ul {
+display:block;
+min-width:21%;
+width:100%;
+padding:11px;
+position:absolute;
+top:-1px;
+right:-1px;
+z-index:1;
+border-width:1px;
+border-style:solid;
+border-radius:7px;
+-moz-border-radius:7px;
+-webkit-border-radius:7px;
 }
 
 .entity_tags ul {
@@ -742,7 +855,6 @@ margin-bottom:0;
 min-height:60px;
 }
 
-
 .profile .form_group_join legend,
 .profile .form_group_leave legend,
 .profile .form_user_subscribe legend,
@@ -753,18 +865,22 @@ display:none;
 .profiles {
 list-style-type:none;
 }
-.profile .entity_profile .entity_location {
+.profile .entity_profile .fn.nickname,
+.profile .entity_profile .url[rel~=contact] {
+margin-left:0;
+display:inline;
+}
+
+.profile .entity_profile .fn,
+.profile .entity_profile .location {
+margin-left:11px;
+margin-bottom:4px;
 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 .note,
+.profile .entity_profile .url,
 .profile .entity_profile .entity_tags,
 .profile .entity_profile .form_subscription_edit {
 margin-left:59px;
@@ -777,13 +893,11 @@ display:inline;
 margin-right:11px;
 }
 
-
 .profile .entity_profile .form_subscription_edit label {
 font-weight:normal;
 margin-right:11px;
 }
 
-
 /* NOTICE */
 .notice,
 .profile {
@@ -854,23 +968,26 @@ text-decoration:underline;
 }
 
 .notice .entry-title {
-float:none;
+float:left;
+width:100%;
 overflow:hidden;
-display:inline;
+}
+.notice .entry-title.ov {
+overflow:visible;
 }
 #shownotice .notice .entry-title {
 font-size:2.2em;
 }
-#conversation .notice .entry-title {
-display:block;
-width:90%;
-}
-
 
 .notice p.entry-content {
 display:inline;
 }
 
+#content .notice p.entry-content a:visited {
+border-radius:4px;
+-moz-border-radius:4px;
+-webkit-border-radius:4px;
+}
 .notice p.entry-content .vcard a {
 border-radius:4px;
 -moz-border-radius:4px;
@@ -878,23 +995,17 @@ border-radius:4px;
 }
 
 .notice div.entry-content {
+clear:left;
+float:left;
 font-size:0.95em;
 margin-left:59px;
-margin-top:3px;
-width:70%;
-font-family:Georgia, serif;
-font-style:italic;
-font-size:0.8em;
-display:block;
-}
-.notice div.entry-content a {
-text-decoration:none;
-}
-.notice div.entry-content a:hover {
-text-decoration:underline;
+min-width:60%;
+max-width:62%;
 }
-#showstream .notice div.entry-content {
+#showstream .notice div.entry-content,
+#shownotice .notice div.entry-content {
 margin-left:0;
+max-width:77%;
 }
 
 .notice .notice-options a,
@@ -903,83 +1014,84 @@ 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 {
+display:inline-block;
 }
 
-.notice div.entry-content .timestamp dt,
-.notice div.entry-content .response dt {
-display:none;
-}
-.notice div.entry-content .timestamp a {
-display:inline-block;
+.entry-content .repeat {
+display:block;
 }
-.notice div.entry-content .device dt {
-text-transform:lowercase;
+.entry-content .repeat .photo {
+float:none;
+margin-right:1px;
+position:relative;
+top:4px;
+left:0;
 }
 
+.dialogbox {
+position:absolute;
+top:-4px;
+right:29px;
+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;
+}
 
-.notice-data {
+.dialogbox button.close {
 position:absolute;
-top:18px;
-right:0;
-min-height:50px;
-margin-bottom:4px;
-}
-.notice .entry-content .notice-data dt {
-display:none;
+right:3px;
+top:3px;
 }
 
-.notice-data a {
-display:block;
-outline:none;
+.dialogbox .submit_dialogbox {
+text-indent:0;
+font-weight:bold;
 }
 
 .notice-options {
-padding-left:2%;
-float:left;
+position:relative;
 font-size:0.95em;
-width:16px;
+width:113px;
 float:right;
+margin-right:4px;
 }
-.notices li:hover div.notice-options {
-display:block;
-}
-
 
 .notice-options a {
 float:left;
 }
-.notice-options .notice_delete,
 .notice-options .notice_reply,
+.notice-options .form_repeat,
 .notice-options .form_favor,
-.notice-options .form_disfavor {
-position:absolute;
+.notice-options .form_disfavor,
+.notice-options .repeated {
+float:left;
+margin-left:14.2%;
 }
 .notice-options .form_favor,
 .notice-options .form_disfavor {
-top:7px;
-right:7px;
-}
-.notice-options .notice_reply {
-top:30px;
-right:7px;
-}
-.notice-options .notice_delete {
-top:47px;
-right:7px;
+margin-left:0;
 }
-
 .notice-options input,
-.notice-options a {
+.notice-options a,
+.notice-options .repeated {
 text-indent:-9999px;
 outline:none;
 }
-
-.notice-options .notice_reply,
 .notice-options input.submit {
 display:block;
 border:0;
@@ -987,29 +1099,34 @@ border:0;
 .notice-options .notice_reply,
 .notice-options .notice_delete {
 text-decoration:none;
-padding-left:16px;
 }
-
-.notice-options .notice_reply .notice_id {
-display:none;
+.notice .notice-options .notice_delete {
+float:right;
 }
-
 .notice-options form input.submit {
 width:16px;
-padding:2px 0;
+height:16px;
+padding:0;
+border-radius:0;
+-moz-border-radius:0;
+-webkit-border-radius:0;
 }
-
-.notice-options .notice_delete dt,
+.notice-options .form_repeat legend,
 .notice-options .form_favor legend,
 .notice-options .form_disfavor legend {
 display:none;
 }
-.notice-options .notice_delete fieldset,
+.notice-options .form_repeat fieldset,
 .notice-options .form_favor fieldset,
 .notice-options .form_disfavor fieldset {
 border:0;
 padding:0;
 }
+.notice-options a,
+.notice-options .repeated {
+width:16px;
+height:16px;
+}
 
 .notice .attachment {
 position:relative;
@@ -1335,6 +1452,33 @@ clear:both;
 margin-bottom:0;
 }
 
+#settings_design_background-image img {
+max-width:480px;
+max-height:480px;
+}
+
+#settings_design_color .form_data,
+#color-picker {
+float:left;
+}
+#settings_design_color .form_data {
+width:400px;
+margin-right:1%;
+}
+
+#settings_design_color .form_data li {
+width:33%;
+}
+#settings_design_color .form_data label {
+float:none;
+display:block;
+}
+#settings_design_color .form_data .swatch {
+padding:11px;
+margin-left:0;
+width:auto;
+}
+
 .instructions ul {
 list-style-position:inside;
 }
@@ -1348,6 +1492,15 @@ display:none;
 .guide {
 clear:both;
 }
+#bookmarklet address {
+display:none;
+}
+#bookmarklet .form_notice {
+width:auto;
+}
+#bookmarklet #wrap {
+min-width:0;
+}
 
 #public.user_in #content,
 #groups.user_in #content,
@@ -1363,8 +1516,9 @@ clear:both;
 #subscriptions.user_in #content,
 #subscribers.user_in #content,
 #showgroup.user_in #content,
-#conversation.user_in #content {
-padding-top:160px;
+#conversation.user_in #content,
+#attachment.user_in #content {
+padding-top:12.5em;
 }
 
 #profilesettings #form_notice,
@@ -1390,10 +1544,24 @@ padding-top:160px;
 #register #form_notice,
 #shownotice #form_notice,
 #confirmaddress #form_notice,
-#tag #form_notice {
+#tag #form_notice,
+#siteadminpanel #form_notice,
+#designadminpanel #form_notice,
+#useradminpanel #form_notice,
+#pathsadminpanel #form_notice,
+#adminprofileflag #form_notice {
 display:none;
 }
 
+#public #core,
+#showstream #core {
+margin-top:10em;
+}
+#public.user_in #core,
+#showstream.user_in #core {
+margin-top:0;
+}
+
 #jOverlayContent #core #content {
 padding-top:11px;
 }
@@ -1432,35 +1600,162 @@ border-color:#ddd;
 background:none;
 }
 
+
+.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,
+.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 {
+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 {
+background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
+cursor:wait;
+text-indent:-9999px;
+outline:none;
+}
+.processing {
+background-image:url(../../base/images/icons/icon_processing.gif);
+background-repeat:no-repeat;
+background-position:47% 47%;
+}
+
+button.close {
+background-position:0 -1120px;
+}
+button.minimize {
+background-position:0 -1912px;
+}
+
 input.submit,
-#form_notice.warning #notice_text-count,
-#nav_register a,
+.form_notice.warning #notice_text-count,
 .form_settings .form_note,
-.entity_remote_subscribe {
-background-color:#9BB43E;
+.entity_actions a,
+.entity_actions input,
+.entity_moderation p,
+button {
+box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+}
+.entity_actions a,
+.entity_actions input,
+.entity_actions p {
+border-color:transparent;
+background-color:transparent;
 }
-
 input:focus, textarea:focus, select:focus,
-#form_notice.warning #notice_data-text {
+.form_notice.warning #notice_data-text,
+.form_notice.warning #notice_text-count,
+.form_settings .form_note {
 border-color:#9BB43E;
 }
+input.submit {
+color:#FFFFFF;
+}
+.entity_actions a,
+.entity_actions input,
+.entity_actions p {
+border-color:transparent;
+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 {
+border-color:#9BB43E;
+}
+input.submit {
+color:#FFFFFF;
+}
+.entity_actions input.submit {
+border-color:transparent;
+text-shadow:none;
+}
+.dialogbox .submit_dialogbox,
 input.submit,
-#nav_register a,
-.entity_remote_subscribe {
-color:#fff;
+.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 span#notice_data-geo_name {
+background-position:0 47%;
+}
+.form_notice a#notice_data-geo_name {
+background-position:0 -1711px;
+}
+.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,
-.form_user_unblock input.submit,
-.entity_send-a-message a,
-.form_user_nudge input.submit,
-.entity_nudge p,
-.form_settings input.form_action-primary {
+.form_settings input.form_action-primary,
+.notice-options input,
+.entity_actions a,
+.entity_actions input,
+.entity_moderation p {
 color:#0084B4;
 }
 
+.notice,
+.profile {
+border-top-color:#CEE1E9;
+}
 .notice,
 .profile {
 border-top-color:#DDFFCC;
@@ -1468,7 +1763,9 @@ border-top-color:#DDFFCC;
 .section .profile {
 border-top-color:#87B4C8;
 }
-
+.mark-top {
+border-color:#AAAAAA;
+}
 
 #aside_primary {
 background-color:#DDFFCC;
@@ -1496,11 +1793,13 @@ text-indent:-9999px;
 #content,
 #site_nav_local_views a,
 #aside_primary {
-border-color:#fff;
+border-color:#FFFFFF;
 }
 #content,
-#site_nav_local_views .current a {
-background-color:#fff;
+#site_nav_local_views .current a,
+.entity_send-a-message .form_notice,
+.entity_moderation:hover ul {
+background-color:#FFFFFF;
 }
 
 #site_nav_local_views a {
@@ -1535,77 +1834,97 @@ 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,
-.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_group_leave input.submit,
 .form_user_subscribe input.submit,
+.form_user_unsubscribe input.submit,
+.entity_subscribe a {
+background-color:#AAAAAA;
+color:#FFFFFF;
+}
+.form_group_leave input.submit,
 .form_user_unsubscribe input.submit {
-background-color:#9BB43E;
-color:#fff;
+background-position:5px -1246px;
 }
-.form_user_unsubscribe input.submit,
-.form_group_leave input.submit {
-background-color:#87B4C8;
+.form_group_join input.submit,
+.form_user_subscribe input.submit,
+.entity_subscribe a {
+background-position:5px -1181px;
 }
 
 .entity_edit a {
-background-image:url(../images/icons/twotone/green/edit.gif);
+background-position: 5px -718px;
 }
 .entity_send-a-message a {
-background-image:url(../images/icons/twotone/green/quote.gif);
+background-position: 5px -852px;
 }
+.entity_send-a-message .form_notice,
+.entity_moderation:hover ul {
+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(../images/icons/twotone/green/mail.gif);
+background-position: 5px -785px;
 }
 .form_user_block input.submit,
-.form_user_unblock input.submit {
-background-image:url(../images/icons/twotone/green/shield.gif);
+.form_user_unblock input.submit,
+.form_group_block input.submit,
+.form_group_unblock input.submit {
+background-position: 5px -918px;
+}
+.form_make_admin input.submit {
+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;
 }
-
 
 
 /* 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,
-.notice-options form input.submit {
-background-color:transparent;
-}
 .notice-options .notice_reply {
-background:transparent url(../images/icons/icon_reply.gif) no-repeat 0 45%;
+background-position:0 -592px;
 }
 .notice-options form.form_favor input.submit {
-background:transparent url(../images/icons/icon_favourite.gif) no-repeat 0 45%;
+background-position:0 -460px;
 }
 .notice-options form.form_disfavor input.submit {
-background:transparent url(../images/icons/icon_disfavourite.gif) no-repeat 0 45%;
+background-position:0 -526px;
 }
 .notice-options .notice_delete {
-background:transparent url(../images/icons/icon_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,
@@ -1616,19 +1935,34 @@ opacity:0.4;
 .notices li:hover div.notice-options {
 opacity:1;
 }
+.opaque {
+opacity:1 !important;
+}
 .notices .notices {
-background-color:rgba(200, 200, 200, 0.01);
+background-color:rgba(200, 200, 200, 0.050);
 }
 .notices .notices .notices {
-background-color:rgba(200, 200, 200, 0.02);
+background-color:rgba(200, 200, 200, 0.100);
 }
 .notices .notices .notices .notices {
-background-color:rgba(200, 200, 200, 0.03);
+background-color:rgba(200, 200, 200, 0.150);
 }
 .notices .notices .notices .notices .notices {
-background-color:rgba(200, 200, 200, 0.04);
+background-color:rgba(200, 200, 200, 0.300);
+}
+.notice-options a,
+.notice-options input {
+font-family:sans-serif;
+box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+}
+#content .notices li:hover {
+background-color:rgba(240, 240, 240, 0.2);
+}
+#conversation .notices li:hover {
+background-color:transparent;
 }
-
 
 div.entry-content {
 color:#333;
@@ -1647,21 +1981,34 @@ background-color:transparent;
 
 
 #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:#DDFFCC;
+box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
+-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 }
 .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%;
 }
 
 
@@ -1685,15 +2032,6 @@ border-color:#FFFF00;
 #form_notice .form_note {
 color:#CCC;
 }
-input.submit {
-background-color:#eee;
-color:#666;
-}
-
-.notices li.hover {
-background-color:#F7F7F7;
-}
-
 
 .notice div.entry-content,
 .notice div.entry-content a {
@@ -1719,12 +2057,12 @@ border-color:transparent;
 color:#4C4C4C;
 }
 #site_nav_local_views .current {
-border-left-color:#fff;
+border-left-color:#FFFFFF;
 }
 
 #site_nav_local_views .current a,
 #site_nav_global_primary,
 #footer {
-background-color:#fff;
+background-color:#FFFFFF;
 }
 
index 50209bfd3f9740c0537d6ef120298ca0c4edd06e..2360976e57de0f3a22970ef0fb225f0c5df9f7d5 100644 (file)
@@ -111,6 +111,19 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
 text-shadow:none;
 }
 
+.form_notice span#notice_data-geo_name {
+background-position:0 47%;
+}
+.form_notice a#notice_data-geo_name {
+background-position:0 -1711px;
+}
+.form_notice label[for=notice_data-geo] {
+background-position:0 -1780px;
+}
+.form_notice label[for=notice_data-geo].checked {
+background-position:0 -1846px;
+}
+
 a,
 .form_settings input.form_action-primary,
 .notice-options input,
@@ -121,7 +134,8 @@ color:#002FA7;
 }
 
 .notice,
-.profile {
+.profile,
+#content tbody tr {
 border-top-color:#C8D1D5;
 }
 .mark-top {
@@ -177,7 +191,10 @@ button.close,
 .entity_sandbox input.submit,
 .entity_silence input.submit,
 .entity_delete input.submit,
-.notice-options .repeated {
+.notice-options .repeated,
+.form_notice a#notice_data-geo_name,
+.form_notice label[for=notice_data-geo],
+button.minimize {
 background-image:url(../../base/images/icons/icons-01.gif);
 background-repeat:no-repeat;
 background-color:transparent;
@@ -239,6 +256,9 @@ background-color:#EFF3DC;
 button.close {
 background-position:0 -1120px;
 }
+button.minimize {
+background-position:0 -1912px;
+}
 
 #anon_notice {
 background-color:#87B4C8;
@@ -364,7 +384,8 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 -moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 -webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 }
-#content .notices li:hover {
+#content .notices li:hover,
+#content tbody tr:hover {
 background-color:rgba(240, 240, 240, 0.2);
 }
 #conversation .notices li:hover {
index e86ee2437f08e137daff31349d050b7def853fe1..91af1d8ec8de6b89d19156ec45ec3aaed0801960 100644 (file)
@@ -111,6 +111,19 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1);
 text-shadow:none;
 }
 
+.form_notice span#notice_data-geo_name {
+background-position:0 47%;
+}
+.form_notice a#notice_data-geo_name {
+background-position:0 -1711px;
+}
+.form_notice label[for=notice_data-geo] {
+background-position:0 -1780px;
+}
+.form_notice label[for=notice_data-geo].checked {
+background-position:0 -1846px;
+}
+
 a,
 .form_settings input.form_action-primary,
 .notice-options input,
@@ -121,7 +134,8 @@ color:#002FA7;
 }
 
 .notice,
-.profile {
+.profile,
+#content tbody tr {
 border-top-color:#CEE1E9;
 }
 .mark-top {
@@ -177,7 +191,10 @@ button.close,
 .entity_sandbox input.submit,
 .entity_silence input.submit,
 .entity_delete input.submit,
-.notice-options .repeated {
+.notice-options .repeated,
+.form_notice a#notice_data-geo_name,
+.form_notice label[for=notice_data-geo],
+button.minimize {
 background-image:url(../../base/images/icons/icons-01.gif);
 background-repeat:no-repeat;
 background-color:transparent;
@@ -238,6 +255,9 @@ background-color:#EFF3DC;
 button.close {
 background-position:0 -1120px;
 }
+button.minimize {
+background-position:0 -1912px;
+}
 
 #anon_notice {
 background-color:#87B4C8;
@@ -363,7 +383,8 @@ box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 -moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 -webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
 }
-#content .notices li:hover {
+#content .notices li:hover,
+#content tbody tr:hover {
 background-color:rgba(240, 240, 240, 0.2);
 }
 #conversation .notices li:hover {